feat(mcp): 完善独立 MCP 服务器配置中心与连接生命周期管理 #13

Merged
Kronecker merged 0 commits from feat/mcp-server-registry into main 2026-09-03 22:45:55 +08:00
Owner

概述

完成第二阶段 C.1 独立 MCP Server 配置中心,补齐前后端管理流程,并修复多轮审阅发现的配置、凭据、并发及协议边界问题。

独立 MCP Server 与 Plugin 自带的 MCP Host 保持并列,不依赖 Plugin 安装流程。

主要变更

  • 支持 stdio、Streamable HTTP 和兼容旧版 SSE。
  • 支持服务器新增、编辑、删除、连接确认、测试、启停及工具摘要查询。
  • 提供表单与 JSON 配置模式、传输模板和连接状态展示。
  • 兼容 command/args/env 及单服务器 mcpServers 配置导入。
  • 自动拆分已声明及常见敏感字段,通过独立凭据接口加密保存。
  • 支持动态工具注册、异常连接清理及已启用服务器的重启恢复。
  • 修复工作区无法在选中文件夹下新建 Markdown 文件的问题。

审阅问题修复

  • 将独立 MCP 接口操作移至工作线程,避免等待生命周期锁时阻塞 API。
  • 引入连接代次校验,防止旧连接的延迟回调误停新连接。
  • 补齐 JSON 默认值与运行时校验,修复模式切换和精简配置编辑失败。
  • 修复配置保存后密钥写入失败的重试流程,避免重复创建服务器。
  • 统一 Header 凭据及暂存草稿的大小写规则,避免改名丢失密钥。
  • 环境变量凭据改用区分大小写的 ID,并提供旧密文迁移及防复活处理。
  • 修复独立服务器与 Plugin 超时约束不一致,支持 120 秒启动超时及小数超时。
  • 在 SSE 完整行生成前检查缓冲大小,覆盖无换行输入、跨块 UTF-8 和多种换行格式。
  • 补充开发说明、填写示例及修复验收清单。

安全与数据边界

  • API 查询不返回已保存的密钥明文。
  • 配置或凭据变更后须重新测试,必要时重新确认连接。
  • stdio 仅在开发环境开放;uvx 仅隔离依赖,不视为操作系统沙箱。
  • 保持严格的 stdio JSON-RPC 校验,不忽略第三方程序写入 stdout 的普通日志。
  • server.json、servers.json 及 backend/data/mcp/ 已加入忽略规则,未纳入提交。

验证结果

  • 后端:185 项测试通过。
  • 前端:54 项测试通过。
  • TypeScript 检查及前端生产构建通过。
  • 本次涉及文件的 Ruff 检查通过。
  • Git 差异检查通过。

新增回归覆盖锁竞争、延迟回调、凭据迁移、配置保存重试、Header 草稿改名及 SSE 输入限长。

仍有既有的前端大包体积和测试依赖弃用警告,不阻塞本次合并。

合并说明

审阅提交:9b8b10c

本轮未发现新的合并阻塞问题,建议合并至 main。当前 main 为本分支祖先,无分叉冲突。

验证不包含真实 MiniMax API 鉴权或计费调用;第三方服务器兼容性仍需按具体实现验证。

## 概述 完成第二阶段 C.1 独立 MCP Server 配置中心,补齐前后端管理流程,并修复多轮审阅发现的配置、凭据、并发及协议边界问题。 独立 MCP Server 与 Plugin 自带的 MCP Host 保持并列,不依赖 Plugin 安装流程。 ## 主要变更 - 支持 stdio、Streamable HTTP 和兼容旧版 SSE。 - 支持服务器新增、编辑、删除、连接确认、测试、启停及工具摘要查询。 - 提供表单与 JSON 配置模式、传输模板和连接状态展示。 - 兼容 command/args/env 及单服务器 mcpServers 配置导入。 - 自动拆分已声明及常见敏感字段,通过独立凭据接口加密保存。 - 支持动态工具注册、异常连接清理及已启用服务器的重启恢复。 - 修复工作区无法在选中文件夹下新建 Markdown 文件的问题。 ## 审阅问题修复 - 将独立 MCP 接口操作移至工作线程,避免等待生命周期锁时阻塞 API。 - 引入连接代次校验,防止旧连接的延迟回调误停新连接。 - 补齐 JSON 默认值与运行时校验,修复模式切换和精简配置编辑失败。 - 修复配置保存后密钥写入失败的重试流程,避免重复创建服务器。 - 统一 Header 凭据及暂存草稿的大小写规则,避免改名丢失密钥。 - 环境变量凭据改用区分大小写的 ID,并提供旧密文迁移及防复活处理。 - 修复独立服务器与 Plugin 超时约束不一致,支持 120 秒启动超时及小数超时。 - 在 SSE 完整行生成前检查缓冲大小,覆盖无换行输入、跨块 UTF-8 和多种换行格式。 - 补充开发说明、填写示例及修复验收清单。 ## 安全与数据边界 - API 查询不返回已保存的密钥明文。 - 配置或凭据变更后须重新测试,必要时重新确认连接。 - stdio 仅在开发环境开放;uvx 仅隔离依赖,不视为操作系统沙箱。 - 保持严格的 stdio JSON-RPC 校验,不忽略第三方程序写入 stdout 的普通日志。 - server.json、servers.json 及 backend/data/mcp/ 已加入忽略规则,未纳入提交。 ## 验证结果 - 后端:185 项测试通过。 - 前端:54 项测试通过。 - TypeScript 检查及前端生产构建通过。 - 本次涉及文件的 Ruff 检查通过。 - Git 差异检查通过。 新增回归覆盖锁竞争、延迟回调、凭据迁移、配置保存重试、Header 草稿改名及 SSE 输入限长。 仍有既有的前端大包体积和测试依赖弃用警告,不阻塞本次合并。 ## 合并说明 审阅提交:9b8b10c 本轮未发现新的合并阻塞问题,建议合并至 main。当前 main 为本分支祖先,无分叉冲突。 验证不包含真实 MiniMax API 鉴权或计费调用;第三方服务器兼容性仍需按具体实现验证。
Kronecker merged commit 78e8e3e33b into main 2026-09-03 22:45:55 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Kronecker/NotesAgentic#13