MCPMate

June 1, 2026 · View on GitHub

English | 中文

MCPMate dashboard

Your progressive MCP management partner.

License Platform Rust Node.js MCP Spec


Import MCP once. Start simple, then add profiles, per-client tools, and setup modes as your workflow grows.

MCPMate is a local-first assistant that grows with you—not just another config file editor.

MCPMate sits between your AI apps and MCP servers so you manage connections once and send the right tools to each app. It works with Claude Desktop, Cursor, Codex, Zed, VS Code, CLI tools, and other clients that follow the standard MCP config format.

Easy to begin, built to scale: one import with low friction; the same setup still fits as MCP spreads across more clients, servers, and scenarios—no product swap, no restart ritual.

StageWhat you get
StartImport servers, verify calls, and see health in one place
GrowScene profiles for coding, writing, or research; switch the full tool set in one click
TunePer-client trimming from one shared server library—less clutter, lower token use
Choose how to connectTransparent (native config output), Hosted (durable proxy control), or Unify (small tool surface, on-demand discovery)

Live site: mcp.umate.ai · Docs: mcp.umate.ai/docs

📑 Table of Contents

🤔 Why MCPMate?

Managing MCP across multiple AI tools (Claude Desktop, Cursor, Zed, Codex, and custom clients) gets messy fast:

·Pain Point·MCPMate approach
The same MCP setup is copied into every client by handConfigure once, use everywhere — servers, env vars, and connections live in one place
Switching between coding, writing, and research means re-wiring each appSwitch scenarios instantly — scene profiles swap the full tool set in one click
Every client sees every tool, wasting tokens and cluttering the UIEach client sees what it should — one library, different visibility per app
One integration style does not fit every clientHosted, Unify, or Transparent setup modes for the control level you need
Hard to tell whether services are ready or calls are succeedingSee it, verify it — inspector, structured logs, and dashboard in one local control plane
Many MCP processes compete for RAM and handlesA single proxy aggregates upstream servers with connection pooling

🔄 How It Works

flowchart LR
    subgraph mgmt ["🖥️ Management"]
        APP["Tauri Desktop"]
        DASH["Web Dashboard"]
    end

    subgraph proxy ["⚙️ MCPMate Proxy"]
        direction TB
        UP["Upstream Mgmt<br/><small>Connection Pool · OAuth 2.0 + PKCE</small>"]
        PROF["Profile Engine<br/><small>Scene · App · Dynamic</small>"]
        SEC["Event Logs &amp; Security<br/><small>Structured Logs · redb Cache</small>"]
        UP --> PROF --> SEC
    end

    subgraph cfg ["🔧 Client Config"]
        direction TB
        DET["Detection &amp; Adapter"]
        MODES["Modes<br/><small>Transparent · Hosted · Unify</small>"]
        DET --> MODES
    end

    subgraph clients ["📱 AI Clients"]
        C["Cursor · VS Code · Zed · ..."]
    end

    subgraph upstream ["☁️ Upstream MCP Servers"]
        S["uvx · bunx · npx<br/>SSE · Streamable HTTP"]
    end

    subgraph market ["🛒 MCP Marketplace"]
        M["Official Registry"]
    end

    APP -->|"API"| proxy
    DASH -->|"API"| proxy
    market -.->|"Install"| proxy
    upstream -->|"stdio / HTTP"| proxy
    proxy -->|"Bridge / HTTP"| cfg
    MODES --> clients

    classDef mgmt fill:#e3f2fd,stroke:#1565c0,color:#000
    classDef proxy fill:#fff3e0,stroke:#e65100,color:#000
    classDef cfg fill:#e8f5e9,stroke:#2e7d32,color:#000
    classDef clients fill:#fce4ec,stroke:#c62828,color:#000
    classDef upstream fill:#f3e5f5,stroke:#6a1b9a,color:#000
    classDef market fill:#fff9c4,stroke:#f9a825,color:#000

    class APP,DASH mgmt
    class UP,PROF,SEC proxy
    class DET,MODES cfg
    class C clients
    class S upstream
    class M market

MCPMate sits between your AI clients and MCP servers. To each app it looks like a normal MCP endpoint—no workflow disruption—while profiles, policy, and routing stay in the middle layer. The Bridge adapts stdio-only clients (such as Claude Desktop) to the HTTP proxy. The Profile Engine decides which tools each client sees—scene profiles for workflow context, app profiles for per-client tuning, and dynamic profiles that adjust at runtime. Transparent, Hosted, and Unify setup modes let you choose how much MCPMate sits in the path versus writing native client configs.

🚀 Key Features

