Every AI client has its own MCP config file. Same servers, same credentials — duplicated everywhere.
Cursor → config.json → github, slack, db + API keys
Claude Desktop → config.json → github, slack, db + API keys (again)
VS Code → settings.json → github, slack, db + API keys (again)
Windsurf → config.json → github, slack, db + API keys (again)
Add a server? Update every client. Rotate an API key? Update every client. New project? Reconfigure everything.
And all those credentials? Sitting in plain-text JSON files on disk.
McpMux is a desktop app that runs a local gateway. Configure your servers once, point all clients to one URL.
Cursor ─┐
Claude Desktop ─┤──→ McpMux (localhost) ──→ all your MCP servers
VS Code ─┤ encrypted credentials
Windsurf ─┘ one config, one place
Add a server in McpMux and every client has it instantly. No files to edit.
1. Install servers from the built-in registry (or add manually)
2. Paste one config into your AI clients:
{
"mcpServers": {
"mcpmux": {
"url": "http://localhost:9315/mcp"
}
}
}3. Done. All tools from all servers are available in every client.
McpMux routes calls to the right server, refreshes OAuth tokens automatically, and keeps credentials encrypted in your OS keychain. You don't think about it.
Spaces — Isolated workspaces with their own servers and credentials. Switch between "Work" and "Personal" in one click.
Encrypted Credentials — Stored in your OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service) with AES-256-GCM encryption. Not in plain-text JSON files.
OAuth That Just Works — Handles the full OAuth 2.1 + PKCE flow for remote servers. Automatic token refresh. Authenticate once and forget about it.
Server Registry — Browse, search, and one-click install MCP servers. Cached for offline use.
Per-Client Permissions — Control which tools each AI client can access with Feature Sets.
System Tray — Runs in the background, starts with your OS. Always available.
Auto-Updates — Signed updates delivered automatically.
MCP defaults to plain-text config files with raw API keys. McpMux replaces that with:
- OS Keychain — secrets in platform-native secure storage, not on disk
- AES-256-GCM — field-level database encryption
- OAuth 2.1 + PKCE — standard auth with automatic token refresh
- Local-only gateway — binds to
127.0.0.1, nothing exposed to the network - Per-client access keys — granular permissions per AI client
- Sanitized logs — tokens never appear in log files
- Memory zeroization — secrets wiped from memory after use
All MCP traffic stays on your machine. Cloud sync (optional) only covers config metadata — never credentials or payloads.
1. Download McpMux — Windows (MSI), macOS (DMG), Linux (DEB/RPM/AppImage)
2. Add servers — Discover tab to browse the registry, or add manually
3. Paste config — Copy the snippet from the Dashboard into your AI clients
That's the last config file you'll need to touch.
pnpm setup # First-time: install dependencies
pnpm dev # Start development
pnpm build # Production build
pnpm test # Run all testsPrerequisites: Rust 1.75+, Node.js 18+, pnpm 9+. Linux also needs gnome-keyring libsecret-1-dev librsvg2-dev pkg-config.
Built with Tauri 2 (Rust + React 19), Axum for the gateway, ring for encryption, rmcp for MCP.
Project structure
mcp-mux/
├── apps/desktop/ # Tauri desktop app (React + Rust)
├── crates/
│ ├── mcpmux-core/ # Domain logic
│ ├── mcpmux-gateway/ # HTTP gateway, OAuth, routing
│ ├── mcpmux-storage/ # SQLite + encryption + OS keychain
│ └── mcpmux-mcp/ # MCP protocol
├── packages/ui/ # Shared UI components
└── tests/ # Unit, integration, E2E tests
See CONTRIBUTING.md for guidelines.


