HoRain云--OpenCode MCP 服务器配置
🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》⛺️生活的理想,就是为了理想的生活!专栏名称专栏介绍《C语言》本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。《网络协议》本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!《docker容器精解篇》全面深入解析 d

🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
|
专栏名称 |
专栏介绍 |
|
本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 |
|
|
本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! |
|
|
全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 |
|
|
本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 |
|
|
本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 |
|
|
本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录

MCP(Model Context Protocol,模型上下文协议)是一种开放协议,允许你为 OpenCode 接入外部工具和数据源。添加 MCP 服务器后,其提供的工具会自动与 OpenCode 的内置工具并列,LLM 可以在对话中直接调用它们。
OpenCode 同时支持两种 MCP 服务器:
- 本地(local):在你的机器上通过命令行启动的 MCP 进程,适合本地工具和脚本
- 远程(remote):通过 HTTPS 连接的远端 MCP 服务,适合云端服务和第三方平台
上下文消耗提醒:每个 MCP 服务器都会占用对话的上下文空间。启用的工具越多,每次对话消耗的 Token 越多,越容易触达模型的上下文上限。建议只启用当前任务实际需要的 MCP 服务器,用完即关。某些服务器(如 GitHub MCP)工具数量众多,Token 消耗尤其显著,使用时请格外注意。
基础配置结构
所有 MCP 服务器配置写在 opencode.json 的 mcp 字段下。每个服务器需要一个唯一的名称作为键名,该名称也可以在提示词中用来指定调用哪个 MCP:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-server": { // 服务器名称(自定义,全局唯一)
"type": "local", // 连接类型:local 或 remote
// ...其他配置项
"enabled": true // 是否启用,默认为 true
},
"another-mcp-server": { // 可同时配置多个 MCP 服务器
"type": "remote",
// ...
}
}
}
将 enabled 设置为 false 可以临时禁用某个服务器,而无需将其从配置文件中删除,方便按需开关:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-server": {
"type": "local",
"command": ["npx", "-y", "my-mcp-command"],
"enabled": false // 暂时禁用,配置保留,下次需要时改回 true 即可
}
}
}
本地 MCP 服务器
本地 MCP 服务器通过在你的机器上运行一个命令进程来提供工具。将 type 设置为 "local",并通过 command 指定启动命令:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local", // 连接类型:本地
"command": ["npx", "-y", "my-mcp-command"], // 启动命令数组:
// 第一个元素是可执行文件,
// 后续元素是参数
// 也可以写成 ["bun", "x", "my-mcp-command"]
"enabled": true,
"environment": { // 运行时注入的环境变量(可选)
"MY_ENV_VAR": "my_env_var_value"
}
}
}
}
本地服务器配置项
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
type |
字符串 | 是 | 连接类型,本地服务器必须填写 "local" |
command |
数组 | 是 | 启动 MCP 服务器的命令及参数,数组形式,如 ["npx", "-y", "my-mcp"] |
environment |
对象 | 否 | 运行服务器时注入的环境变量,键值对形式 |
enabled |
布尔值 | 否 | 是否在启动时启用该服务器,默认为 true |
timeout |
数字 | 否 | 从 MCP 服务器获取工具列表的超时时间(毫秒),默认为 5000(5 秒) |
示例:添加测试用 MCP 服务器
以下是添加官方测试用 MCP 服务器 @modelcontextprotocol/server-everything 的示例,可用于验证 MCP 功能是否正常工作:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"]
// npx -y 表示自动确认安装,无需手动 npm install
}
}
}
配置完成后,在提示词中加入服务器名称,即可让 LLM 调用该 MCP 的工具:
use the mcp_everything tool to add the number 3 and 4
远程 MCP 服务器
远程 MCP 服务器通过 HTTPS 连接到云端服务。将 type 设置为 "remote",并通过 url 指定服务器地址:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote", // 连接类型:远程
"url": "https://my-mcp-server.com", // 远程服务器地址(必填)
"enabled": true,
"headers": { // 随请求发送的 HTTP 请求头(可选)
"Authorization": "Bearer MY_API_KEY" // 常用于 API 密钥认证
}
}
}
}
远程服务器配置项
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
type |
字符串 | 是 | 连接类型,远程服务器必须填写 "remote" |
url |
字符串 | 是 | 远程 MCP 服务器的完整 HTTPS 地址 |
enabled |
布尔值 | 否 | 是否在启动时启用该服务器,默认为 true |
headers |
对象 | 否 | 随每次请求发送的 HTTP 请求头,常用于 API 密钥认证 |
oauth |
对象 / false |
否 | OAuth 身份验证配置,或设为 false 禁用自动 OAuth 检测 |
timeout |
数字 | 否 | 从 MCP 服务器获取工具列表的超时时间(毫秒),默认为 5000(5 秒) |
引用环境变量
在配置文件中,不应将 API 密钥等敏感信息直接写成明文。OpenCode 支持通过 {env:变量名} 语法在运行时读取系统环境变量:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}" // 运行时自动读取环境变量 MY_API_KEY 的值
// 需要提前在系统中设置该环境变量:
// export MY_API_KEY=your_actual_key
}
}
}
}
OAuth 身份验证
OpenCode 内置了对远程 MCP 服务器的 OAuth 身份验证支持,整个流程几乎全自动,无需手动处理 Token。
自动认证流程
当服务器需要 OAuth 认证时,OpenCode 会自动完成以下步骤:
- 检测到服务器返回 401(未授权)响应
- 自动启动 OAuth 授权流程,打开浏览器引导你完成登录
- 在服务器支持的情况下,使用动态客户端注册(RFC 7591)自动注册应用
- 将获取到的 Token 安全存储在
~/.local/share/opencode/mcp-auth.json中 - 后续请求自动携带 Token,无需重复登录
1、自动 OAuth(无需额外配置)
对于大多数支持 OAuth 的 MCP 服务器,只需配置 url 即可,OpenCode 会在首次使用时自动引导你完成认证:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
// 无需任何额外配置,OpenCode 自动处理 OAuth 流程
}
}
}
也可以手动触发认证流程(例如 Token 过期后重新登录):
opencode mcp auth my-oauth-server
2、预注册客户端凭据
如果你已经从服务提供商处拿到了固定的客户端 ID 和密钥,可以直接在配置中指定,跳过动态注册步骤:
实例
{
"$schema": "https://opencode.ai/config.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" // 请求的权限范围,具体值由服务提供商规定
}
}
}
}
3、禁用 OAuth(使用 API 密钥认证)
如果服务器使用 API 密钥而非 OAuth 认证,可以将 oauth 设为 false 禁用自动 OAuth 检测,改用 headers 传递密钥:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false, // 禁用 OAuth 自动检测
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}" // 直接用 API 密钥认证
}
}
}
}
OAuth 配置项
| 配置项 | 类型 | 说明 |
|---|---|---|
oauth |
对象 / false |
OAuth 配置对象;设为 false 可完全禁用 OAuth 自动检测 |
clientId |
字符串 | OAuth 客户端 ID。若未提供,OpenCode 将尝试动态客户端注册 |
clientSecret |
字符串 | OAuth 客户端密钥(如果授权服务器要求提供) |
scope |
字符串 | 授权时请求的权限范围,多个权限用空格分隔,具体值由服务提供商规定 |
认证管理命令
OpenCode 提供了一组命令行工具用于管理 MCP 的认证状态:
# 对指定 MCP 服务器进行身份验证(会打开浏览器完成 OAuth 授权) opencode mcp auth my-oauth-server # 列出所有已配置的 MCP 服务器及其当前认证状态 opencode mcp list # 删除指定服务器已存储的凭据(下次使用时需要重新登录) opencode mcp logout my-oauth-server # 调试指定服务器的连接和 OAuth 流程(显示认证状态、测试连接、执行 OAuth 发现流程) opencode mcp debug my-oauth-server # 查看所有支持 OAuth 的服务器的认证状态 opencode mcp auth list
覆盖远程默认配置
组织可以通过 .well-known/opencode 端点为成员提供预置的 MCP 服务器配置,这些服务器可能默认处于禁用状态。如果你需要启用其中某个服务器,在本地配置中添加同名条目并设置 enabled: true 即可,本地配置会覆盖远程默认值:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": { // 与组织远程配置中的服务器名称一致
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true // 本地设为 true,覆盖远程的默认禁用状态
}
}
}
工具管理
MCP 服务器注册后,其工具会以 服务器名称_工具名称 的形式出现在 OpenCode 的工具列表中,可以通过 tools 字段进行统一管理。
1、全局禁用指定 MCP 的工具
实例
{
"$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 // 禁用 my-mcp-foo 服务器的所有工具(服务器仍会启动,但工具不可用)
}
}
2、使用 Glob 模式批量禁用
使用 Glob 通配符可以一次性匹配并禁用多个 MCP 服务器的工具:
实例
{
"$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*": false // Glob 模式:禁用所有名称以 my-mcp 开头的服务器的工具
}
}
3、按代理启用特定 MCP 工具
如果你配置了大量 MCP 服务器,但每个代理只需要其中一部分,可以先全局禁用所有 MCP 工具,再在特定代理的配置中按需启用。这样可以精确控制每个代理能访问哪些工具,避免上下文浪费:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true // 服务器本身保持启动状态(否则代理也无法使用)
}
},
"tools": {
"my-mcp*": false // 第一步:全局禁用该 MCP 的所有工具,默认对话中不可用
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true // 第二步:仅在 my-agent 代理中启用,其他代理不受影响
}
}
}
}
Glob 模式规则
| 通配符 | 含义 | 示例 |
|---|---|---|
* |
匹配零个或多个任意字符 | my-mcp* 匹配 my-mcp_search、my-mcp_list 等 |
? |
精确匹配一个任意字符 | my-mcp? 匹配 my-mcpA,但不匹配 my-mcpAB |
| 其他字符 | 按字面值精确匹配 | my-mcp-foo 只匹配名称完全相同的服务器 |
MCP 服务器的工具在注册时会以服务器名称作为前缀,例如服务器
myserver的工具会注册为myserver_toolname。因此,要禁用某个服务器的所有工具,使用"myserver_*": false即可精确匹配。
配置示例
Sentry
添加 Sentry MCP 服务器,可以在对话中直接查询 Sentry 项目的错误、问题和事件数据:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {} // 空对象表示启用 OAuth 自动认证,OpenCode 会自动处理整个 OAuth 流程
}
}
}
添加配置后,执行以下命令完成账号授权(会打开浏览器进行 OAuth 登录):
opencode mcp auth sentry
认证完成后,在提示词中加入 use sentry 即可调用 Sentry 工具:
Show me the latest unresolved issues in my project. use sentry
Context7
添加 Context7 MCP 服务器,可以在对话中搜索各类技术文档,帮助 LLM 获取最新准确的 API 参考:
实例
// 基础版(无速率限制优化)
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
实例
// 注册免费账户后,使用 API 密钥可获得更高的速率限制
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}" // 从环境变量读取 API 密钥
// 需提前设置:export CONTEXT7_API_KEY=your_key
}
}
}
}
在提示词中加入 use context7 即可调用文档搜索功能:
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
也可以在项目的 AGENTS.md 中添加全局规则,让 LLM 在需要查阅文档时自动使用 Context7,无需每次手动指定:
When you need to search docs, use `context7` tools.
Grep by Vercel
添加 Grep by Vercel MCP 服务器,可以直接在对话中搜索 GitHub 上的真实代码片段,帮助 LLM 找到正确的 API 用法和实现参考:
实例
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": { // 服务器命名为 gh_grep,提示词中通过此名称引用
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
在提示词中加入 use the gh_grep tool 即可搜索 GitHub 上的代码示例:
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
同样可以在 AGENTS.md 中设置全局规则,让 LLM 在不确定用法时自动搜索代码示例:
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐




所有评论(0)