FeatureDescription
Profile-Based TrimmingOrganize MCP servers into scene, app, and dynamic profiles. Switch instantly without restarting services.
Multi-Client SupportDetect, configure, and manage Claude Desktop, Cursor, Zed, Codex, and user-defined clients.
Dynamic Client GovernanceDatabase-first governance with Allow/Deny policies. No static template files. Verified config targets required for writes.
Market IntegrationBrowse and install from the official MCP registry without leaving the app. OAuth-capable servers supported with callback authorization.
Runtime ManagerInstalls and manages Node.js, uv (Python), and Bun runtimes used by local MCP servers.
OAuth 2.0 Upstream (PKCE)Supports upstream OAuth 2.0 flows with PKCE for Streamable HTTP MCP servers, including metadata discovery and callback handling.
Built-in redb CacheL2 embedded cache for capability snapshots and frequently accessed proxy state.
Structured LogsDedicated Logs page with cursor-based pagination, actor/target/action metadata, and REST API access.
Browser ExtensionChrome/Edge extension detects mcpServers snippets on web pages and imports them via mcpmate://import/server.
Tool InspectorRun quick tool calls against connected servers and inspect structured responses from the console.

🛠️ Core Components

Proxy

A high-performance MCP proxy server that connects to multiple MCP servers and aggregates their tools. Implements stdio and Streamable HTTP transport protocols aligned with the current MCP specification. Accepts legacy SSE-configured servers and automatically normalizes them to Streamable HTTP for backward compatibility.

Bridge

A lightweight bridging component that converts stdio protocol to HTTP transport without modifying the client. Automatically inherits all functions and tools from the HTTP service. Minimal configuration — only requires service address.

Runtime Manager

Installs and manages runtimes used by local MCP servers. Supports Node.js, uv (Python), and Bun with download progress tracking and automatic environment variable configuration.

runtime install node   # Install Node.js for JavaScript MCP servers
runtime install uv     # Install uv for Python MCP servers
runtime install bun    # Install Bun
runtime list           # List installed runtimes

Desktop App

Cross-platform desktop application built with Tauri 2. Complete graphical interface for managing MCP servers, profiles, and tools with real-time monitoring, intelligent client detection, and system tray integration. macOS, Windows, and Linux desktop builds are currently available as Beta releases.

Logs

Structured operational log for MCP proxy activity. Collects MCP operations and management-side changes into a structured timeline with cursor-based pagination, REST APIs, and a dedicated Logs page in the dashboard UI.

⚡ Quick Start

Download the latest release for your platform from GitHub Releases.

Note: macOS builds are signed and notarized to reduce system security prompts and improve package trust.

Option B: Build from Source

Prerequisites: Rust 1.75+, Node.js 18+ or Bun, SQLite 3

1. Clone & Build the Backend

git clone https://github.com/loocor/MCPMate.git
cd MCPMate/backend
cargo build --release

2. Start the Proxy

cargo run --release

The proxy starts with:

  • REST API on http://localhost:8080
  • MCP endpoint on http://localhost:8000

3. Launch the Dashboard

cd ../board
bun install
bun run dev

Dashboard available at http://localhost:5173.

Option C: Online Demo

Coming soon. An online environment will let you explore the dashboard, profiles, and client configuration without a local setup.

🧰 Tech Stack

LayerTechnology
Proxy / BackendRust, tokio, rmcp, SQLite (persistence), redb (L2 capability cache)
DashboardReact, Vite, Zustand, React Query, Radix UI
DesktopTauri 2, system tray, native notifications
BridgeRust binary, stdio-to-HTTP conversion
Runtime ManagerMulti-runtime (Node.js, uv, Bun)
ProtocolMCP 2025-11-25, stdio + Streamable HTTP

🚢 Deployment Modes

  • Integrated mode (desktop) — Tauri bundles backend + dashboard for local all-in-one operation
  • Separated mode (core server + UI) — Run backend independently and connect either the web dashboard or desktop shell to that core service
  • Client mode flexibility — Managed clients can continue using hosted/transparent workflows while the control plane runs remotely

🔧 Development

# Run all checks
./scripts/check

# Start backend + board together
./scripts/dev-all

See AGENTS.md for development guidelines, coding standards, and contribution workflow.

🗺️ Roadmap

  1. Account-based configuration backup & restore
  2. Skills-mode packaged profiles
  3. Downstream MCP client OAuth authorization management
  4. Cross-platform release readiness — desktop OS stability, container-based deployment, and Homebrew installation support

🤝 Contributing

Contributions are welcome! Please:

  1. Read AGENTS.md for development guidelines
  2. Open an issue to discuss significant changes
  3. Submit pull requests against the main branch

📄 License

GNU Affero General Public License v3.0 (AGPL-3.0)


Built with ❤️ by Loocor