返回市场
路由控制器

路由控制器

作者:locomotive-agency35 星标更新:2025-11-06

项目介绍

MCP Anywhere

一个统一的网关,用于Model Context Protocol (MCP)服务器,支持从GitHub仓库中发现、配置和访问工具,通过单一端点实现。

https://github.com/user-attachments/assets/f011f8bf-6c99-4a8a-8236-f8eb0a3fb9e4

当前版本: 0.8.0
注意: 该项目处于测试阶段。API和功能可能会发生变化。

概览

MCP Anywhere 提供了以下功能:

  • 自动从GitHub仓库中发现工具
  • 集中的API密钥和凭证管理
  • 工具的选择性启用和访问控制
  • 所有MCP工具的统一端点
  • 基于Docker的隔离执行环境

文档

📚 完整的文档可以在mcpanywhere.com找到

安装

本地安装

# 克隆仓库
git clone https://github.com/locomotive-agency/mcp-anywhere.git
cd mcp-anywhere

# 使用uv安装(推荐)
uv sync

# 或者使用pip安装
pip install -e .

# 配置环境
cp env.example .env
# 编辑.env文件并填写所需值:
# SECRET_KEY=<安全随机密钥>
# ANTHROPIC_API_KEY=<你的API密钥>

# 启动服务
mcp-anywhere serve http
# 或:python -m mcp_anywhere serve http
# 访问地址:http://localhost:8000

生产部署(Fly.io)

# 安装Fly CLI
curl -L https://fly.io/install.sh | sh

# 部署应用
cd mcp-anywhere
fly launch
fly secrets set SECRET_KEY=<安全随机密钥>
fly secrets set JWT_SECRET_KEY=<jwt密钥>
fly secrets set ANTHROPIC_API_KEY=<你的API密钥>
fly secrets set GOOGLE_OAUTH_CLIENT_ID=<google-oauth客户端ID>
fly secrets set GOOGLE_OAUTH_CLIENT_SECRET=<google-oauth客户端密钥>
fly deploy

# 应用可用地址:https://your-app.fly.dev

Docker

使用docker compose部署应用程序作为docker容器。

# 配置环境
cp env.example .env
# 编辑.env文件并填写所需值:
# SECRET_KEY=<安全随机密钥>
# ANTHROPIC_API_KEY=<你的API密钥>

构建并部署应用程序

$ docker compose -f docker-compose.native.yml up -d --build

查看日志以了解状态

$ docker logs mcp-anywhere-app

导航到http://<DOCKER-HOST>:8000/以使用应用程序

使用方法

从GitHub添加工具

使用Web界面添加MCP服务器仓库:

  • 官方MCP服务器:https://github.com/modelcontextprotocol/servers
  • Python解释器:https://github.com/yzfly/mcp-python-interpreter
  • 任何兼容的MCP仓库

系统使用Claude AI自动分析和配置仓库。

配置

  • API密钥:集中存储凭证
  • 秘密文件:安全上传和管理凭证文件(JSON、PEM、证书)
  • 工具管理:启用或禁用特定工具
  • 容器设置:自动Docker容器化

秘密文件管理

MCP Anywhere支持安全上传和管理MCP服务器的凭证文件:

支持的文件类型:

  • JSON凭证文件(.json)
  • PEM证书和密钥(.pem, .key, .crt, .cert)
  • PKCS12/PFX证书(.p12, .pfx)
  • Java KeyStores(.jks, .keystore)
  • 配置文件(.yaml, .yml, .xml, .txt)

特性:

  • 文件在静止时使用AES-128(Fernet)加密
  • 最大文件大小:10MB
  • 文件作为只读卷挂载到容器中
  • 环境变量自动设置文件路径
  • 当服务器删除时自动清理

