📚AI 编程官方教程中文版
官方教程中文版工具与 MCP

连接 MCP 服务器

为 OpenCode 添加外部工具,并控制上下文和权限成本。

MCP 服务器可以把外部系统接进 OpenCode,例如文档搜索、GitHub、Sentry、数据库或内部服务。接入后,MCP 暴露的工具会和内置工具一起提供给模型使用。

官方教程列出了本地 MCP、远程 MCP、OAuth、认证命令和工具管理。这里按新手视角讲:该不该接、先接哪个、怎么避免上下文和权限失控。

先理解它解决什么问题

MCP 解决的是“模型需要使用外部系统”的问题。比如:

  • 查最新框架文档。
  • 查线上错误平台里的 issue。
  • 读数据库结构。
  • 调用公司内部工具。

但 MCP 不是越多越好。每个 MCP 都会增加模型可见工具数量,也会占用上下文。工具太多时,模型选择工具会更慢,也更容易选错。

先判断是否真的需要 MCP

新手按这个顺序判断:

  1. 内置工具能完成,就不接 MCP。
  2. 只是查一个网页,用 webfetch 或搜索工具即可。
  3. 需要稳定访问某个外部服务,再接 MCP。
  4. 只有你反复用到它,才放进全局配置。

例如查框架文档可以接 Context7;查错误平台可以接 Sentry;但偶尔看一篇文档,不需要为此常驻一个 MCP。

本地和远程怎么选

本地 MCP:

  • 在你的机器或 Runner 上启动进程。
  • 适合需要本地文件、内网环境或本地 CLI 的工具。
  • 依赖本机环境,换机器要重新准备。

远程 MCP:

  • OpenCode 通过 URL 连接。
  • 适合云服务、公开文档、SaaS 平台。
  • 通常需要 OAuth 或 API Key。

新手优先接远程文档类 MCP,因为风险低、验证快;涉及写入生产系统的 MCP 要谨慎。

最小配置

opencode.jsonmcp 字段里配置服务器。每个服务器都要有唯一名字:

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

使用时可以在提示词里点名:

Use context7 to check the latest React Router docs.

名字要短且明确。context7my-documentation-search-server 更适合日常使用。

OAuth 和密钥

远程 MCP 可能需要认证。OpenCode 支持自动 OAuth;首次使用时会打开浏览器授权,也可以手动运行认证命令。

opencode mcp auth context7

如果 MCP 使用 API Key,不要把 Key 写进配置文件,使用环境变量:

{
  "headers": {
    "Authorization": "Bearer {env:MY_API_KEY}"
  }
}

密钥配置的原则很简单:仓库里只放引用,不放真实值。

控制上下文和权限

MCP 工具会进入模型的工具列表。接太多会带来两个问题:

  • 上下文变重。
  • 模型更容易选错工具。

新手建议:

  • 默认只启用 1-3 个最常用 MCP。
  • 暂时不用的服务器设置 enabled: false
  • 对高风险 MCP 使用权限控制,例如先设为 ask
  • 给特定 Agent 开特定 MCP,不要所有 Agent 都共享全部工具。

如果一个 MCP 叫 sentry,它暴露的工具通常会带 sentry_ 前缀。你可以用类似 sentry_* 的模式控制一组工具。

怎么判断配置有效

配置后先做三步验证:

  1. 列出 MCP,确认服务器存在。
  2. 如果需要认证,完成 OAuth 或 API Key 配置。
  3. 用一个只读问题测试工具是否能返回结果。

常用命令:

opencode mcp list
opencode mcp auth context7

第一次不要用会修改外部系统的 MCP 动作。先验证查询,再考虑写入。

什么时候放全局

放项目级配置:

  • 只服务当前项目。
  • 依赖当前仓库路径、项目 API、项目数据库。
  • 团队需要共享同一套工具。

放全局配置:

  • 每个项目都会用。
  • 不依赖某个仓库。
  • 你愿意长期维护它的凭据和权限。

多数 MCP 应该先放项目级,跑稳后再考虑全局。

新手常见坑

  • 一口气接十几个 MCP,模型开始乱选工具。
  • 把 API Key 写进 opencode.json
  • 忽略 OAuth 状态,以为配置了 URL 就能调用。
  • 没给 MCP 起清楚名字,导致提示词里难以指定。
  • 对能写入外部系统的 MCP 没有设置审批。

© Anomaly

最近更新: 2026年5月1日

On this page