Arka MCP网关
用于管理和连接到多个MCP(模型上下文协议)服务器的集中式网关。通过SSO身份验证、会话隔离和集中管理,提供对MCP服务器的安全、可扩展的访问。
  ](https://github.com/KenisLabs/arka-mcp-gateway) 
📢 社区版 -这是免费的开源版本。有关Azure AD SSO、团队、AI护栏、白标签等企业功能,请参阅 COMMERCIAL.md
功能(社区版)
- 🔐 GitHub OAuth -使用GitHub进行用户身份验证
- 👤 管理面板 -创建和管理用户
- 🎯 MCP服务器管理 -配置GitHub、Gmail、谷歌任务、Slack等
- 🔑 OAuth提供者管理 -每台服务器的集中式OAuth凭据
- 🛠️ 工具管理 -在组织范围内启用/禁用工具
- 🔒 每用户会话隔离 -每个MCP服务器的独立用户上下文
- 👥 用户黑板 -连接并授权MCP服务器
- 🚀 Docker编写部署 -单命令部署
- 📚 API 文档 -完整的OpenAPI/Swagger文档
企业版
需要更高级的功能吗?查看我们的 企业版 其中包括:
- ⭐ Azure AD/SAML单点登录 -企业身份集成
- 👥 团队和小组 -组织用户,基于团队的权限
- 🛡️ AI护栏 -内容过滤、PII检测、DLP
- 🎨 白色标签 -自定义品牌、域名、删除Arka品牌
- 📊 高级权限 -每个用户/团队工具覆盖
- 📈 审计日志 -完全合规性跟踪,SIEM集成
- 💰 成本管理 -使用分析、预算控制
- 🔒 企业安全 -CMEK、MFA、IP控制
- 🚀 24/7支持 -SLA优先支持
快速开始
先决条件
- Docker和Docker Compose
- 域名(用于生产)或localhost(用于本地开发)
1.克隆存储库
git clone https://github.com/KenisLabs/arka-mcp-gateway.git
cd arka-mcp-gateway2.生成秘密
# Generate JWT secret key (save this output)
openssl rand -hex 32
# Generate encryption key (save this output)
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"3.配置环境
创建 .env.production 根目录中的文件:
# Database Configuration
POSTGRES_DB=arka_mcp_gateway
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_secure_password
POSTGRES_PORT=5432
# JWT Configuration (use output from openssl command)
ARKA_JWT_SECRET_KEY=
ARKA_JWT_ALGORITHM=HS256
ARKA_JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30
ARKA_JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
# Encryption (use output from python command)
ARKA_ENCRYPTION_KEY=
# Application URLs
# For local development:
ARKA_FRONTEND_URL=http://localhost
ARKA_BACKEND_URL=http://localhost:8000
# For production:
# ARKA_FRONTEND_URL=https://your-domain.com
# ARKA_BACKEND_URL=https://your-domain.com
ARKA_WORKER_URL=http://worker:8001
# GitHub User OAuth (for user login)
# Create OAuth App at: https://github.com/settings/developers
# Callback 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
# Optional: Azure OAuth (for user login)
# ARKA_AZURE_CLIENT_ID=your_azure_client_id
# ARKA_AZURE_CLIENT_SECRET=your_azure_client_secret
# ARKA_AZURE_TENANT_ID=your_azure_tenant_id
# Ports
FRONTEND_PORT=80
BACKEND_PORT=8000
WORKER_PORT=80014.启动应用程序
docker-compose --env-file .env.production -f docker-compose.yml up -d5.Bootstrap管理员用户
# Create the initial admin user
curl -X POST http://localhost:8000/auth/admin/bootstrap
# Response will contain admin credentials - save them securely!
# Default: admin@example.com / 6.访问申请
- 前端: http://localhost
- 管理员登录:使用引导步骤中的凭据
- API文件: http://localhost:8000/docs
建筑
┌─────────────┐
│ Nginx │ ← Frontend (React + Vite)
│ (Port 80) │
└──────┬──────┘
│
├── /api/* ──────────────┐
│ ▼
│ ┌──────────────┐ ┌──────────────┐
│ │ Backend │──────│ PostgreSQL │
│ │ (Port 8000) │ │ (Port 5432) │
│ └──────┬───────┘ └──────────────┘
│ │
│ │
└── /mcp ────────────┘
│
▼
┌──────────────┐
│ Worker │ ← MCP Server Processes
│ (Port 8001) │
└──────┬───────┘
│
┌─────────┴────────┬──────────┬─────────┐
▼ ▼ ▼ ▼
GitHub MCP Gmail MCP Slack MCP ...配置
为用户登录设置OAuth
GitHub OAuth(推荐)
- 首选https://github.com/settings/developers
- 创建新的OAuth应用程序
- 设置这些值:
- 应用程序名称:Arka MCP网关 - 你的家园: http://localhost (或您的域名) - 授权回调URL: http://localhost:8000/auth/github/callback
- 将客户端ID和客户端密码复制到
.env.production
Azure OAuth(可选)
- 转到Azure门户→ 应用程序注册
- 创建新注册
- 添加重定向URI:
http://localhost:8000/auth/azure/callback - 创建客户端密钥
- 将值复制到
.env.production
配置MCP服务器OAuth
重要提示: 必须通过管理UI配置所有MCP服务器OAuth凭据。MCP服务器不支持环境变量。
以管理员身份登录后:
- 引导到 管理员仪表板 → MCP服务器管理
- 点击 添加MCP服务器 或配置现有服务器
- 为每个MCP服务器添加OAuth凭据:
- GitHub MCP:需要GitHub OAuth应用程序 - Gmail MCP:需要Google Cloud OAuth凭据 - 谷歌日历MCP:需要Google Cloud OAuth凭据 - 谷歌任务MCP:需要Google Cloud OAuth凭据 - 松弛MCP:需要Slack应用程序凭据
添加新的MCP服务器
- 以管理员身份登录
- 首选 MCP服务器管理
- 点击 浏览目录 查看可用服务器
- 选择服务器并配置OAuth凭据
- 为您的组织启用服务器
- 然后,用户可以授权并连接到服务器
本地开发
后端开发
cd backend
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000前端开发
cd frontend
# Install dependencies
npm install
# Run dev server
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故障排除
集装箱问题
# View logs
docker-compose logs backend
docker-compose logs frontend
docker-compose logs postgres
# Restart services
docker-compose restart backend
# Rebuild after code changes
docker-compose build frontend
docker-compose up -d常见问题
1.数据库连接失败
# Check if postgres is running
docker-compose ps
# Check database logs
docker-compose logs postgres2.OAuth回调错误
- 验证OAuth提供程序设置中的回调URL是否与您的
ARKA_BACKEND_URL - GitHub:应该是
{BACKEND_URL}/auth/github/callback - 对于MCP服务器:应该是
{BACKEND_URL}/servers/{server-id}/auth-callback
3.管理员引导失败
# Check if admin already exists in database
docker-compose exec postgres psql -U postgres -d arka_mcp_gateway -c "SELECT email, role FROM users WHERE role='admin';"
# If admin exists, you can reset password via database4.前端无法到达后端
- 在中检查nginx配置
frontend/nginx.conf - 验证后端容器是否正在运行:
docker-compose ps backend - 检查后端运行状况:
curl http://localhost:8000/health
技术栈
后端
- 快速API -现代异步Python web框架
- PostgreSQL -主数据库
- SQLAlchemy -异步ORM
- JWT -基于令牌的身份验证
- 密码学 -OAuth机密的Fernet加密
- 乌维科恩 -ASGI服务器
前端
- 反应18 -UI库
- 维特 -构建工具和开发服务器
- 顺风 CSS -造型
- shadcn/ui -组件库
- React路由器 -客户端路由
基础设施
- 码头工人 -集装箱化
- Docker Compose -多容器编排
- Nginx -反向代理和静态文件服务
安全
- JWT代币:仅支持HTTP的Cookie可防止XSS攻击
- OAuth凭据:使用Fernet(AES-128)在静止时加密
- 密码散列:bcrypt用于管理员密码
- 跨域资源共享:仅限于前端URL
- 速率限制:应用于身份验证端点
- HTTPS就绪:在生产环境中使用SSL/TLS
项目结构
arka-mcp-gateway/
├── backend/ # FastAPI backend
│ ├── main.py # Application entry point
│ ├── auth/ # Authentication modules
│ ├── gateway/ # MCP gateway logic
│ ├── database.py # Database configuration
│ └── requirements.txt # Python dependencies
├── frontend/ # React frontend
│ ├── src/
│ │ ├── pages/ # Page components
│ │ ├── components/ # Reusable components
│ │ └── lib/ # Utilities
│ ├── nginx.conf # Nginx configuration
│ └── package.json # Node dependencies
├── shared/ # Shared configuration
│ └── mcp_servers_catalog.json
├── docker-compose.yml # Docker orchestration
├── .env.production # Production environment variables
└── README.md # This file贡献
欢迎投稿!拜托:
- 复刻仓库
- 创建要素分支:
git checkout -b feature/your-feature - 提交更改:
git commit -am 'Add feature' - 推送到分支:
git push origin feature/your-feature - 提交拉取请求
许可证
此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。
支持
______________________________________________________________________
内置于❤️ KenisLabs
