feat(mcp): 单一全局 lian-jing 服务器——组级挂载收敛(mcp-single-server T1-T3/T5/T6) #3
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/mcp-single-server"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
动机
MCP 客户端配置成本随产品组数线性增长(12 组 × 28 工具 ≈ 300+ 工具注册/会话),与飞轮"项目越多越强"方向相反;实测组级挂载无隔离价值(任意组服务器可操作任意项目,归属校验只覆盖部分工具)。收敛为单一
lian-jing服务器后:授权/注册一次永久生效,liangjing.json只需project_id,group_id 缺失/过期/移组同步一整类问题从根上消失。设计文档见
.blueprint/modules/mcp-single-server.md。变更清单
POST/GET /mcp+POST /mcp/messages;process_rpc单参数化resolve_project_root(project_id)直查project_workspaces;3 处组归属校验替换为ensure_project_exists;list_group_projects改 requiredgroup_id参数"lian-jing"key(URL/mcp),注入时清理旧lian-jing:group-*;liangjing.json主动删除group_id;新增migrate_to_single_server启动时一次性迁移(重注入全量 + 清理旧全局注册两种命名格式,mcp_single_migrated标记位防重,claude CLI 缺失不落标记等重试);退组/删组加"仍属其他组则保留"判断/mcp/group/:gid路由(原计划后置一版,评估后提前:迁移自动重写全部客户端配置,旧路由消费者只剩升级前会话,重启后本就断开)Agent 自验报告
cargo test93 passed / 0 failed(含新驻军测试process_rpc_handshake:initialize 返回 serverInfo.name=炼境,tools/list ≥20 个工具)pnpm typecheck通过(lefthook pre-commit 强制)grep -rE 'lian-jing-\{group_id\}|lian-jing:group-|mcp/group' docs/ src/ src-tauri/resources/ .claude/skills/零残留grep 'mcp/group' src-tauri/src/零命中claude mcp list仅剩lian-jing、抽查 3 个项目配置文件、新会话实调get_diagnostics风险与迁移
新版启动 10 秒后后台自动执行一次性迁移:批量重注入全部托管项目 +
claude mcp remove清理旧全局注册(完整 UUID / 短 8 位两种历史命名)。迁移幂等,部分失败记日志不阻塞。升级前启动的 Claude 会话需重开(服务重启后 SSE 本就断开)。webhook 路由/webhook/gitea/:project_id不受影响。