MCP Client Setup
May 9, 2026 · View on GitHub
Claude Code
Registered automatically by ./build.sh via claude mcp add --scope user — idempotent, re-runnable. To re-register without rebuilding, run:
npm run register-mcp
This calls claude mcp add --scope user FileScopeMCP <node> <path-to-dist/mcp-server.js>. User scope means one registration covers every Claude Code session on the host. If the claude CLI is not installed, the script prints a hint and exits 0 — the build does not fail.
Contributor dogfood
Opening the FileScopeMCP repo itself in Claude Code auto-discovers the server via the committed .mcp.json at the repo root:
{
"mcpServers": {
"FileScopeMCP": {
"command": "node",
"args": ["dist/mcp-server.js"]
}
}
}
This only takes effect when Claude Code is open on this repo (its CWD is this repo root). End users do not need this file — npm run register-mcp covers them globally.
Selecting a different project
FileScopeMCP auto-initializes to the CWD Claude Code starts it in. To analyze a different directory at runtime:
set_base_directory(path: "/path/to/your/project")
Cursor AI
Cursor does not have a claude mcp add equivalent, so registration is manual. Copy the appropriate JSON block below into your project's .cursor/mcp.json.
Linux / macOS Native (default)
{
"mcpServers": {
"FileScopeMCP": {
"command": "node",
"args": ["/path/to/FileScopeMCP/dist/mcp-server.js", "--base-dir=${projectRoot}"],
"transport": "stdio"
}
}
}
Windows Native
{
"mcpServers": {
"FileScopeMCP": {
"command": "node",
"args": ["C:\\FileScopeMCP\\dist\\mcp-server.js", "--base-dir=${projectRoot}"],
"transport": "stdio",
"disabled": false,
"alwaysAllow": []
}
}
}
WSL (alternative — Cursor on Windows, FileScopeMCP in WSL)
Build inside WSL (./build.sh), then add to your project's .cursor/mcp.json:
{
"mcpServers": {
"FileScopeMCP": {
"command": "wsl",
"args": ["-d", "Ubuntu-24.04", "/home/yourname/FileScopeMCP/run.sh", "--base-dir=${projectRoot}"],
"transport": "stdio",
"disabled": false,
"alwaysAllow": []
}
}
}
Replace Ubuntu-24.04 with your WSL distro name (wsl -l -q to list) and /home/yourname/FileScopeMCP with the WSL path to this repo.
Cross-host alternative (WSL → Windows)
If FileScopeMCP runs in WSL and Claude Code runs on the Windows host, automatic registration via npm run register-mcp does not apply — the claude CLI on Windows cannot spawn a WSL process directly. Configure this manually by editing the Windows-side .claude.json (or using claude mcp add on Windows) with a wsl shim:
{
"mcpServers": {
"FileScopeMCP": {
"command": "wsl",
"args": ["-d", "Ubuntu-24.04", "/home/yourname/FileScopeMCP/run.sh", "--base-dir=${projectRoot}"],
"transport": "stdio",
"disabled": false,
"alwaysAllow": []
}
}
}
Replace Ubuntu-24.04 with your distro (wsl -l -q) and /home/yourname/FileScopeMCP with the WSL path. run.sh is generated by ./build.sh in WSL and simply forwards arguments to node dist/mcp-server.js.
Daemon Mode
Run FileScopeMCP as a standalone background process (no MCP client required):
node dist/mcp-server.js --daemon --base-dir=/path/to/project
Logs go to .filescope-daemon.log in the project root. A PID file at .filescope/instance.pid prevents concurrent daemons on the same project.
Multi-Repo Watchers (systemd, Linux only)
Run one MCP server per repo registered in ~/.filescope/nexus.json continuously, even when no MCP client is open. Backed by a systemctl --user unit and a small Node supervisor.
./scripts/nexus.sh install-watchers # writes the unit, enables it, starts it
systemctl --user status filescope-watchers.service
./scripts/nexus.sh uninstall-watchers # symmetric removal
What install-watchers does:
- Renders
scripts/filescope-watchers.service.tmplto~/.config/systemd/user/filescope-watchers.servicewith the absolute paths ofnodeandscripts/watchers.mjssubstituted in. - Runs
systemctl --user daemon-reload, then enables and starts the unit. - Idempotent — re-running picks up template/path changes and warns rather than restarts when already active (matches
setup-llm.sh --install-servicestyle).
What the supervisor does (scripts/watchers.mjs):
- Reads the repo list via
readRegistry()from~/.filescope/nexus.json. Falls back to a 2-level filesystem scan (discoverRepos()) if the registry is missing. - Spawns one
dist/mcp-server.js --base-dir=<repo>child per registered repo and drives an initialscan_allover the MCP stdio handshake. - Restarts crashed children after 10 s.
- On SIGTERM/SIGINT (including
systemctl stop), SIGTERMs every child, waits up to 8 s for graceful exit, then SIGKILLs stragglers and exits 0.
Logs:
~/.filescope/watchers.log— supervisor (start/stop, child PIDs, restart events)~/.filescope/watcher-logs/<repo-path-flattened>.log— per-child stderr
The unit declares Requires=filescope-broker.service, so install your broker user unit first. The repo does not currently ship a broker user-unit installer (intentional — out of scope).