项目简介

Arka MCP Gateway 是一个功能强大的后端服务,旨在为大型语言模型(LLM)应用程序提供安全、可扩展的上下文和工具管理。它通过统一的入口管理多个 MCP 服务器(例如 GitHub、Gmail、Slack、Notion 等),用户可以通过 GitHub OAuth 登录,管理员可以集中管理用户、MCP 服务器配置和工具访问权限,确保每个 LLM 会话都拥有隔离且受控的上下文环境。

主要功能点

  • 集中式MCP服务器管理: 统一配置和连接各种 MCP 服务器,提供对 GitHub、Gmail、Slack、Notion 等服务的访问。
  • GitHub OAuth 认证: 用户可以通过其 GitHub 账户方便地登录系统。
  • 管理员面板: 提供直观的界面,用于创建和管理用户、配置 OAuth 服务凭据以及启用/禁用组织层面的工具。
  • 工具权限控制: 支持在组织层面启用或禁用具体工具,提供精细的访问控制。
  • 每用户会话隔离: 确保每个用户的 MCP 服务器上下文相互独立,增强了系统的安全性和稳定性。
  • Docker Compose 快速部署: 提供一键式 Docker Compose 部署,简化了环境搭建过程。
  • OAuth 提供商管理: 集中管理每个 MCP 服务器的 OAuth 凭据,无需手动配置环境变量。
  • API 文档: 提供完整的 OpenAPI/Swagger 文档,方便开发者进行集成和调用。
  • MCP 访问令牌管理: 用户可以在仪表盘中生成和管理用于 MCP 客户端(如 VS Code 扩展、Claude Desktop 等)的 API 令牌。

安装步骤

  1. 安装 Docker 和 Docker Compose: 请确保您的系统已安装最新版本的 Docker 和 Docker Compose。

  2. 克隆仓库: 打开终端或命令行工具,执行以下命令克隆项目仓库并进入目录:

    git clone https://github.com/KenisLabs/arka-mcp-gateway.git
    cd arka-mcp-gateway
  3. 生成密钥: 运行以下命令生成用于 JWT 认证和数据加密的密钥。请务必将这些命令的输出结果妥善保存:

    # 生成 JWT 密钥 (请保存此输出)
    openssl rand -hex 32
    
    # 生成加密密钥 (请保存此输出)
    python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
  4. 配置环境变量: 在项目根目录下创建一个名为 '.env.production' 的文件,并根据您的实际情况填写配置。请将上一步中生成的 JWT 密钥和加密密钥分别填入 'ARKA_JWT_SECRET_KEY' 和 'ARKA_ENCRYPTION_KEY'。

    # 数据库配置
    POSTGRES_DB=arka_mcp_gateway
    POSTGRES_USER=postgres
    POSTGRES_PASSWORD=your_secure_password # 请替换为安全的数据库密码
    POSTGRES_PORT=5432
    
    # JWT 配置 (请替换为 openssl 命令的输出)
    ARKA_JWT_SECRET_KEY=<your_jwt_secret_here>
    ARKA_JWT_ALGORITHM=HS256
    ARKA_JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30
    ARKA_JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
    
    # 加密配置 (请替换为 python 命令的输出)
    ARKA_ENCRYPTION_KEY=<your_encryption_key_here>
    
    # 应用 URL (用于本地开发,生产环境请替换为您的实际域名)
    ARKA_FRONTEND_URL=http://localhost
    ARKA_BACKEND_URL=http://localhost:8000
    ARKA_WORKER_URL=http://worker:8001
    
    # GitHub 用户 OAuth (用于用户登录)
    # 1. 访问 https://github.com/settings/developers 创建一个新的 OAuth App。
    # 2. 将 "Authorization callback URL" 设置为: http://localhost:8000/auth/github/callback
    #    (如果部署在其他域名,请替换 localhost 为您的域名)。
    ARKA_GITHUB_USER_OAUTH_CLIENT_ID=your_github_oauth_client_id # 替换为您的 GitHub Client ID
    ARKA_GITHUB_USER_OAUTH_CLIENT_SECRET=your_github_oauth_client_secret # 替换为您的 GitHub Client Secret
    
    # 端口配置
    FRONTEND_PORT=80
    BACKEND_PORT=8000
    WORKER_PORT=8001
  5. 启动应用: 在项目根目录中执行以下命令启动所有服务:

    docker-compose --env-file .env.production -f docker-compose.yml up -d
  6. 初始化管理员用户: 执行以下 'curl' 命令创建初始管理员账户。命令执行后,响应中将包含管理员的邮箱(默认为 '[email protected]')和自动生成的密码,请务必安全保存这些凭据:

    curl -X POST http://localhost:8000/auth/admin/bootstrap

服务器配置 (供 MCP 客户端使用)

MCP 客户端需要配置与 'Arka MCP Gateway' 建立连接。MCP 客户端的配置通常是一个 JSON 对象,包含服务器名称、连接命令和参数。

