跳到主要内容

接入 MCP 服务

English

MCP server 可以为 Agent 添加本地进程或远程 Streamable HTTP 服务提供的工具。完成一次配置后,从 cosh 连接并检查工具名称,再让 Agent 使用它们。

配置本地 stdio server

将 server 定义写入 ~/.copilot-shell/config.toml/etc/copilot-shell/config.toml。项目配置不能添加 MCP server。

[mcp.servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/absolute/path/to/workspace"]
startup_timeout_ms = 30000
timeout_ms = 10000
allowed_tools = ["read_file", "list_directory"]

命令会直接启动,不经过交互式 Shell。需要环境变量时,在配置中明确传入:

[mcp.servers.filesystem.env]
SERVICE_TOKEN = "${FILESYSTEM_MCP_TOKEN}"

allowed_tools 可以列出已发现的工具名;省略表示暴露全部工具,设为 [] 表示不暴露工具。

配置远程 server

Streamable HTTP endpoint 使用 url,不使用 command

[mcp.servers.search]
url = "https://mcp.example.com/mcp"
allowed_tools = ["query"]

[mcp.servers.search.oauth]
scopes = ["search"]

使用静态 token 时,删除 OAuth 表并设置:

bearer_token = "${SEARCH_MCP_TOKEN}"

远程 endpoint 使用 HTTPS。只有 localhost127.0.0.1::1 等 loopback 主机允许 HTTP。每个 server 必须且只能设置 commandurl 之一。

连接并检查

在 server 应访问的工作空间启动 cosh,然后运行:

/mcp list
/mcp connect filesystem
/mcp inspect filesystem

list 确认已读取定义;connect 启动或连接 server 并发现工具;inspect 显示发现的工具和 Agent 可见的名称,不会打印凭据。MCP 工具名称形如 mcp__<server>__<tool>,仍受审批规则约束。

OAuth 登录需要在 Shell 中运行(交互式 /mcp login 只会显示这条提示):

cosh-core mcp login search

完成浏览器授权后,再回到 cosh 连接并检查 server。

刷新或断开

/mcp refresh filesystem
/mcp disconnect filesystem
/mcp logout search

refresh 重新发现工具;disconnect 禁用启动时连接并删除保存的 OAuth 凭据,再次 connect 可重新启用;logout 只删除 OAuth 凭据,不修改定义。任务正在运行时,连接变化会在下一项 Agent 任务生效。

排查

现象检查
/mcp list 为空使用系统或用户配置,不要使用项目配置
本地 server 无法启动检查程序、参数、envstartup_timeout_ms
已连接但没有工具检查 allowed_tools[] 不暴露任何工具)
远程 endpoint 被拒绝使用 HTTPS;HTTP 只允许 loopback;检查 token/OAuth 设置
cosh 中 OAuth 无法启动在 Shell 运行 cosh-core mcp login <server>,再连接

进入 Agent 上下文的 MCP 输出上限为 64 KiB。