返回市场
方舟-mcp网关

方舟-mcp网关

作者:KenisLabs32 星标更新:2025-11-24

项目介绍

Arka MCP网关

一个集中式的网关,用于管理和连接到多个MCP(模型上下文协议)服务器。提供安全、可扩展的MCP服务器访问,支持SSO身份验证、会话隔离和集中管理。

Discord 网站 GitHub 许可证

📢 社区版 - 这是免费的开源版本。对于企业功能如Azure AD SSO、团队、AI护栏、白标等,请参阅COMMERCIAL.md

功能(社区版)

  • 🔐 GitHub OAuth - 使用GitHub进行用户认证
  • 👤 管理员面板 - 创建和管理用户
  • 🎯 MCP服务器管理 - 配置GitHub、Gmail、Slack等
  • 🔑 OAuth提供商管理 - 每个服务器的集中式OAuth凭证
  • 🛠️ 工具管理 - 启用/禁用组织范围内的工具
  • 🔒 每个用户的会话隔离 - 每个MCP服务器的独立用户上下文
  • 👥 用户仪表板 - 连接并授权MCP服务器
  • 🚀 Docker Compose部署 - 单命令部署
  • 📚 API文档 - 完整的OpenAPI/Swagger文档

企业版

需要更多高级功能?查看我们的企业版,包括:

  • Azure AD / SAML SSO - 企业身份集成
  • 👥 团队与组 - 组织用户,基于团队的权限
  • 🛡️ AI护栏 - 内容过滤、PII检测、DLP
  • 🎨 白标 - 自定义品牌、域名,移除Arka品牌
  • 📊 高级权限 - 每个用户/团队的工具覆盖
  • 📈 审计日志 - 全面合规跟踪,SIEM集成
  • 💰 成本管理 - 使用分析,预算控制
  • 🔒 企业级安全 - CMEK,多因素认证,IP控制
  • 🚀 24/7支持 - 带SLA的优先支持

了解更多关于企业版 →

快速开始

先决条件

  • Docker 和 Docker Compose
  • 生产环境的域名或本地开发的localhost

1. 克隆仓库

git clone https://github.com/KenisLabs/arka-mcp-gateway.git
cd arka-mcp-gateway

2. 生成密钥

# 生成JWT密钥(保存此输出)
openssl rand -hex 32

# 生成加密密钥(保存此输出)
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

3. 配置环境

在根目录创建.env.production文件:

# 数据库配置
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_FRONTEND_URL=https://your-domain.com
# ARKA_BACKEND_URL=https://your-domain.com

ARKA_WORKER_URL=http://worker:8001

# GitHub用户OAuth(用于用户登录)
# 在:https://github.com/settings/developers 创建OAuth应用
# 回调URL:http://localhost:8000/auth/github/callback
ARKA_GITHUB_USER_OAUTH_CLIENT_ID=your_github_oauth_client_id
ARKA_GITHUB_USER_OAUTH_CLIENT_SECRET=your_github_oauth_client_secret

# 可选:Azure OAuth(用于用户登录)
# ARKA_AZURE_CLIENT_ID=your_azure_client_id
# ARKA_AZURE_CLIENT_SECRET=your_azure_client_secret
# ARKA_AZURE_TENANT_ID=your__tenant_id

# 端口
FRONTEND_PORT=80
BACKEND_PORT=8000
WORKER_PORT=8001

4. 启动应用程序

docker-compose --env-file .env.production -f docker-compose.yml up -d

5. 引导管理员用户

# 创建初始管理员用户
curl -X POST http://localhost:8000/auth/admin/bootstrap

# 响应将包含管理员凭据 - 请安全保存!
# 默认:admin@example.com / <生成的密码>

6. 访问应用程序

架构

