Skip to content

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.

Terminal window
build-windows.bat

Writes under bin\:

OutputWhat
filesystem-ultra-v4.exeServer.
filesystem-ultra.exeSame server, .mcpb entry name.
filesystem-ultra-v4-embed_rg.exeServer with -tags embed_rg.
mcp-proxy.exeStdio logging proxy (./cmd/proxy).
filesystem-ultra-v4-dashboard.exeDashboard (./cmd/dashboard/).

The script then runs scripts\pack-mcpb.ps1 and writes dist\filesystem-ultra-*-win32.mcpb. dist\ is not committed.

Terminal window
./build-windows.sh # current platform
./build-windows.sh windows # cross-compile Windows binaries
./build-windows.sh all # native plus Windows
Terminal window
go build -ldflags="-s -w" -trimpath -o filesystem-ultra ./cmd/filesystem-ultra

Build ./cmd/filesystem-ultra, not the module root.

Dashboard alone:

Terminal window
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.

Terminal window
go test ./tests/... ./core/... ./internal/mcpserver/
go test -race ./...
go test -fuzz=Fuzz ./tests/security

A shorter check used in the README quick start:

Terminal window
go test ./core/ ./internal/mcpserver/ -count=1