MCP工具网关

MCP Anywhere是一个统一的网关服务,用于发现、配置和访问GitHub仓库中的MCP工具,提供集中化的API密钥管理和Docker隔离执行环境。

  • by locomotive-agency
  • Python
  • 本地部署
  • 48 星标
  • 更新于
在 GitHub 查看 locomotive-agency/mcp-router

使用说明

MCP无处不在

模型上下文协议(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

安装

本地安装

# Clone repository
git clone https://github.com/locomotive-agency/mcp-anywhere.git
cd mcp-anywhere

# Install with uv (recommended)
uv sync

# Or install with pip
pip install -e .

# Configure environment
cp env.example .env
# Edit .env with required values:
# SECRET_KEY=<secure-random-key>
# ANTHROPIC_API_KEY=<your-api-key>

# Start server
mcp-anywhere serve http
# Or: python -m mcp_anywhere serve http
# Access at http://localhost:8000

生产部署(Fly.io)

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

# Deploy application
cd mcp-anywhere
fly launch
fly secrets set SECRET_KEY=<secure-random-key>
fly secrets set JWT_SECRET_KEY=<jwt-secret-key>
fly secrets set ANTHROPIC_API_KEY=<your-api-key>
fly secrets set GOOGLE_OAUTH_CLIENT_ID=<google-oauth-client-id>
fly secrets set GOOGLE_OAUTH_CLIENT_SECRET=<google-oauth-client-secret>
fly deploy

# Application available at https://your-app.fly.dev

为了加快fly.io的部署,您可以配置容器的手动构建和启动。

# set the environment variable
REBUILD_CONTAINERS_ON_STARTUP=false

码头工人

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

# Configure environment
cp env.example .env
# Edit .env with required values:
# SECRET_KEY=<secure-random-key>
# ANTHROPIC_API_KEY=<your-api-key>

构建和部署应用程序

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

查看日志以查看状态

$ docker logs mcp-anywhere-app

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

通过CLI与计算机交互,这对于使用以下命令与数据库交互非常有用 sqlite3

# fetch machine id for your app
$ fly --app mcp-anywhere-app machine list

$ fly console --app mcp-anywhere-app --machine <MACHINE_ID>

登录到机器控制台后,示例数据库命令

$ sqlite3 /.data/mcp_anywhere.db ".tables"

$ sqlite3 /.data/mcp_anywhere.db "SELECT * FROM users;"

用法

从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密钥存储库(.jks、.keystore)
  • 配置文件(.yml、.yml、.xml、.txt)

特征:

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

通过Web界面使用:

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

安全注意事项:

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

客户端集成

Claude桌面配置:

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

/Users/yourname/.local/bin/uv

然后,您可以在start命令中使用它。改变 --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控制台中设置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  # Optional: restrict to your domain
    
  3. 用户可以在以下网址登录谷歌 /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()

命令行界面:

# For MCP client connection
mcp-anywhere connect
# Or: python -m mcp_anywhere connect

# For STDIO server mode (local Claude Desktop integration)
mcp-anywhere serve stdio

# For HTTP server mode with OAuth (production)
mcp-anywhere serve http --host 0.0.0.0 --port 8000

特性

身份验证和访问控制

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

工具发现和管理

  • 使用Claude AI进行自动存储库分析
  • 集装箱健康监测与智能重装
  • 支持npx、uvx和Docker运行时
  • 通过每台服务器控制进行选择性工具启用
  • 增强的服务器管理-通过web界面启动、停止和重新启动服务器
  • 带有沙箱隔离的预配置Python解释器

安全与认证

  • Google OAuth集成,简化用户身份验证
  • 基于域的访问控制,确保组织安全
  • 支持PKCE的OAuth 2.0/2.1(MCP SDK实现)
  • 基于JWT的API认证
  • 用于工具执行的Docker容器隔离
  • 基于会话的web界面身份验证
  • 加密的秘密文件存储(带Fernet的AES-128)

生产架构

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

建筑

Client Application → MCP Anywhere Gateway → Docker Containers → MCP Tools
                            ↓
                    Web Management Interface

贡献

贡献领域:

  • Oauth审核和其他提供商支持
  • 容器效率和延迟
  • 改进测试
  • 文档

配置

所需的环境变量

SECRET_KEY                  # Session encryption key
ANTHROPIC_API_KEY          # Claude API key for repository analysis

可选环境变量

JWT_SECRET_KEY             # JWT token signing key (defaults to SECRET_KEY)
WEB_PORT                   # Web interface port (default: 8000)
DATA_DIR                   # Data storage directory (default: .data)
DOCKER_TIMEOUT             # Container operation timeout in seconds (default: 300)
LOG_LEVEL                  # Logging level (default: INFO)
GITHUB_TOKEN               # GitHub token for private repository access

# Container Management
CLEANUP_CONTAINERS_ON_SHUTDOWN    # Clean up containers on app shutdown (default: false)
REBUILD_CONTAINERS_ON_STARTUP     # Rebuild containers on startup (default: true)

# Google OAuth (optional - enables Google authentication)
GOOGLE_OAUTH_CLIENT_ID            # Google OAuth client ID
GOOGLE_OAUTH_CLIENT_SECRET        # Google OAuth client secret  
GOOGLE_OAUTH_REDIRECT_URI         # OAuth redirect URI (e.g., /auth/callback)
OAUTH_USER_ALLOWED_DOMAIN         # Restrict access to specific domain (e.g., company.com)

发展

开发设置

# Install development dependencies
uv sync --group dev

# Run tests
uv run pytest

# Run linting
uv run ruff check src/ tests/

# Run type checking
uv run mypy src/

测试

# Run all tests
uv run pytest

# Run tests with coverage
uv run pytest --cov=mcp_anywhere

uv在任何地方运行mcp服务http主机0.0.0.0端口8080

调试模式

LOG_LEVEL=DEBUG mcp-anywhere serve http

数据重置

mcp-anywhere reset --confirm

支持

许可证

看 许可证