Skip to main content
Glama

xiaozhi-mcphub:多用户 MCP 工具桥接与控制台

在 MCPHub 与 xiaozhi-mcphub 基础上二次开发,新增完整的真正多用户隔离、权限控制、资源共享和超管中心。

控制面板预览

🚀 与原版的主要差异

1. 真正的多用户隔离(核心新增)

原版只有单用户 + 控制台登录账号区分,所有用户看到同一份数据。本项目实现了完整的租户级隔离:

能力

原版

本项目

用户上下文

全局单例(并发不安全)

AsyncLocalStorage 请求级(并发安全)

服务器/分组/端点

全局共享

按 owner 隔离,普通用户只能看到自己的

SSE 路由鉴权

信任 URL 参数(无校验)

校验用户真实存在 + 真实 isAdmin

数据过滤

filterData 空实现

按 owner + shared 过滤

2. 权限控制系统

超管可以为每个普通用户设置细粒度权限:

权限

说明

默认

canAccessMarket

是否可以访问市场页面

❌ 关闭

canCreateServer

是否可以自行添加服务器

❌ 关闭

isAdmin

管理员(可管理一切)

❌

  • 权限写入 JWT,前后端双重校验

  • 关闭权限后:前端隐藏按钮/页面,后端 API 返回 403

3. 资源共享机制

超管可以将自己名下的服务器/分组/小智端点共享给所有普通用户:

操作

所有者

管理员

普通用户(共享)

查看列表

✅

✅

✅

启用/禁用

✅

✅

✅

使用工具

✅

✅

✅

查看/修改配置

✅

✅

❌

修改/删除

✅

✅

❌

4. 用户追踪

每个用户记录:

  • 登录次数(loginCount)

  • 最后登录时间(lastLoginAt)

  • 最后活动时间(lastActivityAt)

5. 批量用户管理

超管中心支持:

  • 批量添加:粘贴 用户名,密码 列表,一键创建

  • 批量权限:勾选多个用户,统一设置市场/服务器权限

  • 批量删除:勾选多个用户,一键删除

6. 超管中心页面

集中管理入口(/users,仅管理员可见):

  • 用户统计卡片(用户数、服务器、分组、端点)

  • 用户表格(含追踪数据、权限状态)

  • 共享管理面板(一键切换服务器/分组共享状态)

  • 管理中心快捷入口

Related MCP server: Jira-Mcp

🔧 快速开始

方式一:Docker Compose(推荐)

git clone https://github.com/huangjunsen0406/xiaozhi-mcphub.git
cd xiaozhi-mcphub
docker compose up -d --build

访问 http://localhost:3000,默认管理员 admin / admin123

方式二:使用预构建镜像

# docker-compose.deploy.yml 中设置 image
docker compose -f docker-compose.deploy.yml up -d

方式三:本地开发

pnpm install
docker compose up -d db  # 只启动数据库
export DATABASE_URL="postgres://xiaozhi:xiaozhi123456@localhost:5432/xiaozhi_mcphub"
pnpm dev  # 后端 :3000 + 前端 :5173

📖 使用指南

超管(管理员)

  1. 登录后访问 超管中心(侧边栏 → 用户)

  2. 添加用户:单个添加或批量添加(粘贴用户名,密码列表)

  3. 设置权限:编辑用户,控制市场访问和服务器创建权限

  4. 共享资源:在共享管理面板,一键切换服务器/分组的共享状态

  5. 查看追踪:用户表格显示登录次数、最后登录时间

普通用户

  1. 管理员创建账号后登录

  2. 只能看到自己名下的服务器/分组/端点

  3. 管理员共享的资源也可查看和启用,但不能修改配置

  4. 默认不能添加服务器、不能访问市场(需管理员授权)

🏗️ 技术架构

后端多用户实现

请求 → auth 中间件(JWT 验证 + 权限补充)
     → userContext 中间件(AsyncLocalStorage 设置用户上下文)
     → 路由处理器
     → dataService.filterData(按 owner + shared 过滤)
     → ensureServerAccess / ensureServerOwnership(归属校验)

关键文件

文件

说明

src/services/userContextService.ts

AsyncLocalStorage 请求级用户上下文

src/services/dataService.ts

按 owner + shared 过滤数据

src/middlewares/auth.ts

JWT 验证 + 权限补充 + requirePermission 中间件

src/middlewares/userContext.ts

控制台 + SSE 用户上下文设置

src/controllers/serverController.ts

服务器归属校验(共享 vs 所有权)

src/controllers/userController.ts

用户 CRUD + 批量操作

src/db/entities/User.ts

用户实体(含追踪 + 权限字段)

新增 API

方法

路径

说明

POST

/api/users/batch

批量创建用户

PUT

/api/users/batch/permissions

批量设置权限

DELETE

/api/users/batch

批量删除用户

PUT

/api/servers/:name/share

切换服务器共享

PUT

/api/groups/:id/share

切换分组共享

PUT

/api/xiaozhi/endpoints/:id/share

切换端点共享

PUT

/api/users/:username/permissions

设置单个用户权限

📦 环境变量

变量

默认值

说明

DATABASE_URL

postgres://xiaozhi:...

数据库连接串

JWT_SECRET

自动生成

JWT 签名密钥(生产建议手动设置)

SMART_ROUTING_ENABLED

false

智能路由开关

BASE_PATH

空

二级路径部署(如 /mcphub)

OPENAI_API_KEY

-

智能路由所需

📄 许可

Apache License 2.0,基于 MCPHub 和 xiaozhi-mcphub 二次开发。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Multi-client MCP server for Jira, enabling project and issue management for multiple simultaneous users with efficient resource usage.
    79 npm
    GPL 3.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server with HTTP/stdio support, a web admin panel for managing services, capabilities, and user permissions with Bearer token authentication, enabling relay and access control for MCP tools.
    -
  • F
    license
    B
    quality
    D
    maintenance
    MCP server for uControl, enabling read and write operations on schema, assets, and uMap via segregated tools with authentication.
    24
    -