MetaMCP
A proxy server that combines multiple MCP servers into a single endpoint, routing requests to the appropriate underlying server.
MetaMCP MCP Server
🚨 DEPRECATED PACKAGE WARNING 🚨
This local proxy package is deprecated in MetaMCP's 2.0 all-in-one architecture.
Please checkout https://github.com/metatool-ai/metamcp for more details.
MetaMCP MCP Server is a proxy server that joins multiple MCP servers into one. It fetches tool/prompt/resource configurations from MetaMCP App and routes tool/prompt/resource requests to the correct underlying server.
MetaMCP App repo: https://github.com/metatool-ai/metatool-app
Installation
Installing via Smithery
Sometimes Smithery works (confirmed in Windsurf locally) but sometimes it is unstable because MetaMCP is special that it runs other MCPs on top of it. Please consider using manual installation if it doesn't work instead.
To install MetaMCP MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @metatool-ai/mcp-server-metamcp --client claude
Manual Installation
export METAMCP_API_KEY=<env>
npx -y @metamcp/mcp-server-metamcp@latest
{
"mcpServers": {
"MetaMCP": {
"command": "npx",
"args": ["-y", "@metamcp/mcp-server-metamcp@latest"],
"env": {
"METAMCP_API_KEY": "<your api key>"
}
}
}
}
Usage
Using as a stdio server (default)
mcp-server-metamcp --metamcp-api-key <your-api-key>
Using as an SSE server
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006
With the SSE transport option, the server will start an Express.js web server that listens for SSE connections on the /sse endpoint and accepts messages on the /messages endpoint.
Using as a Streamable HTTP server
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport streamable-http --port 12006
With the Streamable HTTP transport option, the server will start an Express.js web server that handles HTTP requests. You can optionally use --stateless mode for stateless operation.
Using with Docker
When running the server inside a Docker container and connecting to services on the host machine, use the --use-docker-host option to automatically transform localhost URLs:
mcp-server-metamcp --metamcp-api-key <your-api-key> --transport sse --port 12006 --use-docker-host
This will transform any localhost or 127.0.0.1 URLs to host.docker.internal, allowing the container to properly connect to services running on the host.
Configuring stderr handling
For STDIO transport, you can control how stderr is handled from child MCP processes:
# Use inherit to see stderr output from child processes
mcp-server-metamcp --metamcp-api-key <your-api-key> --stderr inherit
# Use pipe to capture stderr (default is ignore)
mcp-server-metamcp --metamcp-api-key <your-api-key> --stderr pipe
# Or set via environment variable
METAMCP_STDERR=inherit mcp-server-metamcp --metamcp-api-key <your-api-key>
Available stderr options:
ignore(default): Ignore stderr output from child processesinherit: Pass through stderr from child processes to the parentpipe: Capture stderr in a pipe for processingoverlapped: Use overlapped I/O (Windows-specific)
Command Line Options
Options:
--metamcp-api-key <key> API key for MetaMCP (can also be set via METAMCP_API_KEY env var)
--metamcp-api-base-url <url> Base URL for MetaMCP API (can also be set via METAMCP_API_BASE_URL env var)
--report Fetch all MCPs, initialize clients, and report tools to MetaMCP API
--transport <type> Transport type to use (stdio, sse, or streamable-http) (default: "stdio")
--port <port> Port to use for SSE or Streamable HTTP transport, defaults to 12006 (default: "12006")
--require-api-auth Require API key in SSE or Streamable HTTP URL path
--stateless Use stateless mode for Streamable HTTP transport
--use-docker-host Transform localhost URLs to use host.docker.internal (can also be set via USE_DOCKER_HOST env var)
--stderr <type> Stderr handling for STDIO transport (overlapped, pipe, ignore, inherit) (default: "ignore")
-h, --help display help for command
Environment Variables
METAMCP_API_KEY: API key for MetaMCPMETAMCP_API_BASE_URL: Base URL for MetaMCP APIUSE_DOCKER_HOST: When set to "true", transforms localhost URLs to host.docker.internal for Docker compatibilityMETAMCP_STDERR: Stderr handling for STDIO transport (overlapped, pipe, ignore, inherit). Defaults to "ignore"
Development
# Install dependencies
npm install
# Build the application
npm run build
# Watch for changes
npm run watch
Highlights
- Compatible with ANY MCP Client
- Multi-Workspaces layer enables you to switch to another set of MCP configs within one-click.
- GUI dynamic updates of MCP configs.
- Namespace isolation for joined MCPs.
Architecture Overview
sequenceDiagram
participant MCPClient as MCP Client (e.g. Claude Desktop)
participant MetaMCP-mcp-server as MetaMCP MCP Server
participant MetaMCPApp as MetaMCP App
participant MCPServers as Installed MCP Servers in Metatool App
MCPClient ->> MetaMCP-mcp-server: Request list tools
MetaMCP-mcp-server ->> MetaMCPApp: Get tools configuration & status
MetaMCPApp ->> MetaMCP-mcp-server: Return tools configuration & status
loop For each listed MCP Server
MetaMCP-mcp-server ->> MCPServers: Request list_tools
MCPServers ->> MetaMCP-mcp-server: Return list of tools
end
MetaMCP-mcp-server ->> MetaMCP-mcp-server: Aggregate tool lists
MetaMCP-mcp-server ->> MCPClient: Return aggregated list of tools
MCPClient ->> MetaMCP-mcp-server: Call tool
MetaMCP-mcp-server ->> MCPServers: call_tool to target MCP Server
MCPServers ->> MetaMCP-mcp-server: Return tool response
MetaMCP-mcp-server ->> MCPClient: Return tool response
Credits
- Inspirations and some code (refactored in this project) from https://github.com/adamwattis/mcp-proxy-server/
เซิร์ฟเวอร์ที่เกี่ยวข้อง
Alpha Vantage MCP Server
ผู้สนับสนุนAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
MCP-ABI
Interact with Ethereum-compatible smart contracts using their ABI.
XcodeProj MCP Server
An MCP server for manipulating Xcode project files (.xcodeproj) using Swift. Requires Docker and macOS.
Axint
Open-source TypeScript to native Swift compiler for Apple platforms — AI agents write 5-15x less code for App Intents, SwiftUI, and WidgetKit.
Raymon
Stateful HTTP ingest + MCP server + terminal UI for Ray-style logs.
SAME (Stateless Agent Memory Engine
Your AI's memory shouldn't live on someone else's server — 12 MCP tools that give it persistent context from your local markdown, no cloud, no API keys, single binary.
Pinelabs MCP Server
The Pine Labs Online MCP Server implements the Model Context Protocol (MCP) to enable seamless integration between Pine Labs’ online payment APIs and AI tools. It allows AI assistants to perform Pine Labs Online API operations, empowering developers to build intelligent, AI-driven payment applications with ease.
Divvi MCP Server
Automatically integrate the Divvi referral SDK into JavaScript and TypeScript blockchain applications.
ComfyUI MCP Server
Integrates ComfyUI with MCP, allowing the use of custom workflows. Requires a running ComfyUI server.
QR for Agent
Dynamic QR code MCP server for AI agents — create, update, track QR codes
ThoughtSpot SpotterCode MCP Server
AI-powered MCP server from ThoughtSpot that helps developers integrate ThoughtSpot content, Visual Embed SDK, and REST APIs in AI-native IDEs.