返回市场
元工具应用

元工具应用

作者:metatool-ai1681 星标更新:2025-11-20

项目介绍

技术文档摘要

🚀 MetaMCP(集成、编排、中间件、网关于一体的Docker)

<div align="center"> <div align="center"> <a href="https://discord.gg/mNsyat7mFX" style="text-decoration: none;"> <img src="https://img.shields.io/badge/Discord-MetaMCP-5865F2?style=flat-square&logo=discord&logoColor=white" alt="Discord" style="max-width: 100%;"> </a> <a href="https://docs.metamcp.com" style="text-decoration: none;"> <img src="https://img.shields.io/badge/Documentation-docs.metamcp.com-blue?style=flat-square&logo=book" alt="文档" style="max-width: 100%;"> </a> <a href="https://opensource.org/licenses/MIT" style="text-decoration: none;"> <img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square" alt="MIT许可证" style="max-width: 100%;"> </a> <a href="https://github.com/metatool-ai/metamcp/pkgs/container/metamcp" style="text-decoration: none;"> <img src="https://img.shields.io/badge/GHCR-可用-green.svg?style=flat-square&logo=github" alt="GHCR" style="max-width: 100%;"> </a> <a href="https://deepwiki.com/metatool-ai/metamcp"><img src="https://img.shields.io/badge/DeepWiki-metatool--ai%2Fmetamcp-blue.svg?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAyCAYAAAAnWDnqAAAAAXNSR0IArs4c6QAAA05JREFUaEPtmUtyEzEQhtWTQyQLHNak2AB7ZnyXZMEjXMGeK/AIi+QuHrMnbChYY7MIh8g01fJoopFb0uhhEqqcbWTp06/uv1saEDv4O3n3dV60RfP947Mm9/SQc0ICFQgzfc4CYZoTPAswgSJCCUJUnAAoRHOAUOcATwbmVLWdGoH//PB8mnKqScAhsD0kYP3j/Yt5LPQe2KvcXmGvRHcDnpxfL2zOYJ1mFwrryWTz0advv1Ut4CJgf5uhDuDj5eUcAUoahrdY/56ebRWeraTjMt/00Sh3UDtjgHtQNHwcRGOC98BJEAEymycmYcWwOprTgcB6VZ5JK5TAJ+fXGLBm3FDAmn6oPPjR4rKCAoJCal2eAiQp2x0vxTPB3ALO2CRkwmDy5WohzBDwSEFKRwPbknEggCPB/imwrycgxX2NzoMCHhPkDwqYMr9tRcP5qNrMZHkVnOjRMWwLCcr8ohBVb1OMjxLwGCvjTikrsBOiA6fNyCrm8V1rP93iVPpwaE+gO0SsWmPiXB+jikdf6SizrT5qKasx5j8ABbHpFTx+vFXp9EnYQmLx02h1QTTrl6eDqxLnGjporxl3NL3agEvXdT0WmEost648sQOYAeJS9Q7bfUVoMGnjo4AZdUMQku50McDcMWcBPvr0SzbTAFDfvJqwLzgxwATnCgnp4wDl6Aa+Ax283gghmj+vj7feE2KBBRMW3FzOpLOADl0Isb5587h/U4gGvkt5v60Z1VLG8BhYjbzRwyQZemwAd6cCR5/XFWLYZRIMpX39AR0tjaGGiGzLVyhse5C9RKC6ai42ppWPKiBagOvaYk8lO7DajerabOZP46Lby5wKjw1HCRx7p9sVMOWGzb/vA1hwiWc6jm3MvQDTogQkiqIhJV0nBQBTU+3okKCFDy9WwferkHjtxib7t3xIUQtHxnIwtx4mpg26/HfwVNVDb4oI9RHmx5WGelRVlrtiw43zboCLaxv46AZeB3IlTkwouebTr1y2NjSpHz68WNFjHvupy3q8TFn3Hos2IAk4Ju5dCo8B3wP7VPr/FGaKiG+T+v+TQqIrOqMTL1VdWV1DdmcbO8KXBz6esmYWYKPwDL5b5FA1a0hwapHiom0r/cKaoqr+27/XcrS5UwSMbQAAAABJRU5ErkJggg==" alt="DeepWiki: MetaMCP"></a> </div> </div>

