New Elicitation & sampling relay

One MCP config.
Every agent.

Your MCP servers, shared across Claude Code, Codex, Cursor and beyond. Configure once. Load less context. Decide exactly what each agent can do.

Get mcpmu
brew install Bigsy/tap/mcpmu
  • Runs on your machine
  • Terminal + web UI
  • No account or subscription
  • MIT licensed

Plain MCP over stdio and Streamable HTTP. Works with

  • Claude Code
  • Codex
  • Cursor
  • Windsurf
  • Claude Desktop
  • VS Code
  • Zed
  • Gemini CLI
  • Cline
  • Goose
  • any MCP client
01 / SHAREStop maintaining the same setup everywhere.

Configure your servers.
Connect your agents.

Add a server to mcpmu once. Point each agent at the gateway and share the same server definitions, authentication and tool rules.

Keep work, personal and project tools in separate namespaces. Each agent gets the right view of the same configuration.

  • stdio or Streamable HTTP. Per-client shims, or one persistent endpoint with a URL per namespace.
  • Shared by default. One upstream serves every agent; stateful servers can get a private instance each.
  • Hot reload. Edit config while serving. Unaffected upstreams keep running.
Explore namespaces
# Add your servers once
mcpmu add context7 -- npx -y @upstash/context7-mcp
mcpmu add atlassian https://mcp.atlassian.com/mcp --scopes read,write

# Connect Claude Code to all of them
claude mcp add mcpmu -- mcpmu serve --stdio

# …or to just the work namespace
claude mcp add work -- mcpmu serve --stdio --namespace work
One config file for every agent · ~/.config/mcpmu/config.json
02 / COMPRESSMore room for the work that matters.

Your context is precious.
Spend it on the task.

A large tool catalog can fill your context with schemas before an agent starts working. mcpmu replaces that upfront payload with three wrapper tools and a compact catalog.

Your agent discovers what’s available, fetches full schemas when needed, and calls the underlying tools. You choose how much detail the catalog includes.

TOOL SCHEMAS IN CONTEXT
100 schemas loaded before the first prompt wrapper tools. Full schemas on demand.
list_toolsget_tool_schemainvoke_tool

Pick how much the catalog says.

The level shapes the compact listing embedded in invoke_tool. Full schemas stay one get_tool_schema call away.

invoke_tool · available tools— chars
<tool>filesystem.read_file(path, limit?): Read a file from disk.</tool>
<tool>github.create_issue(owner, repo, title, body?): Create an issue in a repository.</tool>
<tool>docs.search(query, limit?): Search library documentation for relevant sections.</tool>
<tool>jira.get_issue(key, fields?): Fetch a Jira issue by key.</tool>
<tool>slack.post_message(channel, text, thread_ts?): Post a message to a channel or thread.</tool>
mcpmu namespace set-compression work medium

Opt-in, per namespace or per serve process. Example counts are from a setup with 8 servers and 100 tools; actual savings depend on your catalog and level. How compression works ↗

03 / CONTROLA shared config doesn’t mean shared access.

The right tools.
For the right agent.

Give a research agent read access. Allow a development agent to make changes. Block a dangerous tool across every namespace.

mcpmu enforces permissions at the gateway, including calls through compression. Denied tools stay out of discovery and their calls are blocked before dispatch.

Understand tool permissions
EXAMPLE ACCESS POLICYENFORCED AT THE GATEWAY
Example permissions for research and development namespaces
Toolresearchdevelopment
filesystem.read_file✓ Allow✓ Allow
filesystem.write_file✕ Deny✓ Allow
filesystem.delete_fileGlobal deny · every namespace
RESOLUTION ORDER
  1. Global deny
  2. Tool rule
  3. Server default
  4. Namespace default
  5. Allow
mcpmu server deny-tool filesystem delete_file

With compression enabled, clients see wrapper tools. Set permissions for the underlying tools in mcpmu.

04 / OPERATEThe details that make a gateway trustworthy.

Everything else a gateway should do.
Without the ceremony.

Usage metrics

Per-tool call counts, error rates, latency and unused tools. Click an error count to inspect the failed response, filtered by namespace and time window. Stored locally; successful calls never record inputs or responses.

OAuth 2.1 & headers

PKCE, dynamic client registration, bearer tokens, or custom headers for things like Cloudflare Access. Secrets can come from env vars at request time.

Official MCP registry

Search the official registry from the terminal or browser and add a server with its install spec pre-filled.

Hot reload

Edit config while agents are connected. Permission and compression edits keep instances running; only affected servers restart.

Shared or private

Upstreams are shared across agents by default. Browsers, REPLs and other stateful servers can get a private instance per session.

Elicitation & sampling

Forward an upstream’s forms, sign-in links and sampling requests to the agent that caused them. Opt-in per server, and a tool’s timeout pauses while it waits on you.

Nothing lost in transit

Tool annotations, output schemas, icons and structured results survive the proxy hop. Cancellation and progress relay both ways.

status & doctor

Read-only diagnostics for config, executables, working directories, env vars and running instances. Env checks show names, never values.

05 / MANAGEBuilt for your workflow.

See what you’re sharing.

Manage servers, namespaces and permissions in your terminal or browser.

localhost:8080 — mcpmu web
mcpmu web interface showing configured servers and management controls
~ mcpmu
mcpmu terminal interface with the namespace tool permissions editor
mcpmu webBrowser UI

Servers, namespaces, the registry and metrics, with live logs over SSE.

mcpmuTerminal UI

Keyboard-driven. Test, edit and set permissions without leaving the terminal.

YOUR TOOLS. YOUR CONFIG. YOUR RULES.

One small gateway.
A better MCP setup.

Free and open source. No account or subscription required.

  1. 1Install
    brew tap Bigsy/tap
    brew install mcpmu
  2. 2Add a serveror run mcpmu skill install and let your agent import your config
    mcpmu add context7 -- npx -y @upstash/context7-mcp
  3. 3Connect your agent
    claude mcp add mcpmu -- mcpmu serve --stdio