API代理服务

MCP Nexus是一个基于Cloudflare Workers的API代理服务,提供Tavily和Brave Search API的统一接口,支持API密钥自动轮换和管理。

  • by ykq007
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ykq007/mcp-nexus-cloudflare

使用说明

MCP Nexus-Cloudflare员工

一键将MCP Nexus部署到Cloudflare的免费层。这为Tavily和Brave Search API提供了一个统一的MCP服务器,并自动轮换API密钥。

特性

  • 零成本托管 Cloudflare Workers免费版
  • D1数据库 用于持久存储(自动配置)
  • 加密的API密钥 使用Web Crypto API
  • 包括管理UI -用于管理密钥和令牌的完整web界面
  • 7个MCP工具:数据搜索、数据提取、数据抓取、数据地图、数据研究、勇敢搜索、勇敢搜索

部署

选项1:一键部署

单击上面的按钮并按照提示进行操作。您将被要求:

  1. 授权Cloudflare访问您的GitHub(将创建分叉)
  2. 配置机密:
    • ADMIN_API_TOKEN:管理员API访问的令牌(使用生成 openssl rand -hex 32)
    • KEY_ENCRYPTION_SECRET:用于加密API密钥的密钥(使用生成 openssl rand -base64 32)

选项2:手动部署

# Clone the repo
git clone https://github.com/ykq007/mcp-nexus.git
cd mcp-nexus/packages/worker

# Install dependencies
npm install

# Create D1 database
npx wrangler d1 create mcp-nexus-db
# Copy the database_id from output to wrangler.jsonc

# Set secrets
npx wrangler secret put ADMIN_API_TOKEN
npx wrangler secret put KEY_ENCRYPTION_SECRET

# Run migrations and deploy
npm run deploy

部署后设置

部署之后,您需要添加API密钥并创建客户端令牌。

1.添加Tavilly API密钥

curl -X POST https://your-worker.workers.dev/admin/api/tavily-keys \
  -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"label": "Primary Key", "key": "tvly-xxxxx"}'

2.添加勇敢的API密钥(可选)

curl -X POST https://your-worker.workers.dev/admin/api/brave-keys \
  -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"label": "Primary Key", "key": "BSAxxxxx"}'

3.创建客户端令牌

curl -X POST https://your-worker.workers.dev/admin/api/tokens \
  -H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"description": "Claude Desktop"}'

保存返回的 token -它只显示一次。

MCP客户端配置

克劳德桌面/克莱恩

{
  "mcpServers": {
    "mcp-nexus": {
      "command": "npx",
      "args": ["-y", "@anthropic-ai/mcp-proxy", "https://your-worker.workers.dev/mcp"],
      "env": {
        "MCP_HEADERS": "Authorization: Bearer YOUR_CLIENT_TOKEN"
      }
    }
  }
}

直接HTTP

curl -X POST https://your-worker.workers.dev/mcp \
  -H "Authorization: Bearer YOUR_CLIENT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "tools/list",
    "id": 1
  }'

API终点

端点 身份验证 描述
POST /mcp 客户端令牌 MCP JSON-RPC端点
GET /health 无 健康检查
GET /admin/api/tavily-keys 管理员令牌 列出Tavily密钥
POST /admin/api/tavily-keys 管理员令牌 添加Tavily密钥
DELETE /admin/api/tavily-keys/:id 管理员令牌 删除Tavily密钥
GET /admin/api/brave-keys 管理员令牌 列出Brave密钥
POST /admin/api/brave-keys 管理员令牌 添加Brave密钥
DELETE /admin/api/brave-keys/:id 管理员令牌 删除Brave密钥
GET /admin/api/tokens 管理令牌 列出客户端令牌
POST /admin/api/tokens 管理令牌 创建客户端令牌
DELETE /admin/api/tokens/:id 管理员令牌 撤销客户端令牌
GET /admin/api/settings 管理员令牌 获取设置
PUT /admin/api/settings 管理员令牌 更新设置
GET /admin/api/usage 管理员令牌 查看使用日志

本地开发

# Install dependencies
npm install

# Create local D1 database
npm run db:migrate:local

# Start dev server
npm run dev

建筑

┌─────────────────────────────────────────────────────────┐
│                  Cloudflare Workers                      │
├─────────────────────────────────────────────────────────┤
│  Hono Router                                            │
│  ├── /mcp (MCP JSON-RPC)                               │
│  ├── /admin/api/* (Admin API)                          │
│  └── /health                                           │
├─────────────────────────────────────────────────────────┤
│  Services                                               │
│  ├── Key Pool (rotation, cooldown)                     │
│  ├── Tavily Client                                     │
│  └── Brave Client                                      │
├─────────────────────────────────────────────────────────┤
│  D1 Database                                           │
│  ├── tavily_keys (encrypted)                           │
│  ├── brave_keys (encrypted)                            │
│  ├── client_tokens (hashed)                            │
│  ├── server_settings                                   │
│  └── usage_logs                                        │
└─────────────────────────────────────────────────────────┘

许可证

麻省理工学院