第 4 卷
SSE类型配置
通过 Server-Sent Events与远程服务通信。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 固定值"sse" |
| url | string | 是 | SSE服务端点URL |
| headers | Object | 否 | HTTP请求头键值对 |
| defer_loading | boolean | 否 | 是否延迟加载工具(默认false) |
| tools | Object | 否 | 工具级别配置,可覆盖服务器级别设置 |
示例:
json
{ "type": "sse", "url": "https://api.example.com/mcp/sse", "headers": { "Authorization": "Bearer your-api-token", "X-API-Version": "v1"
} }
HTTP类型配置
通过 HTTP 流式传输与远程服务通信。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | string | 是 | 固定值"http" |
| url | string | 是 | HTTP服务端点URL |
| headers | Object | 否 | HTTP请求头键值对 |
| defer_loading | boolean | 否 | 是否延迟加载工具(默认false) |
| tools | Object | 否 | 工具级别配置,可覆盖服务器级别设置 |
示例:
json
{ "type": "http",
"Authorization": "Bearer secret-token", "Content-Type": "application/json"
} }
延迟加载(defer_loading)
当 MCP 服务器提供大量工具时,可以使用 defer_loading 配置来延迟加载工具,减少上下文消
耗并提高模型工具选择的准确性。
工作原理
设置 defer_loading: true 的工具不会在初始请求时加载到模型上下文
模型可以通过 ToolSearch 工具搜索这些延迟加载的工具
搜索到的工具会被激活,并在后续请求中可用
激活状态在当前会话中保持
服务器级别配置
将服务器的所有工具设为延迟加载:
json
{ "mcpServers": { "my-server": { "type": "stdio", "command": "my-mcp-server", "defer_loading": true } } }
工具级别配置
可以为单个工具覆盖服务器级别的设置:
json
{ "mcpServers": { "my-server": { "type": "stdio", "command": "my-mcp-server", "defer_loading": true, "tools": { "frequently_used_tool": { "defer_loading": false
}
继承规则
| 服务器defer_loading | 工具defer_loading | 最终结果 |
|---|---|---|
| true | 未设置 | true(继承) |
| true | false | false(覆盖) |
| false/未设置 | 未设置 | false |
| false/未设置 | true | true(覆盖) |
会话级/代理级覆盖
除了 MCP 配置里的静态 defer_loading,还可以在 --tools 参数或自定义代理 frontmatter
中使用 Defer(...) / NoDefer(...) 修饰符,临时改变某个工具或某组工具的延迟加载状态:
bash
# 临时把 GitHub 整组 MCP 工具收进延迟加载 codebuddy --tools "default,Defer(mcp__github__*)"
# 即便默认让某 MCP 工具延迟加载,本次也强制让它直接可用 codebuddy --tools "default,NoDefer(mcp__time__current_time)"
修饰符的优先级高于MCP 静态 defer_loading 配置; NoDefer 永远胜过 Defer。详见工具
延迟加载覆盖。
使用场景
工具数量多:当 MCP 服务器提供超过 30 个工具时
减少成本:减少每次请求的 token消耗
提高准确性:让模型在更少的工具中做出更准确的选择
命令行使用
添加MCP服务器
STDIO服务器
bash
# 添加本地可执行文件