opencode-map
← guides/

为 opencode 接入 MCP server

进阶最后更新: 2026年10月21日

opencode 可以通过 Model Context Protocol(MCP)接入外部工具,本地(子进程)和远程(HTTP)server 都支持,配置后 MCP 工具与内置工具并列可用。注意文档的提醒:每个 server 都会把工具定义塞进 context——文档点名 GitHub 的 server 容易吃满上下文。只开需要的。

mcp 配置项

在 opencode.json / opencode.jsonc 的 mcp 下定义 server,每个用唯一名字命名。prompt 里可以按名字引导模型使用(如「use context7」);enabled: false 则保留配置但暂时停用:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-server": { "enabled": true }
  }
}

组织可以通过 .well-known/opencode 下发 MCP 默认配置;本地 mcp 条目会覆盖它——比如对组织默认关闭的 server 设 enabled: true 来开启。配置合并规则见配置指南。

本地 server

本地 server 是一条由 opencode 负责拉起的命令:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mcp_everything": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
      "environment": { "LOG_LEVEL": "info" }
    }
  }
}
选项 必填 说明
type 是 必须为 "local"
command 是 可执行文件加参数,数组形式
cwd 否 工作目录;相对路径基于 workspace 解析
environment 否 传给 server 进程的环境变量
timeout 否 拉取工具的超时时间(ms),默认 5000

远程 server

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "headers": {
        "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
      }
    }
  }
}

{env:NAME} 是环境变量插值——凭证一律这样写,不要把密钥提交进配置文件。远程选项:url(必填)、headers、oauth、enabled、timeout(同样默认 5000 ms)。

OAuth

远程 OAuth 是全自动的:opencode 检测到 401 后走浏览器授权流程(支持时使用 RFC 7591 动态客户端注册),token 存放在 ~/.local/share/opencode/mcp-auth.json。如果你有预注册的 client 凭证,可以显式配置:

"oauth": {
  "clientId": "{env:MCP_CLIENT_ID}",
  "clientSecret": "{env:MCP_CLIENT_SECRET}",
  "scope": "tools:read tools:execute"
}

纯 API key 的 server 设 "oauth": false,完全跳过 OAuth。server 和凭证都走 CLI 管理:

opencode mcp add               # 交互式添加本地或远程 server
opencode mcp list              # server 列表及连接状态(简写 ls)
opencode mcp auth my-server    # 浏览器授权流程
opencode mcp auth list         # 列出支持 OAuth 的 server 及状态
opencode mcp logout my-server  # 删除已存凭证
opencode mcp debug my-server   # 连通性 + OAuth discovery 排查

控制 MCP 工具

MCP 工具以 server 名作为前缀注册,所以 tools 键支持 glob(* 匹配零个或多个字符,? 匹配一个)——先全局禁用,再给需要的 agent 单独放行。(tools 自 v1.1.1 起废弃——等价的 permission 规则用同样的 glob 写法,如 "my-server_*": "deny",见权限指南。)

{
  "$schema": "https://opencode.ai/config.json",
  "tools": { "my-server_*": false },
  "agent": {
    "reviewer": { "tools": { "my-server_*": true } }
  }
}

v2 差异

v2 重构了这块:server 挪到 mcp.servers 之下,disabled 取代 enabled,OAuth 字段改成 snake_case(client_id),mcp add 变成参数式(--url、--env、--header、--global),应用内用 /mcps 管理。本篇对应 v1 的配置。

延伸阅读