Skip to content

Commit e38b96b

Browse files
authored
get fs time metadata correctly (#40)
1 parent 1777705 commit e38b96b

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

filesystemserver/handler.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ import (
99
"mime"
1010
"os"
1111
"path/filepath"
12+
"slices"
1213
"strings"
1314
"time"
1415

16+
"github.com/djherbis/times"
1517
"github.com/gabriel-vasile/mimetype"
1618
"github.com/gobwas/glob"
1719
"github.com/mark3labs/mcp-go/mcp"
18-
"slices"
1920
)
2021

2122
const (
@@ -238,11 +239,13 @@ func (fs *FilesystemHandler) getFileStats(path string) (FileInfo, error) {
238239
return FileInfo{}, err
239240
}
240241

242+
timespec := times.Get(info)
243+
241244
return FileInfo{
242245
Size: info.Size(),
243-
Created: info.ModTime(), // Note: ModTime used as birth time isn't always available
244-
Modified: info.ModTime(),
245-
Accessed: info.ModTime(), // Note: Access time isn't always available
246+
Created: timespec.BirthTime(),
247+
Modified: timespec.ModTime(),
248+
Accessed: timespec.AccessTime(),
246249
IsDirectory: info.IsDir(),
247250
IsFile: !info.IsDir(),
248251
Permissions: fmt.Sprintf("%o", info.Mode().Perm()),

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ module github.com/mark3labs/mcp-filesystem-server
33
go 1.23.2
44

55
require (
6+
github.com/djherbis/times v1.6.0
67
github.com/gabriel-vasile/mimetype v1.4.9
78
github.com/gobwas/glob v0.2.3
89
github.com/mark3labs/mcp-go v0.31.0
@@ -16,5 +17,6 @@ require (
1617
github.com/spf13/cast v1.7.1 // indirect
1718
github.com/yosida95/uritemplate/v3 v3.0.2 // indirect
1819
golang.org/x/net v0.39.0 // indirect
20+
golang.org/x/sys v0.32.0 // indirect
1921
gopkg.in/yaml.v3 v3.0.1 // indirect
2022
)

go.sum

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
22
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/djherbis/times v1.6.0 h1:w2ctJ92J8fBvWPxugmXIv7Nz7Q3iDMKNx9v5ocVH20c=
4+
github.com/djherbis/times v1.6.0/go.mod h1:gOHeRAz2h+VJNZ5Gmc/o7iD9k4wW7NMVqieYCY99oc0=
35
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
46
github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
57
github.com/gabriel-vasile/mimetype v1.4.9 h1:5k+WDwEsD9eTLL8Tz3L0VnmVh9QxGjRmjBvAG7U/oYY=
@@ -28,6 +30,9 @@ github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zI
2830
github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4=
2931
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
3032
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
33+
golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
34+
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
35+
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
3136
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
3237
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
3338
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

0 commit comments

Comments
 (0)