适用于模型上下文协议(MCP)服务器的通用入口网关,支持动态工具注册和现代Web界面
Nexus是一个生产就绪的MCP网关,它将多个MCP服务器聚合到一个统一的端点中,具备真正的运行时服务器管理、动态工具发现、按用户身份验证以及全面的Web界面。
git clone https://github.com/dbbaskette/Nexus.git
cd Nexus
# 创建密钥文件
cp vars.yaml.template vars.yaml
# 编辑vars.yaml并添加您的令牌/密码
./run.sh --local
网关启动于 http://localhost:8080
在浏览器中打开 **http://localhost:8080**。
默认登录:
adminadmin(您将被提示更改它)用户体验:
从我的资料页面或通过API生成JWT令牌:
curl -X POST http://localhost:8080/api/tokens \
-H "Content-Type: application/json" \
-d '{"username":"admin","expiration":"24h"}'
配置您的MCP客户端(例如,Claude Desktop):
{
"mcpServers": {
"nexus": {
"transport": {
"type": "http",
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer YOUR_JWT_TOKEN_HERE"
}
}
}
}
}
只有分配给您的用户的工具才可用。
Nexus/
├── src/main/java/com/baskettecase/nexus/
│ ├── mcp/ # MCP网关核心
│ │ ├── UnifiedToolCallbackProvider.java # 统一工具提供者
│ │ ├── DynamicToolCallbackRegistry.java # 运行时工具注册表
│ │ ├── UserMcpClientCache.java # 按用户客户端池
│ │ └── DynamicMcpRegistry.java # 动态服务器创建
│ ├── api/ # REST控制器
│ ├── service/ # 业务逻辑
│ ├── entity/ # JPA实体
│ └── repository/ # 数据仓库
├── ui/ # Vue 3 Web界面
│ ├── src/views/
│ │ ├── Dashboard.vue # 管理员仪表板
│ │ ├── Servers.vue # 服务器管理(管理员)
│ │ ├── Tools.vue # 工具浏览器(所有用户)
│ │ ├── MyServers.vue # 服务器认证及工具(所有用户)
│ │ ├── MyProfile.vue # 用户资料及令牌生成(所有用户)
│ │ ├── Users.vue # 用户管理(管理员)
│ │ └── Logs.vue # 系统日志(管理员)
│ ├── src/stores/app.js # Pinia状态管理
│ └── src/router/index.js # Vue Router
├── run.sh # 统一运行脚本
├── manifest.yml # Cloud Foundry清单
└── README.md # 本文档
vars.yaml)从模板创建:
cp vars.yaml.template vars.yaml
编辑并添加您的密钥:
# GitHub令牌用于YAML配置的MCP服务器
GITHUB_PERSONAL_ACCESS_TOKEN: ghp_your_github_token_here
# 初始管理员密码(首次登录时更改)
NEXUS_ADMIN_INITIAL_PASSWORD: your-secure-password
在src/main/resources/application.yml中定义静态服务器:
gateway:
backends:
- id: github-mcp
transport: stdio
command: docker
args:
- run
- -i
- --rm
- -e
- GITHUB_PERSONAL_ACCESS_TOKEN=${GITHUB_PERSONAL_ACCESS_TOKEN}
- mcp/github
在运行时添加服务器而无需重启:
通过Web UI:
通过REST API:
curl -X POST http://localhost:8080/api/servers \
-H "Content-Type: application/json" \
-d '{
"serverId": "my-server",
"name": "My MCP Server",
"transport": "streamable-http",
"url": "https://my-server.example.com",
"endpoint": "/mcp"
}'
通过我的服务器与工具页面配置后端服务器的身份验证:
示例 - GitHub:
{
"token": "ghp_YourToken123",
"tokenType": "Bearer"
}
示例 - Cloud Foundry:
{
"envVars": {
"CF_APIHOST": "api.sys.mycf.com",
"CF_USERNAME": "myuser",
"CF_PASSWORD": "mypassword",
"CF_ORG": "my-org",
"CF_SPACE": "dev"
}
}
凭据在静止状态下加密(AES-256-GCM),并通过HTTP头转发到后端服务器。
./run.sh --local
./run.sh --cf
构建应用程序并推送到CF,绑定PostgreSQL。
./mvnw clean package -DskipTests
java -jar target/nexus-*.jar
POST /mcp/v1 - MCP可流式传输的HTTP端点GET /api/servers - 列出所有服务器POST /api/servers - 创建服务器DELETE /api/servers/{id} - 删除服务器GET /api/tools - 列出所有工具GET /api/tools/{name} - 获取工具详情GET /api/users - 列出用户POST /api/users - 创建用户PUT /api/users/{username}/assigned-tools - 分配工具POST /api/tokens - 生成JWT令牌POST /api/user-tokens/{username}/{serverId} - 配置服务器认证GET /api/metrics/system - 系统范围的指标(工具调用次数、按用户/服务器的数据量)GET /api/metrics/user/{username} - 每个用户的指标GET /actuator/health - 应用程序健康检查GET /actuator/metrics - Micrometer指标端点GET /actuator/info - 应用程序信息多维指标查询:
执行器指标支持基于标签的过滤,用于多维分析:
# 按用户和服务器的工具调用次数
curl -s "https://your-app.com/actuator/metrics/nexus.tool.calls?tag=user:USERNAME&tag=server:SERVER_ID" | jq .
# 按服务器的数据量
curl -s "https://your-app.com/actuator/metrics/nexus.tool.data.bytes?tag=server:github-mcp" | jq .
# 特定工具的使用情况
curl -s "https://your-app.com/actuator/metrics/nexus.tool.calls?tag=tool:github-mcp/create_repository" | jq .
可用标签:
user - 用户名(例如,`user:dbb
user
感谢你的翻译。接下来,请根据上述文档内容,提取并列出所有可用的API端点及其功能描述。