📢 更新: [作者道歉:由于最近维护延迟,请见谅,但至少会继续合并PR,更多背景信息请参阅这里]

MetaMCP 是一个MCP代理,允许您动态地将多个MCP服务器聚合到一个统一的MCP服务器中,并应用中间件。MetaMCP本身也是一个MCP服务器,因此可以轻松地与任何MCP客户端集成。

MetaMCP 图


如需了解更多详情,请访问我们的文档网站:https://docs.metamcp.com

英文 | 中文

📋 目录

🎯 使用场景

  • 🏷️ 将MCP服务器分组到命名空间中,作为meta-MCP托管,并分配公共端点(SSE或可流式传输HTTP),并进行认证。一键切换命名空间。
  • 🎯 在混搭MCP服务器时选择所需的工具。 应用其他插件式中间件,围绕可观测性和安全性等(即将推出)。
  • 🔍 作为增强的MCP检查器使用,保存服务器配置,并检查您的MetaMCP端点是否正常工作。
  • 🔍 作为MCP工具选择的Elasticsearch使用(即将推出)

通常,开发者可以使用MetaMCP作为基础设施,通过统一的端点托管动态组合的MCP服务器,并在其上构建代理。

快速演示视频:https://youtu.be/Cf6jVd2saAs

MetaMCP 屏幕截图

📖 概念

🖥️ MCP服务器

告诉MetaMCP如何启动一个MCP服务器的配置。

"HackerNews": {
  "type": "STDIO",
  "command": "uvx",
  "args": ["mcp-hn"]
}

🔐 环境变量及秘密(STDIO MCP服务器)

对于STDIO MCP服务器,MetaMCP支持三种处理环境变量和秘密的方式:

1. 原始值 - 直接字符串值(不建议用于秘密):

API_KEY=your-actual-api-key-here
DEBUG=true

2. 环境变量引用 - 使用${ENV_VAR_NAME}语法:

API_KEY=${OPENAI_API_KEY}
DATABASE_URL=${DB_CONNECTION_STRING}

3. 自动匹配 - 如果工具中的预期环境变量名称与容器的环境变量匹配,您可以完全省略它。MetaMCP将自动传递匹配的环境变量。

🔒 安全提示:环境变量引用(${VAR_NAME})在运行时从MetaMCP容器的环境中解析。这使得实际的秘密值不会出现在您的配置和git仓库中。

⚙️ 开发提示:对于使用pnpm run dev:docker的本地开发,确保您的环境变量在turbo.json下的globalEnv中列出,以便传递给开发进程。这在生产Docker部署中不需要。

🏷️ MetaMCP命名空间

  • 将一个或多个MCP服务器分组到命名空间中
  • 启用/禁用MCP服务器或在工具级别
  • 在MCP请求和响应上应用中间件

🌐 MetaMCP端点

  • 创建端点并将命名空间分配给端点
  • 命名空间中的多个MCP服务器将被聚合并作为MetaMCP端点发出
  • 选择API密钥认证(在头部或查询参数中)或标准OAuth(MCP Spec 2025-06-18)
  • 通过SSE可流式传输HTTP传输在MCP中托管,并为客户端提供OpenAPI端点,如Open WebUI

⚙️ 中间件

  • 在命名空间级别拦截和转换MCP请求和响应
  • 内置示例:"过滤非活动工具" - 优化LLM的工具上下文
  • 未来想法:工具日志记录、错误跟踪、验证、扫描

🔍 检查器

类似于官方的MCP检查器,但带有保存的服务器配置 - MetaMCP会自动创建配置,以便您可以立即调试MetaMCP端点。

🚀 快速开始

🐳 使用Docker Compose运行(推荐)

克隆仓库,准备.env文件,然后使用docker compose启动:

git clone https://github.com/metatool-ai/metamcp.git
cd metamcp
cp example.env .env
docker compose up -d

如果您修改了APP_URL环境变量,请确保只从APP_URL访问,因为MetaMCP会在URL上强制执行CORS策略,所以其他URL无法访问。

请注意,pg卷名称可能会与其他pg容器冲突,这是全局的,考虑在docker-compose.yml中重命名:

volumes:
  metamcp_postgres_data:
    driver: local

