项目简介
MCP Anywhere 是一个强大的统一网关,旨在简化模型上下文协议 (MCP) 服务器的管理和访问。它能够从 GitHub 仓库自动发现并配置 MCP 工具,提供集中的 API 密钥和凭据管理、工具启用控制,并通过单一端点对外提供所有 MCP 工具。它利用 Docker 容器进行安全隔离,为 LLM 应用提供了灵活、可扩展的上下文服务框架。
主要功能点
- 自动工具发现: 从指定的 GitHub 仓库自动识别并集成 MCP 工具。
- 集中凭证管理: 统一管理 API 密钥、证书等敏感文件,并加密存储。
- 工具访问控制: 可选择性地启用或禁用特定工具,精细化管理访问权限。
- 统一访问入口: 通过一个集中的 HTTP 或 STDIO 端点,LLM 客户端可以访问所有托管的 MCP 工具。
- 容器化隔离: 每个工具都在独立的 Docker 容器中运行,确保安全和稳定。
- 支持多种运行时: 兼容 Node.js (npx) 和 Python (uvx) 等不同语言的 MCP 服务器。
安装步骤
- 克隆仓库:
git clone https://github.com/locomotive-agency/mcp-anywhere.git cd mcp-anywhere - 安装依赖: 推荐使用 'uv',或 'pip'。
# 使用 uv (推荐) uv sync # 或者使用 pip pip install -e . - 配置环境变量: 复制 '.env.example' 到 '.env' 并编辑。'SECRET_KEY' 用于会话加密,'ANTHROPIC_API_KEY' 用于 GitHub 仓库分析。
cp env.example .env # 编辑 .env 文件,填入安全随机密钥和 Claude API Key。 # SECRET_KEY=<你的安全随机密钥> # ANTHROPIC_API_KEY=<你的Claude API Key> - 启动服务器:
- HTTP 模式 (推荐用于生产环境):
mcp-anywhere serve http # 或通过 python 模块启动 python -m mcp_anywhere serve http # 访问管理界面: http://localhost:8000 - STDIO 模式 (推荐用于本地Claude Desktop集成):
mcp-anywhere serve stdio # 访问管理界面: http://localhost:8000
- HTTP 模式 (推荐用于生产环境):
服务器配置
MCP Anywhere 启动后,您可以通过其管理界面添加和管理 MCP 服务器。对于 LLM 客户端,您可以选择以下连接方式:
-
HTTP API 集成 (生产环境): LLM 客户端通过 HTTP 请求与 MCP Anywhere 网关通信,需要 OAuth 2.0/JWT 认证。例如,使用 'fastmcp' 客户端连接时,您需要提供 MCP Anywhere 部署的统一端点 URL 和一个有效的 OAuth 令牌。
示例如下(此为Python代码,用于演示客户端如何连接,请勿直接运行):
from fastmcp import Client from fastmcp.client.auth import BearerAuth # 替换为您的 MCP Anywhere 部署地址和 OAuth 令牌 async with Client( "https://your-app.fly.dev/mcp/", # MCP Anywhere 的统一端点 auth=BearerAuth(token="<您的OAuth令牌>") # 使用您的OAuth访问令牌 ) as client: tools = await client.list_tools() -
本地 STDIO 集成 (例如 Claude Desktop): LLM 客户端通过标准输入/输出 (STDIO) 协议连接到 MCP Anywhere 的本地网关。这通常用于本地开发或与桌面应用(如 Claude Desktop)集成。
首先,确保您的 MCP Anywhere 已在本地以 'stdio' 模式启动(参阅上方的“启动服务器”部分)。
然后,在您的 Claude Desktop 配置文件中 (通常是 '~/.config/claude/claude_desktop_config.json' 或类似路径),添加以下 MCP 服务器配置:
{ "mcpServers": { "mcp-anywhere": { "command": "/path/to/your/.local/bin/uv", "args": [ "run", "--directory", "/path/to/your/mcp-anywhere", "mcp-anywhere", "connect" ], "description": "连接到本地运行的MCP Anywhere网关,获取所有已配置的MCP工具。" } } }上述配置中各参数的含义:
- '"mcp-anywhere"': 这是 MCP Anywhere 服务器在 Claude Desktop 中显示的名称。
- '"command"': 'uv' 命令行工具的完整路径。您可以使用 'which uv' 命令在终端中找到它。
- '"args"': 这是传递给 'uv' 命令的参数列表。
- '"run"': 'uv' 的子命令,用于执行 Python 模块。
- '"--directory", "/path/to/your/mcp-anywhere"': 指定 MCP Anywhere 仓库的本地文件系统路径。
- '"mcp-anywhere"': 要作为模块执行的名称。
- '"connect"': 这是 MCP Anywhere 的 CLI 命令,用于启动一个轻量级的 STDIO 网关,以供 MCP 客户端连接。
- '"description"': 服务器的简要描述。
基本使用方法
- 启动 MCP Anywhere: 根据您的需求选择 HTTP 或 STDIO 模式启动服务器。
- 访问管理界面: 打开浏览器访问 'http://localhost:8000' (或您配置的地址),您将看到 MCP Anywhere 的管理控制台。
- 添加 MCP 服务器: 在管理界面中,输入您希望托管的 MCP 工具所在的 GitHub 仓库 URL (例如 'https://github.com/modelcontextprotocol/servers')。MCP Anywhere 将使用 AI 自动分析该仓库并生成配置。
- 配置凭证: 为您添加的 MCP 服务器配置所需的 API 密钥和敏感文件(如 JSON 凭证、PEM 证书等)。MCP Anywhere 提供安全的凭证管理功能。
- 启用工具: 在管理界面中管理并选择要向 LLM 客户端暴露的特定工具。
- 连接 LLM 客户端: 按照上述“服务器配置”部分描述的方式,配置您的 LLM 客户端(如 Claude Desktop 或通过 'fastmcp' SDK)连接到 MCP Anywhere 的统一端点。之后,您的 LLM 客户端将能够发现并调用所有已启用的工具。
信息
分类
AI与计算