┌─────────────┐
│   Nginx     │  ← 前端(React + Vite)
│  (端口80)   │
└──────┬──────┘
       │
       ├── /api/* ──────────────┐
       │                        ▼
       │              ┌──────────────┐      ┌──────────────┐
       │              │   后端      │──────│  PostgreSQL  │
       │              │  (端口8000) │      │  (端口5432)  │
       │              └──────┬───────┘      └──────────────┘
       │                     │
       │                     │
       └── /mcp ────────────┘
                             │
                             ▼
                   ┌──────────────┐
                   │    工作进程  │  ← MCP服务器进程
                   │  (端口8001)  │
                   └──────┬───────┘
                          │
                ┌─────────┴────────┬──────────┬─────────┐
                ▼                  ▼          ▼         ▼
           GitHub MCP        Gmail MCP   Slack MCP    ...

配置

设置用户登录的OAuth

GitHub OAuth(推荐)

  1. 转到 https://github.com/settings/developers
  2. 创建一个新的OAuth应用
  3. 设置这些值:
    • 应用名称:Arka MCP网关
    • 主页URLhttp://localhost(或您的域名)
    • 授权回调URLhttp://localhost:8000/auth/github/callback
  4. 将客户端ID和客户端密钥复制到.env.production

Azure OAuth(可选)

  1. 转到Azure门户 → 应用注册
  2. 创建新的注册
  3. 添加重定向URI:http://localhost:8000/auth/azure/callback
  4. 创建客户端密钥
  5. 将值复制到.env.production

配置MCP服务器OAuth

以管理员身份登录后:

  1. 导航至管理员仪表板MCP服务器管理
  2. 点击添加MCP服务器或配置现有服务器
  3. 为每个MCP服务器添加OAuth凭证:
    • GitHub MCP:需要GitHub OAuth应用
    • Gmail MCP:需要Google Cloud OAuth凭证
    • Google Calendar MCP:需要Google Cloud OAuth凭证
    • Slack MCP:需要Slack应用凭证

添加新的MCP服务器

  1. 以管理员身份登录
  2. 转到MCP服务器管理
  3. 点击浏览目录以查看可用服务器
  4. 选择服务器并配置OAuth凭证
  5. 启用服务器供您的组织使用
  6. 用户可以授权并连接到该服务器

本地开发

后端开发

cd backend

# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

# 运行后端
uvicorn main:app --reload --host 0.0.0.0 --port 8000

前端开发

cd frontend

# 安装依赖
npm install

# 运行开发服务器
npm run dev

数据库(本地开发)

docker run -d \
  --name arka-postgres \
  -e POSTGRES_PASSWORD=postgres \
  -e POSTGRES_DB=arka_mcp_gateway \
  -p 5432:5432 \
  postgres:16-alpine

故障排除

容器问题

# 查看日志
docker-compose logs backend
docker-compose logs frontend
docker-compose logs postgres

# 重启服务
docker-compose restart backend

# 代码更改后重建
docker-compose build frontend
docker-compose up -d

常见问题

1. 数据库连接失败

# 检查postgres是否运行
docker-compose ps

# 检查数据库日志
docker-compose logs postgres

2. OAuth回调错误

  • 验证OAuth提供商设置中的回调URL与您的ARKA_BACKEND_URL匹配
  • 对于GitHub:应为{BACKEND_URL}/auth/github/callback
  • 对于MCP服务器:应为{BACKEND_URL}/servers/{server-id}/auth-callback

3. 管理员引导失败

# 检查数据库中是否已存在管理员
docker-compose exec postgres psql -U postgres -d arka_mcp_gateway -c "SELECT email, role FROM users WHERE role='admin';"

# 如果管理员已存在,可以通过数据库重置密码

4. 前端无法访问后端

  • 检查frontend/nginx.conf中的nginx配置
  • 验证后端容器是否正在运行:docker-compose ps backend
  • 检查后端健康状况:curl http://localhost:8000/health

技术栈

后端

  • FastAPI - 现代异步Python Web框架
  • PostgreSQL - 主要数据库
  • SQLAlchemy - 异步ORM
  • JWT - 基于令牌的身份验证
  • Cryptography - 使用Fernet加密OAuth密钥
  • Uvicorn - ASGI服务器

前端

  • React 18 - UI库
  • Vite - 构建工具和开发服务器
  • Tailwind CSS - 样式
  • shadcn/ui - 组件库
  • React Router - 客户端路由

基础设施

  • Docker - 容器化
  • Docker Compose - 多容器编排
  • Nginx - 反向代理和静态文件服务

安全

  • JWT令牌:HTTP-only cookie防止XSS攻击
  • OAuth凭证:使用Fernet(AES-128)加密存储
  • 密码哈希:使用bcrypt对管理员密码进行哈希处理
  • CORS:限制到前端URL
  • 速率限制:应用于身份验证端点
  • HTTPS准备:生产环境中使用SSL/TLS

项目结构

arka-mcp-gateway/
├── backend/                 # FastAPI后端
│   ├── main.py             # 应用入口点
│   ├── auth/               # 身份验证模块
│   ├── gateway/            # MCP网关逻辑
│   ├── database.py         # 数据库配置
│   └── requirements.txt    # Python依赖
├── frontend/               # React前端
│   ├── src/
│   │   ├── pages/         # 页面组件
│   │   ├── components/    # 可复用组件
│   │   └── lib/           # 实用工具
│   ├── nginx.conf         # Nginx配置
│   └── package.json       # Node依赖
├── shared/                # 共享配置
│   └── mcp_servers_catalog.json
├── docker-compose.yml     # Docker编排
├── .env.production        # 生产环境变量
└── README.md             # 此文件

贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支:git checkout -b feature/your-feature
  3. 提交更改:git commit -am '添加功能'
  4. 推送到分支:git push origin feature/your-feature
  5. 提交拉取请求

许可证

本项目根据Apache许可证2.0发布 - 详情请参阅LICENSE文件。

支持


由KenisLabs用心打造