← Back to directory
M

mcptoon

Community
Zero-dependency MCP client: tool discovery drops 71,929 tokens to 581 (−99.2%, measured)
GitHub source repository ↗
★ 201 Stars Category · Dev Tools Very popular
55FMRS · C

mcptoon is a clearly scoped control layer for MCP tools, addressing two real pains: tool schemas eating the context window, and every agent re-configuring the same tools. Its headline figures come from the project's own tiktoken cl100k_base benchmark (255 tools: 71,929 → 581 tokens, −99.2%), and the README cites external measurements from Anthropic, Firecrawl and Scalekit to back the general claim that loading full schemas is expensive. Strengths: zero dependencies, no daemon, no telemetry, bundles no servers, and it can be deleted without breaking your servers. Limits: it requires an agent that can run shell commands, ships no ready-made toolset, and asks users to install MCP servers themselves, taking on the corresponding supply-chain risk. It is not an Anthropic official project.

Reliability
8/20
Security and permissions
10/20
Maintenance
11/20
Documentation
13/20
Setup experience
13/20
Read the FMRS scoring method →

mcptoon is a 156KB CLI built entirely on the Python standard library with zero third-party dependencies. It keeps MCP tool schemas out of the agent's context window: by default it emits only a name index, and the project's own measurement puts 255 tools at 581 tokens instead of 71,929 (−99.2%), with a further ~34% saving on call results via --toon. It also acts as a shared configuration layer for multiple agents: configure servers once in ~/.mcptoon/config.json, and any agent that can run a shell command (Claude Code, Cursor, Codex, scripts, CI) can use the same servers and tools — new tools go live without restarting the agent and without hand-editing per-agent JSON. mcptoon bundles no MCP servers; it is a control layer, not a runtime. Servers are installed by the user (npm/pip/URL), start only when called, and keep running independently if mcptoon is deleted. It bridges MCP over stdio and can also run as an MCP server, and it ships three built-in guards: destructive-action blocking, prompt-injection scanning, and credential-leak detection.

Setup

1) Install: pip install mcptoon (pure stdlib, 156KB, zero dependencies). 2) Prove it: run mcptoon demo --quick — it boots the official everything reference server and prints the token math; no API key needed. 3) Add an MCP server: mcptoon add everything --stdio npx -y @modelcontextprotocol/server-everything, or mcptoon install brave-search --npm @modelcontextprotocol/server-brave-search. 4) See the tool index: mcptoon manifest (compact by default; 255 tools ≈ 581 tokens). 5) Call a tool: mcptoon call everything echo '{"message":"hi"}', add --toon to compress the result. 6) Share config across agents: mcptoon sync writes native JSON into each agent's own location, or run mcptoon quickstart to discover, configure and list in one command. 7) Claude Code users can install the plugin via /plugin marketplace add activeing123/mcptoon.

Fit and risk

Best for

  • Heavy MCP users with many configured servers and a tight context budget
  • Developers running several CLI/IDE agents who want a single shared tool configuration
  • Teams whose agents are allowed to execute shell commands (the precondition for using mcptoon)
  • Users who value supply-chain minimalism and prefer a zero-dependency, stdlib-only tool

Not for

  • Purely GUI agents that cannot run shell commands (they depend on mcptoon sync writing native configs)
  • Users expecting a ready-made tool set — mcptoon bundles no MCP servers and you install each one yourself
  • Scenarios needing a hosted service or cloud control plane
  • Anyone seeking official Anthropic support: mcptoon is an independent third-party MCP client, not affiliated with Anthropic

Required permissions

  • Read and write the user-level config file at ~/.mcptoon/config.json
  • Execute local shell commands to launch and call the MCP servers the user installs (e.g. npx- or pip-launched processes)
  • Write into each agent's own native config location when running mcptoon sync
  • Read and write files in the working directory (configs, logs, usage statistics)

Risks and side effects

  • mcptoon runs no daemon, but it launches the third-party MCP servers you add — those servers carry their own permissions and risks
  • On-demand server installation shifts supply-chain risk onto the npm/pip packages you choose
  • The built-in destructive-action block (--destructive), prompt-injection scan and credential-leak detection are guardrails, not guarantees, and do not replace human review
  • Agents that add and call tools autonomously (no human in the loop) gain convenience at the cost of a larger surface for misuse

Troubleshooting

  1. Start with mcptoon doctor to self-check Python, config and connectivity
  2. No tools showing up: confirm the server is configured with mcptoon list, check the index with mcptoon manifest, and fall back to --full / --json for the complete schema
  3. Call failures or odd output: drop --toon and compare against default JSON output; --toon decoding failures fall back to JSON automatically (--fallback-json)
  4. Agent guessing wrong arguments: use the documented loop — mcptoon inspect <server> <tool> first, then mcptoon call
  5. No Node on the machine: use mcptoon demo-server (11 standard-library tools, no download, no network)
  6. Agent still can't see the tools after adding: run mcptoon sync to write config into that agent's native location, and verify the agent can execute shell commands

Use cases

Attaching many MCP tools to an agent without flooding the context window with full schemas
Unifying one set of MCP servers across multiple AI agents on the same machine (Claude Code, Cursor, Codex, ...)
Letting an agent add and call new MCP tools mid-task with no JSON editing and no restart
Validating the MCP call flow without Node using the bundled 11 standard-library demo tools
Collapsing all configured servers behind a single MCP endpoint via mcptoon serve

Supported clients

Claude CodeFull support
CursorPartial support
CodexPartial support
ClinePartial support
WindsurfPartial support