通过Web界面使用:

  1. 导航到服务器详细页面
  2. 使用“上传秘密文件”表单
  3. 指定环境变量名称(例如,GOOGLE_APPLICATION_CREDENTIALS
  4. 上传凭证文件
  5. 当容器启动时,文件会自动挂载

安全性考虑:

  • 文件加密存储在DATA_DIR/secrets/<server_id>/
  • 每个服务器都有独立的秘密存储
  • 文件仅在挂载到容器时解密
  • 容器访问是只读的

客户端集成

Claude Desktop配置:

首先运行which uv,这将打印出uv二进制文件的路径。例如,在macOS上:

/Users/yourname/.local/bin/uv

然后可以使用该路径在启动命令中。更改--directory路径为你克隆的MCP Anywhere路径。

{
  "mcpServers": {
    "mcp-anywhere": {
      "command": "/Users/yourname/.local/bin/uv",
      "args": ["run", "--directory", "/Users/yourname/Projects/mcp-anywhere", "mcp-anywhere", "connect"]
    }
  }
}

最后,在启动Claude Desktop之前设置MCP Anywhere应用程序:

uv run mcp-anywhere serve stdio

身份验证选项:

对于Google OAuth(团队推荐):

  1. 在Google Cloud Console中设置Google OAuth凭证
  2. 配置环境变量:
    GOOGLE_OAUTH_CLIENT_ID=your-client-id
    GOOGLE_OAUTH_CLIENT_SECRET=your-client-secret
    GOOGLE_OAUTH_REDIRECT_URI=/auth/callback
    OAUTH_USER_ALLOWED_DOMAIN=company.com  # 可选:限制到您的域
    
  3. 用户可以通过Google在/auth/login处登录

HTTP API集成:

from fastmcp import Client
from fastmcp.client.auth import BearerAuth

async with Client(
    "https://your-app.fly.dev/mcp/",
    auth=BearerAuth(token="<oauth-token>")
) as client:
    tools = await client.list_tools()

命令行接口:

# 对于MCP客户端连接
mcp-anywhere connect
# 或:python -m mcp_anywhere connect

# 对于STDIO服务器模式(本地Claude Desktop集成)
mcp-anywhere serve stdio

# 对于带有OAuth的HTTP服务器模式(生产)
mcp-anywhere serve http --host  0.0.0.0 --port 8000

功能

身份验证与访问控制

  • Google OAuth集成 - 使用Google登录简化认证
  • 基于域的访问控制 - 限制来自特定域的用户访问(例如,@company.com)
  • 带有安全cookie管理的基于会话的Web认证
  • 带有适当范围验证的JWT令牌用于API访问

工具发现与管理

  • 使用Claude AI自动分析仓库
  • 带有智能重新挂载的容器健康监控
  • 支持npx、uvx和Docker运行时
  • 带有每个服务器控制的选择性工具启用
  • 增强的服务器管理 - 通过Web界面启动、停止和重启服务器
  • 预配置的Python解释器,具有沙箱隔离

安全性和认证

  • 使用Google OAuth简化用户认证
  • 基于域的访问控制以增强组织安全性
  • 支持PKCE的OAuth 2.0/2.1(MCP SDK实现)
  • 基于JWT的API认证
  • 工具执行的Docker容器隔离
  • Web界面的基于会话的认证
  • 加密的秘密文件存储(使用AES-128和Fernet)

生产架构

  • 异步架构(Starlette/FastAPI)
  • 带有自动恢复的健康监控
  • 带有可配置启动/关闭行为的灵活容器管理
  • 带有启动/停止/重启控制的增强服务器生命周期管理
  • 使用GitHub Actions CI的简化部署流程
  • 直接工具访问的CLI支持

架构

客户端应用 → MCP Anywhere网关 → Docker容器 → MCP工具
                            ↓
                    Web管理界面

贡献

贡献领域:

  • OAuth审核和额外提供商支持
  • 容器效率和延迟
  • 改善测试
  • 文档编写

配置

必需的环境变量

SECRET_KEY                  # 会话加密密钥
ANTHROPIC_API_KEY          # 用于仓库分析的Claude API密钥

可选的环境变量

JWT_SECRET_KEY             # JWT令牌签名密钥(默认为SECRET_KEY)
WEB_PORT                   # Web界面端口(默认:8000)
DATA_DIR                   # 数据存储目录(默认:.data)
DOCKER_TIMEOUT             # 容器操作超时时间(秒,默认:300)
LOG_LEVEL                  # 日志级别(默认:INFO)
GITHUB_TOKEN               # 私有仓库访问的GitHub令牌

# 容器管理
CLEANUP_CONTAINERS_ON_SHUTDOWN    # 应用关闭时清理容器(默认:false)
REBUILD_CONTAINERS_ON_STARTUP     # 启动时重建容器(默认:true)

# Google OAuth(可选 - 启用Google认证)
GOOGLE_OAUTH_CLIENT_ID            # Google OAuth客户端ID
GOOGLE_OAUTH_CLIENT_SECRET        # Google OAuth客户端密钥
GOOGLE_OAUTH_REDIRECT_URI         # OAuth重定向URI(例如,/auth/callback)
OAUTH_USER_ALLOWED_DOMAIN         # 限制特定域的访问(例如,company.com)

开发

开发环境设置

# 安装开发依赖
uv sync --group dev

# 运行测试
uv run pytest

# 运行代码检查
uv run ruff check src/ tests/

# 运行类型检查
uv run mypy src/

测试

# 运行所有测试
uv run pytest

# 运行带覆盖率的测试
uv run pytest --cov=mcp_anywhere

调试模式

LOG_LEVEL=DEBUG mcp-anywhere serve http

数据重置

mcp-anywhere reset --confirm

支持

许可证

参见LICENSE