在 AI 编程助手的使用过程中,一个常见的痛点就是工具能力的边界限制。虽然 OpenCode 内置了丰富的工具系统(文件读写、代码搜索、终端执行等),但在实际开发中,我们常常需要与外部系统交互——查询 Sentry 的错误日志、搜索 GitHub 上的代码片段、查阅第三方服务的文档,或是操作 Jira 上的任务。如果每次都需要手动切换上下文,开发效率就会大打折扣。
OpenCode 的 MCP 服务器集成完美解决了这个问题。通过 Model Context Protocol(MCP),我们可以将任意外部工具无缝接入 AI 编程助手的工具箱,让 AI 直接调用这些工具完成复杂任务,而无需开发者手动切换窗口。本文将全面介绍 MCP 服务器的配置、使用和最佳实践。
MCP(Model Context Protocol)是一种开放协议,由 Anthropic 提出,旨在为 AI 模型提供标准化的工具调用接口。你可以把它理解为 AI 世界的 USB 协议——只要设备(工具)遵循这个标准,AI 模型就能即插即用地与之交互。
在 OpenCode 中,MCP 服务器被当作内置工具一样对待。一旦配置完成,AI 助手会自动识别并使用这些工具,你只需要在提示词中引导它"使用某个 MCP 工具"即可。
OpenCode 支持两种类型的 MCP 服务器:
所有 MCP 服务器的配置都放在 OpenCode 配置文件(opencode.jsonc)的 mcp 字段下。每个服务器需要一个唯一的名字作为标识。
本地 MCP 服务器通过命令行启动,适合需要本地权限的工具。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value"
}
}
}
}
配置字段说明:
| 字段 | 类型 | 说明 |
|------|------|------|
| type | string | 固定为 "local" |
| command | string[] | 启动命令及参数,如 ["npx", "-y", "some-package"] |
| cwd | string | 工作目录,相对路径从 workspace 解析 |
| environment | object | 环境变量 |
| enabled | boolean | 是否启用 |
| timeout | number | 工具获取超时时间,默认 5000ms |
远程 MCP 服务器通过 URL 访问,适合集成在线服务。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}
对于需要认证的远程 MCP 服务器,OpenCode 提供了自动化的 OAuth 支持。当服务器返回 401 时,OpenCode 会自动检测并启动 OAuth 流程。
对于大多数支持 OAuth 的 MCP 服务器,你甚至不需要配置认证信息:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}
首次使用时,OpenCode 会弹出浏览器窗口让你完成授权。认证成功后,凭据会被安全地存储在 ~/.local/share/opencode/mcp-auth.json 中。
如果你已经从服务提供商处获得了客户端凭证,可以显式配置:
{
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}
OpenCode 提供了完整的命令行工具来管理 MCP 认证:
# 手动触发某 MCP 服务器的 OAuth 流程 opencode mcp auth my-oauth-server # 列出所有 MCP 服务器及其认证状态 opencode mcp list # 清除存储的认证凭据 opencode mcp logout my-oauth-server # 调试 MCP 服务器连接和 OAuth 流程 opencode mcp debug my-oauth-server
MCP 注册的工具与 OpenCode 内置工具在同一个工具系统中,因此你可以通过 tools 字段进行精细化管理。
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}
也可以使用 glob 模式批量禁用:
"tools": {
"my-mcp*": false
}
如果有很多 MCP 服务器,你可能只想在特定的 Agent 中使用某些 MCP。可以全局禁用,然后按需在 Agent 配置中启用:
{
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}
注意:MCP 工具的注册名称带有服务器名前缀,因此要禁用某服务器的所有工具,可以在 glob 模式中使用带下划线的格式:
"tools": {
"mymcpservername_*": false
}
将 Sentry MCP 服务器接入 OpenCode,AI 可以直接查询错误信息:
{
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}
配置后执行 opencode mcp auth sentry 完成认证,就能在对话中使用了:
显示我项目中最新的未解决 Issue。use sentry
Context7 MCP 服务器可以搜索各种技术文档:
{
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}
在 AGENTS.md 中添加规则让 AI 自动使用:
当你需要搜索技术文档时,使用 `context7` 工具。
通过 Grep MCP 服务器,AI 可以直接搜索 GitHub 上的代码示例:
{
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
在提示词中引导使用:
在 SST Astro 组件中设置自定义域名的正确方法是什么?use the gh_grep tool
MCP 工具会增加上下文占用。每个注册的工具都会消耗 Token,工具越多,留给真正代码上下文的 Token 就越少。建议只保留你真正需要的 MCP 服务器。
某些 MCP 服务器(如 GitHub MCP 服务器)会返回大量数据,很容易超出上下文限制。使用时需要有明确的限定范围。
如果有大量 MCP 服务器,建议用 Agent 机制做隔离。创建专门的 Agent 处理特定领域任务,只为其启用相关的 MCP 工具。
敏感信息(API Key、密钥等)应该通过环境变量引用,而不是硬编码在配置文件中:
{
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
enabled 开关临时不需要的 MCP 服务器可以设为 "enabled": false,保留配置但不启动,需要时再启用。
MCP 服务器是 OpenCode 生态中最强大的扩展机制之一。它打破了 AI 编程助手的工具边界,让你可以将任意外部服务无缝接入 AI 工作流。从错误监控到文档搜索,从代码示例查询到项目管理,MCP 让 AI 编程助手真正成为你开发工作中的全能助手。
通过合理配置和精细化管理,你可以在不显著增加 Token 消耗的前提下,构建一个强大且高效的工具生态。建议先从一两个你实际需要的 MCP 服务器开始,逐步扩展,找到最适合自己工作流的组合。