一个集中式的网关,用于管理和连接到多个MCP(模型上下文协议)服务器。提供安全、可扩展的MCP服务器访问,支持SSO身份验证、会话隔离和集中管理。
📢 社区版 - 这是免费的开源版本。对于企业功能如Azure AD SSO、团队、AI护栏、白标等,请参阅COMMERCIAL.md
需要更多高级功能?查看我们的企业版,包括:
git clone https://github.com/KenisLabs/arka-mcp-gateway.git
cd arka-mcp-gateway
# 生成JWT密钥(保存此输出)
openssl rand -hex 32
# 生成加密密钥(保存此输出)
python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
在根目录创建.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
docker-compose --env-file .env.production -f docker-compose.yml up -d
# 创建初始管理员用户
curl -X POST http://localhost:8000/auth/admin/bootstrap
# 响应将包含管理员凭据 - 请安全保存!
# 默认:admin@example.com / <生成的密码>
┌─────────────┐
│ Nginx │ ← 前端(React + Vite)
│ (端口80) │
└──────┬──────┘
│
├── /api/* ──────────────┐
│ ▼
│ ┌──────────────┐ ┌──────────────┐
│ │ 后端 │──────│ PostgreSQL │
│ │ (端口8000) │ │ (端口5432) │
│ └──────┬───────┘ └──────────────┘
│ │
│ │
└── /mcp ────────────┘
│
▼
┌──────────────┐
│ 工作进程 │ ← MCP服务器进程
│ (端口8001) │
└──────┬───────┘
│
┌─────────┴────────┬──────────┬─────────┐
▼ ▼ ▼ ▼
GitHub MCP Gmail MCP Slack MCP ...
http://localhost(或您的域名)http://localhost:8000/auth/github/callback.env.productionhttp://localhost:8000/auth/azure/callback.env.production以管理员身份登录后:
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回调错误
ARKA_BACKEND_URL匹配{BACKEND_URL}/auth/github/callback{BACKEND_URL}/servers/{server-id}/auth-callback3. 管理员引导失败
# 检查数据库中是否已存在管理员
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 backendcurl http://localhost:8000/healtharka-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 # 此文件
欢迎贡献!请:
git checkout -b feature/your-featuregit commit -am '添加功能'git push origin feature/your-feature本项目根据Apache许可证2.0发布 - 详情请参阅LICENSE文件。
由KenisLabs用心打造