假设您的 'Arka MCP Gateway' 运行在 'http://localhost:8000',以下是 MCP 客户端连接此服务器的示例配置:

{
  "name": "Arka MCP Gateway",
  "description": "连接到 Arka MCP Gateway,获取 LLM 上下文和工具访问权限",
  "command": "curl",
  "args": [
    "-X", "POST",
    "http://localhost:8000/mcp/messages",
    "-H", "Content-Type: application/json",
    "-H", "Authorization: Bearer YOUR_MCP_ACCESS_TOKEN",
    "--data-binary", "@-"
  ],
  "stream_command": "curl",
  "stream_args": [
    "-X", "GET",
    "http://localhost:8000/mcp/sse",
    "-H", "Accept: text/event-stream",
    "-H", "Authorization: Bearer YOUR_MCP_ACCESS_TOKEN"
  ],
  "notes": "请将 'YOUR_MCP_ACCESS_TOKEN' 替换为你在 Arka MCP Gateway 用户仪表盘中生成的 MCP 访问令牌。这个令牌用于认证 MCP 客户端与 Gateway 的通信。要生成令牌,请访问 Gateway 前端界面并登录。"
}

配置参数说明:

  • 'name': MCP 服务器的显示名称,例如“Arka MCP Gateway”。
  • 'description': MCP 服务器的简要描述。
  • 'command': 用于发送 JSON-RPC 请求的命令。对于基于 HTTP 的 JSON-RPC,通常是 'curl'。
  • 'args': 'command' 的参数列表。
    • 'http://localhost:8000/mcp/messages': MCP Gateway 的 JSON-RPC 消息端点。请务必将 'http://localhost:8000' 替换为您的 Gateway 实际部署 URL。
    • 'Content-Type: application/json': 指定请求体为 JSON 格式。
    • 'Authorization: Bearer YOUR_MCP_ACCESS_TOKEN': 认证头,'YOUR_MCP_ACCESS_TOKEN' 需要替换为从 Gateway 获取的个人 MCP 访问令牌。
    • '--data-binary @-': 指示 'curl' 从标准输入读取请求体,这是 MCP 客户端发送 JSON-RPC 请求的标准方式。
  • 'stream_command': 用于接收 Server-Sent Events (SSE) 通知流的命令,同样通常是 'curl'。
  • 'stream_args': 'stream_command' 的参数列表。
    • 'http://localhost:8000/mcp/sse': MCP Gateway 的 SSE 通知端点。
    • 'Accept: text/event-stream': 声明客户端接受 Server-Sent Events。
    • 'Authorization: Bearer YOUR_MCP_ACCESS_TOKEN': 与 JSON-RPC 请求相同的认证令牌。
  • 'notes': 重要的使用提示,指导用户如何获取和使用 MCP 访问令牌。

基本使用方法

  1. 访问 Frontend: 在浏览器中打开 'http://localhost' (如果部署在其他域名,请访问对应的域名)。

  2. 管理员登录: 使用在安装步骤 6 中获取的管理员凭据登录到前端界面。

  3. 配置 MCP 服务器:

    • 在管理员仪表盘中,导航到 "MCP Server Management" 部分。
    • 点击 "Browse Catalog" 浏览可用的 MCP 服务器列表。
    • 选择您想要集成的 MCP 服务器(例如 GitHub-mcp),然后点击 "Add MCP Server" 开始配置 OAuth 凭据。
    • 根据提示填写 OAuth Client ID 和 Client Secret,并确保您在第三方 OAuth 应用(如 GitHub)中配置的回调 URL 与此处显示的回调 URL 一致(例如 'http://localhost:8000/servers/github-mcp/auth-callback')。
    • 配置完成后,启用该服务器供普通用户使用。
  4. 用户授权:

    • 普通用户登录后,访问 "User Dashboard"(用户仪表盘)。
    • 找到已由管理员配置并启用的 MCP 服务器,点击 "Connect" 或 "Authorize" 按钮。
    • 按照提示完成 OAuth 流程,授权 'Arka MCP Gateway' 访问第三方服务(例如 GitHub 账户)。
  5. 生成 MCP 访问令牌:

    • 在用户仪表盘中,导航到 "MCP Access Tokens" 部分。
    • 点击生成一个新的令牌。这个 JWT 令牌只会在生成时显示一次,请务必立即复制并安全保存,它将是 MCP 客户端连接到 Gateway 的唯一凭证。
  6. 使用 MCP 客户端:

    • 在您的 MCP 客户端应用程序(如支持 MCP 协议的 LLM IDE、VS Code 插件或其他集成工具)中,使用上述 "服务器配置" 部分提供的 JSON 配置信息。
    • 将配置中的 'YOUR_MCP_ACCESS_TOKEN' 占位符替换为您在 Gateway 中生成的实际 MCP 访问令牌。
    • 配置完成后,您的 MCP 客户端即可通过 'Arka MCP Gateway' 访问和调用授权的工具及上下文信息。

信息

分类

开发者工具