Four Model Context Protocol (MCP) servers in a single Rust binary,
implementing the MCP 2026-07-28 specification
over stdio:
| Server | Identity | What it does |
|---|---|---|
filesystem |
mcp-filesystem |
Secure read/write access restricted to allowed directories |
fetch |
mcp-fetch |
Fetch URLs, convert HTML to markdown, robots.txt enforcement |
memory |
mcp-memory |
Persistent knowledge-graph memory (entities, relations, observations) as JSONL |
shell |
mcp-shell |
Execute local programs directly with a restricted working directory |
Built on the official Rust SDK (rmcp 3.1). The 2026-07-28 protocol is
stateless: server/discover without an initialize handshake, cache hints
on tools/list, and per-tool annotations.
Full documentation: https://maxylev.github.io/modelcontextprotocol/ (usage, CLI reference, protocol details, security model, tool reference for all 25 tools, coverage matrix, and CI/CD notes).
curl -fsSL https://github.com/maxylev/modelcontextprotocol/releases/latest/download/install.sh | bashThe script detects your OS and CPU, downloads the matching prebuilt binary
(MSRV build), verifies its SHA-256 checksum, and installs it to
~/.local/bin ($PREFIX/bin under Termux). Override the directory with
INSTALL_DIR:
curl -fsSL https://github.com/maxylev/modelcontextprotocol/releases/latest/download/install.sh | INSTALL_DIR=/usr/local/bin bashRequires curl, tar, and sha256sum (Linux/Android) or shasum (macOS).
The script itself is in the repository root (install.sh).
Every v* tag publishes prebuilt binaries to
GitHub Releases.
No Rust or Cargo needed: download your platform's archive below, extract it,
and put the modelcontextprotocol executable in your bin folder (or
anywhere on your PATH).
Direct links to the latest version of each package (replace
rust-msrv with rust-stable for the build made with the latest stable
Rust):
The -musl Linux builds are fully static and run on any distribution; the
Windows builds link the CRT statically (no VC++ runtime needed). Not sure
about your architecture? Run uname -m (macOS/Linux) or echo %PROCESSOR_ARCHITECTURE% (Windows). Every release ships a .sha256
checksum file named after the archive base — e.g.
modelcontextprotocol-aarch64-apple-darwin-rust-msrv.sha256 — covering the
archive and the install.sh script.
curl -L -O https://github.com/maxylev/modelcontextprotocol/releases/latest/download/modelcontextprotocol-aarch64-apple-darwin-rust-msrv.tar.gz
tar -xzf modelcontextprotocol-aarch64-apple-darwin-rust-msrv.tar.gz
sudo install -m 755 modelcontextprotocol /usr/local/bin/(On Intel Macs, use the x86_64-apple-darwin archive above.)
curl -L -O https://github.com/maxylev/modelcontextprotocol/releases/latest/download/modelcontextprotocol-x86_64-unknown-linux-musl-rust-msrv.tar.gz
tar -xzf modelcontextprotocol-x86_64-unknown-linux-musl-rust-msrv.tar.gz
sudo install -m 755 modelcontextprotocol /usr/local/bin/(The static musl build works on every x86_64 distribution. On aarch64
devices — Raspberry Pi 4/5, Apple Silicon VMs — use the
aarch64-unknown-linux-musl archive, or armv7-unknown-linux-musleabihf
on 32-bit ARM.)
Invoke-WebRequest -Uri "https://github.com/maxylev/modelcontextprotocol/releases/latest/download/modelcontextprotocol-x86_64-pc-windows-msvc-rust-msrv.zip" -OutFile modelcontextprotocol.zip
Expand-Archive modelcontextprotocol.zip -DestinationPath modelcontextprotocol
New-Item -ItemType Directory -Force -Path "$HOME\bin" | Out-Null
Move-Item modelcontextprotocol\modelcontextprotocol.exe "$HOME\bin\"Then add %USERPROFILE%\bin to your PATH (System Properties → Environment
Variables, or setx PATH "%PATH%;%USERPROFILE%\bin" and reopen the
terminal).
curl -L -O https://github.com/maxylev/modelcontextprotocol/releases/latest/download/modelcontextprotocol-aarch64-linux-android-rust-msrv.tar.gz
tar -xzf modelcontextprotocol-aarch64-linux-android-rust-msrv.tar.gz
mv modelcontextprotocol "$PREFIX/bin/"# macOS / Linux — download the archive, its checksum, and the installer,
# then verify all three against the release checksum file
curl -L -O https://github.com/maxylev/modelcontextprotocol/releases/latest/download/modelcontextprotocol-aarch64-apple-darwin-rust-msrv.tar.gz
curl -L -O https://github.com/maxylev/modelcontextprotocol/releases/latest/download/modelcontextprotocol-aarch64-apple-darwin-rust-msrv.sha256
curl -L -O https://github.com/maxylev/modelcontextprotocol/releases/latest/download/install.sh
shasum -a 256 -c modelcontextprotocol-aarch64-apple-darwin-rust-msrv.sha256
# Windows PowerShell
Get-FileHash modelcontextprotocol.zip -Algorithm SHA256iOS note: the iOS archive is an unsigned Mach-O binary. iOS has no user-installable
binfolder, so it cannot be run on a device as-is; it is provided for signing and embedding into an app.
cargo install modelcontextprotocolOr install directly from the repository:
cargo install --git https://github.com/maxylev/modelcontextprotocolThe release binary is about 5 MB. Building from source requires Rust 1.97+ (MSRV); the prebuilt binaries above run on Linux / macOS / Windows / Android.
Both a subcommand form and an equivalent flag form are supported so the binary fits any MCP client. Subcommand form (recommended):
{
"mcpServers": {
"filesystem": {
"command": "modelcontextprotocol",
"args": ["filesystem", "~/Developer/my-project"]
},
"shell": {
"command": "modelcontextprotocol",
"args": ["shell", "~/Developer/my-project"]
},
"fetch": {
"command": "modelcontextprotocol",
"args": ["fetch", "--ignore-robots-txt", "--user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"]
},
"memory": {
"command": "modelcontextprotocol",
"args": ["memory"]
}
}
}Flag form (--filesystem <DIR>, --fetch, --memory, --shell <DIR>)
is equivalent. See the CLI reference
for all options, conflict rules, and environment variables.
A tutorial with the exact config file, format, and commands for each client is in the docs: Adding the servers to your MCP client.
Covered clients:
| Client | How to configure |
|---|---|
| opencode v1/v2 | mcp key in opencode.json / opencode.jsonc, or opencode mcp add |
| Claude Desktop | mcpServers in claude_desktop_config.json |
| Claude Code | claude mcp add <name> -- modelcontextprotocol ..., or .mcp.json |
| Codex CLI | [mcp_servers.*] in ~/.codex/config.toml, or codex mcp add |
| Pi agent | pi install npm:pi-mcp-adapter, then mcpServers in .mcp.json / ~/.pi/agent/mcp.json |
| Gemini CLI | mcpServers in ~/.gemini/settings.json, or gemini mcp add |
| Cursor | mcpServers in .cursor/mcp.json / ~/.cursor/mcp.json |
| Windsurf, Zed, VS Code, Continue, Cline, Roo | see the tutorial table |
modelcontextprotocol --version # version
modelcontextprotocol # prints usage to stderr, exits 1Quick smoke test with a generic MCP client: start
modelcontextprotocol memory --memory-file /tmp/smoke.jsonl, list tools
(9 memory tools), call create_entities, call read_graph. More in the
verification guide.
- Shell server: executes arbitrary local programs with the OS permissions of the MCP server process. The working-directory restriction is not a sandbox, and there is no command filter. Only connect it to clients you trust.
- Fetch server: can reach local and internal network addresses (no SSRF protection); only enable it for trusted clients. Requests are bounded by a 30-second timeout and robots.txt policy.
- Filesystem access is restricted to configured directories with symlink protection — access control, not a sandbox.
- See the security model for details.
cargo fmt
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets --all-features --locked # offline, secret-free
cargo build --releaseA gated, real-network acceptance suite (tests/openrouter_e2e.rs, ignored
by default) drives every tool through real OpenRouter roundtrips; it
requires OPENROUTER_API_KEY and spends tokens. Run it with:
OPENROUTER_API_KEY=<key in the environment> \
env -u OPENROUTER_MODEL cargo test --test openrouter_e2e \
-- --ignored --nocapture --test-threads=1Docs site: cd docs && npm install, then npm run docs:dev (dev) or
npm run docs:build (build; output in docs/.vitepress/dist). Docs gates
are npm run format:check and npm run docs:build.
src/— the binary:cli.rs(CLI),fs/,fetch/,memory/,shell/(servers),support/(shared access control and helpers).tests/— integration suites per server plus the gated OpenRouter E2E harness (openrouter/).docs/— VitePress documentation site (deployed to GitHub Pages)..github/workflows/— CI (lint + test matrix), docs publishing, and crates.io publishing workflows.
MIT