/服务器名:prompt名称prompts/get 接口获取完整内容local > project > user-p/--print 参数)下,由于无法通过 UI 进行审批,需要通过 --settings 参数预先配置允许的 MCP 服务器:# 方式 1:允许所有项目 MCP 服务器codebuddy --settings '{"enableAllProjectMcpServers": true}' -p "your prompt"# 方式 2:允许特定的 MCP 服务器codebuddy --settings '{"enabledMcpjsonServers": ["server-name-1", "server-name-2"]}' -p "your prompt"
mcp__<服务器名>__<工具名>,用双下划线 __ 分段(名字里的单下划线只是普通字符)。规则有三种写法:mcp__服务器名
mcp__服务器名__ 为前缀的全部工具,也就是这个服务器的所有工具。等价写法:mcp__服务器名__*。mcp__服务器名__工具名
mcp__*
deny 和 ask 里有效;放进 allow 等于没写,批量放开请按服务器逐个列出。mcp__web-search 与 mcp__web_search 等价* 只能整段替换最后一节。mcp__git*、mcp__github__get_* 匹配不到任何工具,而且不会报错mcp__ 开头的规则,裸 * 对它无效;要全部禁用请写 "deny": ["mcp__*"]mcp__github__ 为前缀的工具。{"permissions": {"allow": ["mcp__github"]}}
{"permissions": {"allow": ["mcp__github__get_issue","mcp__github__list_issues"]}}
{"permissions": {"deny": ["mcp__dangerous_server__delete_file"]}}
mcp__filesystem__ 为前缀的工具。{"permissions": {"deny": ["mcp__filesystem"]}}
{"permissions": {"deny": ["mcp__*"]}}
~/.codebuddy/.mcp.json(推荐)~/.codebuddy/mcp.json(已废弃)~/.codebuddy.json(旧版配置文件)~/.codebuddy/.mcp.json(最高优先级)<项目根目录>/.mcp.json(推荐)<项目根目录>/mcp.json(已废弃)<项目根目录>/.mcp.json(最高优先级)projects 字段来区分不同项目的 local 配置。~/.codebuddy.json#/projects/<workspace_path>#/projects/<workspace_path> 使用的是 JSON Pointer 语法,用于指向 JSON 文档中的特定位置。关于 JSON Pointer 的详细说明,请参考:https://datatracker.ietf.org/doc/html/rfc6901// 添加行内或行尾注释/* */ 添加块注释{// MCP 服务器配置"mcpServers": {"server-name": {"type": "stdio|sse|http","command": "命令路径","args": ["参数1", "参数2"],"env": {"ENV_VAR": "value"},"url": "http://example.com/mcp","headers": {"Authorization": "Bearer token"},"description": "服务器描述"}},// projects 字段仅在 user 作用域的文件里有效,用于识别 local 作用域的配置"projects": {"/path/to/project": {"mcpServers": {"local-server": {"type": "stdio","command": "./local-tool"}}}}}
{// MCP Server Configuration for CodeBuddy// 这个文件配置了项目使用的 MCP 服务器"mcpServers": {/** Filesystem Server* 提供文件系统访问能力* 文档: https://github.com/modelcontextprotocol/servers*/"filesystem": {"type": "stdio","command": "npx","args": ["-y","@modelcontextprotocol/server-filesystem","/path/to/workspace", // 工作目录路径],"env": {"DEBUG": "true", // 启用调试模式},},// HTTP API 服务器示例"api-server": {"type": "http","url": "http://localhost:3000/mcp", // 本地开发服务器"headers": {"Authorization": "Bearer your-token",},},},// 已禁用的服务器列表(供参考)"disabledMcpServers": ["deprecated-server",],}
**注意**:`type` 字段是可选的。如果未指定,系统会根据配置内容自动推断:- 包含 `command` 字段时,推断为 `stdio` 类型- 包含 `url` 字段时,推断为 `http` 类型建议显式指定 `type` 字段以确保配置的准确性。### 环境变量扩展MCP 配置支持环境变量扩展,允许您在配置中引用系统环境变量。这对于在团队间共享配置、管理敏感信息(如 API 密钥、令牌)以及支持环境特定配置(开发、测试、生产)非常有用。#### 支持的语法- **`${VAR_NAME}`** - 展开为环境变量 VAR_NAME 的值- **`${VAR_NAME:-default_value}`** - 如果 VAR_NAME 未设置,使用默认值#### 变量命名规则- 变量名必须以大写字母或下划线 `[A-Z_]` 开头- 后续字符只能是大写字母、数字或下划线 `[A-Z0-9_]*`- 小写字母、混合大小写以及以数字开头的变量不会被展开#### 支持的配置字段环境变量可以在以下配置字段中展开:**STDIO 类型配置**:- `command` - 可执行文件路径或命令- `args` - 命令行参数列表中的每个参数- `env` - 环境变量值(键不会被展开)**SSE/HTTP/Remote 类型配置**:- `url` - 服务端点 URL- `headers` - HTTP 请求头值(键不会被展开)#### 错误处理**环境变量未设置的行为**:- 如果环境变量未设置且**有默认值**,使用默认值- 如果环境变量未设置且**无默认值**,保留原始占位符(`${VAR}`),并在诊断中报告 WARNING 消息这意味着配置不会因缺失的环境变量而失败,而是保留占位符并发出警告。#### 示例配置**示例 1:STDIO 类型服务器,使用环境变量**```json{"mcpServers": {"python-tools": {"type": "stdio","command": "${PYTHON_PATH:-python}","args": ["-m","my_mcp_server","--config","${CONFIG_DIR:-/etc/config}"],"env": {"PYTHONPATH": "${PYTHON_LIB_PATH}","DEBUG": "${DEBUG_MODE:-false}","API_KEY": "${API_KEY}"}}}}
{"mcpServers": {"api-server": {"type": "http","url": "${API_BASE_URL:-https://api.example.com}/mcp","headers": {"Authorization": "Bearer ${API_TOKEN}","X-API-Version": "${API_VERSION:-v1}","User-Agent": "CodeBuddy/${CODEBUDDY_VERSION:-1.0}"}}}}
# 在 .mcp.json 中使用环境变量# 每个团队成员在本地设置环境变量export API_TOKEN="their-personal-token"export LOCAL_TOOL_PATH="/home/user/tools"
# 开发环境export API_BASE_URL="http://localhost:3000"# 生产环境export API_BASE_URL="https://api.production.com"
{"headers": {"Authorization": "Bearer ${MY_API_KEY}"}}
/mcp 命令查看 MCP 服务器配置和诊断信息Missing environment variables: API_TOKEN, DATABASE_URL
字段 | 类型 | 必填 | 说明 |
type | string | 是 | 固定值 "stdio" |
command | string | 是 | 可执行文件路径或命令 |
args | Array<string> | 否 | 命令行参数列表 |
env | Object | 否 | 环境变量键值对 |
defer_loading | boolean | 否 | 是否延迟加载工具(默认 false) |
tools | Object | 否 | 工具级别配置,可覆盖服务器级别设置 |
{"type": "stdio","command": "python","args": ["-m", "my_mcp_server"],"env": {"PYTHONPATH": "/path/to/tools","DEBUG": "true"}}
字段 | 类型 | 必填 | 说明 |
type | string | 是 | 固定值 "sse" |
url | string | 是 | SSE 服务端点 URL |
headers | Object | 否 | HTTP 请求头键值对 |
defer_loading | boolean | 否 | 是否延迟加载工具(默认 false) |
tools | Object | 否 | 工具级别配置,可覆盖服务器级别设置 |
{"type": "sse","url": "https://api.example.com/mcp/sse","headers": {"Authorization": "Bearer your-api-token","X-API-Version": "v1"}}
字段 | 类型 | 必填 | 说明 |
type | string | 是 | 固定值 "http" |
url | string | 是 | HTTP 服务端点 URL |
headers | Object | 否 | HTTP 请求头键值对 |
defer_loading | boolean | 否 | 是否延迟加载工具(默认 false) |
tools | Object | 否 | 工具级别配置,可覆盖服务器级别设置 |
{"type": "http","url": "https://mcp.example.com/api/v1","headers": {"Authorization": "Bearer secret-token","Content-Type": "application/json"}}
defer_loading 配置来延迟加载工具,减少上下文消耗并提高模型工具选择的准确性。defer_loading: true 的工具不会在初始请求时加载到模型上下文ToolSearch 工具搜索这些延迟加载的工具{"mcpServers": {"my-server": {"type": "stdio","command": "my-mcp-server","defer_loading": true}}}
{"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(覆盖) |
defer_loading,还可以在 --tools 参数或自定义代理 frontmatter 中使用 Defer(...) / NoDefer(...) 修饰符,临时改变某个工具或某组工具的延迟加载状态:# 临时把 GitHub 整组 MCP 工具收进延迟加载codebuddy --tools "default,Defer(mcp__github__*)"# 即便默认让某 MCP 工具延迟加载,本次也强制让它直接可用codebuddy --tools "default,NoDefer(mcp__time__current_time)"
# 添加本地可执行文件codebuddy mcp add --scope user my-tool -- /path/to/tool arg1 arg2# 添加 Python 脚本codebuddy mcp add --scope project python-tool -- python /path/to/script.py
# 添加 SSE 服务器codebuddy mcp add --scope user --transport sse sse-server https://example.com/mcp/sse
# 添加 HTTP 流式服务器codebuddy mcp add --scope project --transport http http-server https://example.com/mcp/http
# 添加 STDIO 类型服务器codebuddy mcp add-json --scope user my-server '{"type":"stdio","command":"/usr/local/bin/tool","args":["--verbose"]}'# 添加 HTTP 类型服务器codebuddy mcp add-json --scope user http-server '{"type":"http","url":"https://example.com/mcp","headers":{"Authorization":"Bearer token"}}'# 添加 SSE 类型服务器codebuddy mcp add-json --scope project sse-server '{"type":"sse","url":"https://api.example.com/mcp/sse","headers":{"X-API-Key":"your-api-key"}}'# 添加带环境变量的 STDIO 服务器codebuddy mcp add-json --scope user python-tool '{"type":"stdio","command":"python","args":["-m","my_mcp_server"],"env":{"PYTHONPATH":"/path/to/tools"}}'
# 列出所有作用域的服务器codebuddy mcp list
# 查看特定服务器信息codebuddy mcp get my-server
# 移除特定服务器codebuddy mcp remove my-server# 移除特定作用域的服务器codebuddy mcp remove my-server --scope user
${API_TOKEN} 或 ${API_TOKEN:-default})来管理 API 密钥、令牌等敏感数据.gitignore 中排除实际的环境变量文件{"mcpServers": {"python-tools": {"type": "stdio","command": "python","args": ["-m", "my_mcp_server"],"env": {"PYTHONPATH": "/path/to/tools"},"description": "Python 工具集合"}}}
{"mcpServers": {"api-server": {"type": "sse","url": "https://api.example.com/mcp/sse","headers": {"Authorization": "Bearer your-token","X-API-Version": "v1"},"description": "远程 API 服务"}}}
{"mcpServers": {"node-server": {"type": "stdio","command": "node","args": ["./mcp-server.js"],"env": {"NODE_ENV": "production"},"description": "Node.js MCP 服务器"}}}
FastMCP@modelcontextprotocol/sdkcodebuddy mcp add --scope user --transport http --header "X-Tapd-Access-Token: TAPD_ACCESS_TOKEN" -- tapd_mcp_http https://mcp-oa.tapd.woa.com/mcp
codebuddy mcp add --scope user chrome-devtools -- npx -y chrome-devtools-mcp@latest
codebuddy mcp add --scope user iwiki -- npx -y mcp-remote@latest https://prod.mcp.it.woa.com/app_iwiki_mcp/mcp3
MAX_MCP_OUTPUT_TOKENS(默认 20000 tokens,约 80KB 字符数)时,CodeBuddy 会自动处理以避免占用过多上下文:~/.codebuddy/projects/<project-hash>/<session-id>/tool-results/mcp-<server>-<tool>-<timestamp>-<rand>.txt,返回给模型一段读取指引(包含文件路径、格式说明、分段读取要求)。模型可以通过 Read 工具按 offset / limit 参数分段读取完整内容,或用 jq 对 JSON 结构做结构化查询。MAX_MCP_OUTPUT_TOKENS * 4 字符上限,而不落盘:.txt 文件丢失图片渲染)CODEBUDDY_DISABLE_MCP_LARGE_OUTPUT_FILES=1[OUTPUT TRUNCATED - exceeded N token limit] 标记,并告知模型哪些类型的块被丢弃(例如 [Dropped 2 audio blocks due to size limit]),方便模型改用分页或过滤参数重试。文档反馈