Build and tests
Requires Go 1.27.1 or newer. No CGO. Run the scripts from the repository root.
The scripts stamp BuildCommit and BuildDate:
-X github.com/mcp/filesystem-ultra/internal/mcpserver.BuildCommit=<hash>-X github.com/mcp/filesystem-ultra/internal/mcpserver.BuildDate=<date>A plain go build leaves commit dev and date unknown.
Windows
Section titled “Windows”build-windows.batWrites under bin\:
| Output | What |
|---|---|
filesystem-ultra-v4.exe | Server. |
filesystem-ultra.exe | Same server, .mcpb entry name. |
filesystem-ultra-v4-embed_rg.exe | Server with -tags embed_rg. |
mcp-proxy.exe | Stdio logging proxy (./cmd/proxy). |
filesystem-ultra-v4-dashboard.exe | Dashboard (./cmd/dashboard/). |
The script then runs scripts\pack-mcpb.ps1 and writes dist\filesystem-ultra-*-win32.mcpb. dist\ is not committed.
Linux and macOS
Section titled “Linux and macOS”./build-windows.sh # current platform./build-windows.sh windows # cross-compile Windows binaries./build-windows.sh all # native plus WindowsOne binary
Section titled “One binary”go build -ldflags="-s -w" -trimpath -o filesystem-ultra ./cmd/filesystem-ultraBuild ./cmd/filesystem-ultra, not the module root.
Dashboard alone:
go build -ldflags="-s -w" -trimpath -o dashboard.exe ./cmd/dashboard/The dashboard is a separate process. It does not inherit the server’s allowlist or file policy. Pass the same --file-security-config and --allowed-paths if you use a policy.
go test ./tests/... ./core/... ./internal/mcpserver/go test -race ./...go test -fuzz=Fuzz ./tests/securityA shorter check used in the README quick start:
go test ./core/ ./internal/mcpserver/ -count=1