MCP 工具桥接器 — 将 MCP server 工具包装为 CMDC.Tool behaviour 模块。
Anubis 客户端连接并完成协商后,Bridge 查询每个客户端的可用工具,
将其包装为实现 CMDC.Tool 接口的匿名模块。
这样 Agent 可以像调用内置工具一样调用 MCP 工具,无需特殊分发逻辑。
工具命名
MCP 工具默认保留原始名称(如 get_weather、search_issues)。
当两个 server 暴露同名工具时,在名称前加 server 前缀以消歧:
weather_get_weather、backup_get_weather。
与已存在的 native 工具同名时同样触发前缀。
工具模块生命周期
生成的模块名为 CMDC.MCP.Tool.<ServerName><ToolName>(驼峰化)。
重新发现工具时,旧模块版本会被清除(purge + delete),
确保重连后的新工具定义生效。
Summary
Functions
在运行时为 MCP 工具创建实现 CMDC.Tool 行为的模块。
生成的模块通过 Anubis client 路由工具调用。 重连后若工具定义有变,旧版本模块会被清除并重新生成。
从所有配置的 MCP server 发现工具。
接受 server config map 列表(每个包含 :name key),
返回所有 server 工具的扁平列表。
从所有 MCP server 发现工具并生成 CMDC.Tool 行为实现模块。
使用原始工具名,同名时加 server 前缀消歧。
existing_names 是已注册的 native 工具名 MapSet,也会触发前缀。
从单个命名 MCP client 发现工具,返回 CMDC 兼容的工具信息 map 列表。
每个 map 包含:
:name— 工具名称(可能加了 server 前缀):description— MCP server 提供的工具描述:parameters— JSON Schema input schema:server— MCP server 名称(String):original_name— 工具在 MCP server 上的原始名称
client 未连接或发现失败时返回 []。