跳转至

core/mcp

compat/sdk.py 是 mcp、mcp_types 与 httpx2 的唯一导入点。 外层只接触 compat/types.py 的不可变服务器、工具、内容与结果,以及自有连接句柄。 版本检查先于 SDK 导入;SDK 左闭右开范围为 2.3.0~3.0.0,协议闭区间为 2024-11-05~2026-07-28。强制兼容只放行协议区间。

每个连接拥有一个常驻任务。SDK 客户端、HTTP 与传输作用域全部由该任务进入和退出。 外部关闭只发信号并等待屏蔽取消的清理;建连中取消会让所属任务撤销已建立的部分。 批量建连取消时管理器还会关闭已就绪连接。stdio 读流关闭由公开传输接口观察, stderr 使用真实文件描述符收集并遮密钥、截断后转入日志。SDK 已能在输出横幅后 继续连接,因此没有替换其解析器。

config.py 拥有独立的 mcp.toml,复用主配置差异判据与整目录备份,服务数组和工具 表逐条补缺项与删除退休字段。任何校验失败都停用整份 MCP 配置。 schema.py 展开本地引用与单分支组合,拒绝歧义结构,只保留十个参数关键字。 render.py 负责观察来源提示与总长限制,核心资料回灌无需再次截断。 snapshot.py 只保存工具说明与参数指纹,变化由部署者处理。

manager.py 在组合根创建,绑定 ChatService 的真实注册表;启动只创建后台任务。 每个发现工具分别判断白名单、只读、参数结构和命名冲突。模型能力按连接与每日上限 动态贡献,插件与模型走同一计数入口。五类外部失败由执行器转换为工具失败, 事件结构保持不变,metadata 增加服务名、工具原名与协商协议版本。