返回市场
纽克斯

纽克斯

作者:dbbaskette3 星标更新:2025-11-20

项目介绍

Nexus - MCP网关及管理平台

适用于模型上下文协议(MCP)服务器的通用入口网关,支持动态工具注册和现代Web界面

Nexus是一个生产就绪的MCP网关,它将多个MCP服务器聚合到一个统一的端点中,具备真正的运行时服务器管理、动态工具发现、按用户身份验证以及全面的Web界面。

Spring Boot Spring AI Vue 3 Java


🌟 主要特性

网关核心

  • 多传输支持:STDIO、SSE 和可流式传输的HTTP
  • 动态服务器管理:在运行时添加或移除MCP服务器而无需重启
  • 按用户身份验证:每个用户使用自己的凭据对后端服务器进行身份验证
  • 统一工具注册表:自动合并YAML配置和动态添加的服务器工具
  • 基于角色的访问:管理员和用户角色,具有细粒度的工具权限
  • 凭据转发:安全地将令牌和多字段凭据作为HTTP头转发
  • 生产就绪:开发使用SQLite,生产使用PostgreSQL,支持Cloud Foundry部署

Web界面特性

  • 仪表板(管理员):实时统计信息、服务器健康状况、系统概览
  • 服务器(管理员):添加、配置和管理MCP服务器
  • 工具(所有用户):浏览和搜索所有可用工具
  • 我的服务器与工具(所有用户):配置分配给用户的服务器的身份验证,按服务器查看工具
  • 我的资料(所有用户):查看账户信息,生成JWT令牌以访问API
  • 用户(管理员):创建用户,分配角色和工具,管理权限
  • 指标(管理员):系统范围和每个用户的工具使用指标,并带有可视化图表
  • 日志(管理员):查看系统日志和活动

🚀 快速开始

先决条件

  • Java 21 或更高版本
  • Maven 3.8+(通过mvnw包含)
  • Node.js 18+(用于UI开发)
  • Docker(可选,用于GitHub MCP服务器)

1. 克隆并配置

git clone https://github.com/dbbaskette/Nexus.git
cd Nexus

# 创建密钥文件
cp vars.yaml.template vars.yaml
# 编辑vars.yaml并添加您的令牌/密码

2. 启动应用程序

./run.sh --local

网关启动于 http://localhost:8080

3. 访问Web界面

在浏览器中打开 **http://localhost:8080**。

默认登录:

  • 用户名:admin
  • 密码:admin(您将被提示更改它)

用户体验:

  • 管理员用户:查看所有页面(仪表板、服务器、工具、我的服务器与工具、我的资料、用户、指标、日志)
  • 普通用户:查看我的服务器与工具(首页)、工具和我的资料

4. 连接您的MCP客户端

我的资料页面或通过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

YAML配置的服务器

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

动态服务器(通过UI或API)

在运行时添加服务器而无需重启:

通过Web UI:

  1. 导航到服务器页面(管理员)
  2. 单击添加服务器
  3. 配置传输(STDIO、SSE或可流式传输的HTTP)

通过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"
  }'

按用户身份验证

通过我的服务器与工具页面配置后端服务器的身份验证:

  1. 选择一个服务器
  2. 单击配置认证
  3. 输入凭据:
    • 令牌:您的个人访问令牌或API密钥
    • 令牌类型:Bearer、API-Key或自定义
    • 附加凭据(JSON):多字段凭据

示例 - 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

Cloud Foundry

./run.sh --cf

构建应用程序并推送到CF,绑定PostgreSQL。

手动构建

./mvnw clean package -DskipTests
java -jar target/nexus-*.jar

📊 Web界面页面

对所有用户

  • 我的服务器与工具:配置认证,查看分配的工具(用户的默认主页)
  • 工具:浏览和搜索所有可用工具
  • 我的资料:查看账户信息,生成JWT令牌

对管理员

  • 仪表板:系统统计信息和健康状况概述
  • 服务器:添加、配置和管理MCP服务器
  • 用户:创建用户,分配角色和工具
  • 指标:工具使用和数据量指标,带有图表
  • 日志:查看系统日志和活动

🎯 API端点

MCP协议

  • 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端点及其功能描述。