📦 使用开发容器构建开发环境(VSCode/Cursor)

您可以使用VSCode/Cursor扩展来在容器中构建开发环境。

这只需要您有一个正在运行Docker或类似替代方案的环境(需要docker/docker compose命令),并且不需要在主机机器上安装其他依赖组件。

  1. 首先,克隆MetaMCP源代码,在Visual Studio Code中打开项目。
git clone https://github.com/metatool-ai/metamcp.git
cd metamcp
code .
  1. 切换到开发容器。打开VSCode命令面板,执行Dev Containers: 在容器中重新打开

VSCode将在新窗口中打开开发容器项目,在那里它将根据Dockerfile构建运行时并安装工具链,然后开始连接并最终安装MetaMCP依赖项。 <img width="895" height="153" alt="image" src="https://gips1.baidu.com/it/u=2880605043,2717315236&fm=3081&app=3081&f=PNG?w=895&h=153" />

注意 此过程需要可靠的网络连接,它将访问Docker Hub、GitHub和其他一些站点。您需要自行确保网络连接,否则容器构建可能会失败。

等待几分钟,具体取决于互联网连接或计算机性能,可能需要几分钟到几十分钟,您可以点击右下角的进度条查看实时日志,以检查是否有异常卡顿。 <img width="732" height="173" alt="image" src="https://gips0.baidu.com/it/u=2509579988,1710044292&fm=3081&app=3081&f=PNG?w=732&h=173" />

💻 本地开发

仍然建议通过Docker运行postgres以方便设置:

pnpm install
pnpm dev

🔌 MCP协议兼容性

  • 工具、资源和提示支持
  • 启用OAuth的MCP服务器测试版本03-26

如有疑问,请随时提交GitHub问题PR

🔗 连接到MetaMCP

📝 例如,通过mcp.json连接Cursor

示例 mcp.json

{
  "mcpServers": {
    "MetaMCP": {
      "url": "http://localhost:12008/metamcp/<YOUR_ENDPOINT_NAME>/sse"
    }
  }
}

🖥️ 连接Claude Desktop和其他仅支持STDIO的客户端

由于MetaMCP端点是远程的(SSE、可流式传输HTTP、OpenAPI),仅支持stdio服务器的客户端(如Claude Desktop)需要一个本地代理来连接。

注意:虽然有时建议使用mcp-remote,但它设计用于基于OAuth的身份验证,不适用于MetaMCP的API密钥身份验证。根据测试,mcp-proxy是推荐的解决方案。

以下是使用mcp-proxy连接Claude Desktop的工作配置:

使用可流式传输HTTP

{
  "mcpServers": {
    "MetaMCP": {
      "command": "uvx",
      "args": [
        "mcp-proxy",
        "--transport",
        "streamablehttp",
        "http://localhost:12008/metamcp/<YOUR_ENDPOINT_NAME>/mcp"
      ],
      "env": {
        "API_ACCESS_TOKEN": "<YOUR_API_KEY_HERE>"
      }
    }
  }
}

使用SSE

{
  "mcpServers": {
    "ehn": {
      "command": "uvx",
      "args": [
        "mcp-proxy",
        "http://localhost:12008/metamcp/<YOUR_ENDPOINT_NAME>/sse"
      ],
      "env": {
        "API_ACCESS_TOKEN": "<YOUR_API_KEY_HERE>"
      }
    }
  }
}

重要说明

  • <YOUR_ENDPOINT_NAME>替换为您实际的端点名称
  • <YOUR_API_KEY_HERE>替换为您的MetaMCP API密钥(格式:sk_mt_...

有关更多详细信息和替代方法,请参阅问题#76

🔧 API密钥认证故障排除

  • ?api_key=参数API密钥认证对SSE不起作用。它仅适用于可流式传输HTTP和OpenAPI。
  • 最佳实践是在Authorization: Bearer <API_KEY>头中使用API密钥。
  • 当遇到连接问题时,尝试暂时禁用认证以查看是否是认证问题。

❄️ 冷启动问题和自定义Dockerfile

  • MetaMCP为每个配置的MCP服务器和MetaMCP预分配空闲会话。默认情况下,每个空闲会话为1,这有助于减少冷启动时间。
  • 如果您的