项目简介

MCP Anywhere 是一个强大的统一网关,旨在简化模型上下文协议 (MCP) 服务器的管理和访问。它能够从 GitHub 仓库自动发现并配置 MCP 工具,提供集中的 API 密钥和凭据管理、工具启用控制,并通过单一端点对外提供所有 MCP 工具。它利用 Docker 容器进行安全隔离,为 LLM 应用提供了灵活、可扩展的上下文服务框架。

主要功能点

  • 自动工具发现: 从指定的 GitHub 仓库自动识别并集成 MCP 工具。
  • 集中凭证管理: 统一管理 API 密钥、证书等敏感文件,并加密存储。
  • 工具访问控制: 可选择性地启用或禁用特定工具,精细化管理访问权限。
  • 统一访问入口: 通过一个集中的 HTTP 或 STDIO 端点,LLM 客户端可以访问所有托管的 MCP 工具。
  • 容器化隔离: 每个工具都在独立的 Docker 容器中运行,确保安全和稳定。
  • 支持多种运行时: 兼容 Node.js (npx) 和 Python (uvx) 等不同语言的 MCP 服务器。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/locomotive-agency/mcp-anywhere.git
    cd mcp-anywhere
  2. 安装依赖: 推荐使用 'uv',或 'pip'。
    # 使用 uv (推荐)
    uv sync
    # 或者使用 pip
    pip install -e .
  3. 配置环境变量: 复制 '.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>
  4. 启动服务器:
    • 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

服务器配置

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"': 服务器的简要描述。

基本使用方法

  1. 启动 MCP Anywhere: 根据您的需求选择 HTTP 或 STDIO 模式启动服务器。
  2. 访问管理界面: 打开浏览器访问 'http://localhost:8000' (或您配置的地址),您将看到 MCP Anywhere 的管理控制台。
  3. 添加 MCP 服务器: 在管理界面中,输入您希望托管的 MCP 工具所在的 GitHub 仓库 URL (例如 'https://github.com/modelcontextprotocol/servers')。MCP Anywhere 将使用 AI 自动分析该仓库并生成配置。
  4. 配置凭证: 为您添加的 MCP 服务器配置所需的 API 密钥和敏感文件(如 JSON 凭证、PEM 证书等)。MCP Anywhere 提供安全的凭证管理功能。
  5. 启用工具: 在管理界面中管理并选择要向 LLM 客户端暴露的特定工具。
  6. 连接 LLM 客户端: 按照上述“服务器配置”部分描述的方式,配置您的 LLM 客户端(如 Claude Desktop 或通过 'fastmcp' SDK)连接到 MCP Anywhere 的统一端点。之后,您的 LLM 客户端将能够发现并调用所有已启用的工具。

信息

分类

AI与计算