Buckets:
| title: MCP 服务器 | |
| description: 添加本地和远程 MCP 工具。 | |
| 你可以通过 _Model Context Protocol_(MCP)为 OpenCode 添加外部工具。OpenCode 同时支持本地和远程服务器。 | |
| 添加后,MCP 工具会自动与内置工具一起提供给 LLM 使用。 | |
| #### 注意事项 | |
| 使用 MCP 服务器时,它会占用上下文空间。如果你启用了大量工具,上下文消耗会迅速增加。因此,我们建议谨慎选择要使用的 MCP 服务器。 | |
| :::tip | |
| MCP 服务器会占用你的上下文空间,所以请谨慎选择启用哪些服务器。 | |
| ::: | |
| 某些 MCP 服务器(例如 GitHub MCP 服务器)往往会消耗大量 Token,很容易超出上下文限制。 | |
| ## 启用 | |
| 你可以在 [OpenCode 配置](https://opencode.ai/docs/config/)的 `mcp` 字段下定义 MCP 服务器。为每个 MCP 指定一个唯一的名称,在提示词中可以通过该名称来引用对应的 MCP。 | |
| ```jsonc title="opencode.jsonc" {6} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "name-of-mcp-server": { | |
| // ... | |
| "enabled": true, | |
| }, | |
| "name-of-other-mcp-server": { | |
| // ... | |
| }, | |
| }, | |
| } | |
| ``` | |
| 你也可以将 `enabled` 设置为 `false` 来禁用某个服务器。当你想临时禁用某个服务器而不将其从配置中移除时,这个选项非常有用。 | |
| ### 覆盖远程默认值 | |
| 组织可以通过其 `.well-known/opencode` 端点提供默认的 MCP 服务器。这些服务器可能默认处于禁用状态,允许用户按需启用。 | |
| 要启用组织远程配置中的某个服务器,请在本地配置中添加该服务器并设置 `enabled: true`: | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "jira": { | |
| "type": "remote", | |
| "url": "https://jira.example.com/mcp", | |
| "enabled": true | |
| } | |
| } | |
| } | |
| ``` | |
| 本地配置值会覆盖远程默认值。详情请参阅[配置优先级](/docs/config#precedence-order)。 | |
| ## 本地 | |
| 通过在 MCP 对象中将 `type` 设置为 `"local"` 来添加本地 MCP 服务器。 | |
| ```jsonc title="opencode.jsonc" {15} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "my-local-mcp-server": { | |
| "type": "local", | |
| // Or ["bun", "x", "my-mcp-command"] | |
| "command": ["npx", "-y", "my-mcp-command"], | |
| "enabled": true, | |
| "environment": { | |
| "MY_ENV_VAR": "my_env_var_value", | |
| }, | |
| }, | |
| }, | |
| } | |
| ``` | |
| `command` 用于指定本地 MCP 服务器的启动命令。你还可以传入一组环境变量。 | |
| 例如,以下是添加测试用的 [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP 服务器的方法。 | |
| ```jsonc title="opencode.jsonc" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "mcp_everything": { | |
| "type": "local", | |
| "command": ["npx", "-y", "@modelcontextprotocol/server-everything"], | |
| }, | |
| }, | |
| } | |
| ``` | |
| 要使用它,可以在提示词中添加 `use the mcp_everything tool`。 | |
| ```txt "mcp_everything" | |
| use the mcp_everything tool to add the number 3 and 4 | |
| ``` | |
| #### 选项 | |
| 以下是配置本地 MCP 服务器的所有选项。 | |
| | 选项 | 类型 | 必填 | 描述 | | |
| | ------------- | ------ | ---- | ----------------------------------------------------------------- | | |
| | `type` | 字符串 | 是 | MCP 服务器连接类型,必须为 `"local"`。 | | |
| | `command` | 数组 | 是 | 运行 MCP 服务器的命令及参数。 | | |
| | `environment` | 对象 | | 运行服务器时设置的环境变量。 | | |
| | `enabled` | 布尔值 | | 启动时启用或禁用该 MCP 服务器。 | | |
| | `timeout` | 数字 | | 从 MCP 服务器获取工具的超时时间(毫秒)。默认为 5000(即 5 秒)。 | | |
| ## 远程 | |
| 通过将 `type` 设置为 `"remote"` 来添加远程 MCP 服务器。 | |
| ```json title="opencode.json" | |
| { | |
| "$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" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| `url` 是远程 MCP 服务器的地址,通过 `headers` 选项可以传入一组请求头。 | |
| #### 选项 | |
| | 选项 | 类型 | 必填 | 描述 | | |
| | --------- | ------ | ---- | ----------------------------------------------------------------- | | |
| | `type` | 字符串 | 是 | MCP 服务器连接类型,必须为 `"remote"`。 | | |
| | `url` | 字符串 | 是 | 远程 MCP 服务器的 URL。 | | |
| | `enabled` | 布尔值 | | 启动时启用或禁用该 MCP 服务器。 | | |
| | `headers` | 对象 | | 随请求发送的请求头。 | | |
| | `oauth` | 对象 | | OAuth 身份验证配置。详见下方 [OAuth](#oauth) 部分。 | | |
| | `timeout` | 数字 | | 从 MCP 服务器获取工具的超时时间(毫秒)。默认为 5000(即 5 秒)。 | | |
| ## OAuth | |
| OpenCode 会自动处理远程 MCP 服务器的 OAuth 身份验证。当服务器需要身份验证时,OpenCode 将: | |
| 1. 检测 401 响应并启动 OAuth 流程 | |
| 2. 在服务器支持的情况下使用**动态客户端注册(RFC 7591)** | |
| 3. 安全地存储 Token 以供后续请求使用 | |
| ### 自动认证 | |
| 对于大多数支持 OAuth 的 MCP 服务器,无需特殊配置。只需配置远程服务器即可: | |
| ```json title="opencode.json" | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "my-oauth-server": { | |
| "type": "remote", | |
| "url": "https://mcp.example.com/mcp" | |
| } | |
| } | |
| } | |
| ``` | |
| 如果服务器需要身份验证,OpenCode 会在你首次使用时提示你进行认证。你也可以使用 `opencode mcp auth <server-name>` [手动触发认证流程](#authenticating)。 | |
| ### 预注册 | |
| 如果你已经从 MCP 服务器提供商处获得了客户端凭据,可以直接配置: | |
| ```json title="opencode.json" {7-11} | |
| { | |
| "$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" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ### 身份验证 | |
| 你可以手动触发身份验证或管理凭据。 | |
| 对特定 MCP 服务器进行身份验证: | |
| ```bash | |
| opencode mcp auth my-oauth-server | |
| ``` | |
| 列出所有 MCP 服务器及其认证状态: | |
| ```bash | |
| opencode mcp list | |
| ``` | |
| 删除已存储的凭据: | |
| ```bash | |
| opencode mcp logout my-oauth-server | |
| ``` | |
| `mcp auth` 命令会打开浏览器进行授权。授权完成后,OpenCode 会将 Token 安全地存储在 `~/.local/share/opencode/mcp-auth.json` 中。 | |
| #### 禁用 OAuth | |
| 如果你想为某个服务器禁用自动 OAuth(例如,该服务器使用 API 密钥而非 OAuth),可以将 `oauth` 设置为 `false`: | |
| ```json title="opencode.json" {7} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "my-api-key-server": { | |
| "type": "remote", | |
| "url": "https://mcp.example.com/mcp", | |
| "oauth": false, | |
| "headers": { | |
| "Authorization": "Bearer {env:MY_API_KEY}" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| #### OAuth 选项 | |
| | 选项 | 类型 | 描述 | | |
| | -------------- | --------------- | ------------------------------------------------------ | | |
| | `oauth` | 对象 \| `false` | OAuth 配置对象,或设为 `false` 以禁用 OAuth 自动检测。 | | |
| | `clientId` | 字符串 | OAuth 客户端 ID。如果未提供,将尝试动态客户端注册。 | | |
| | `clientSecret` | 字符串 | OAuth 客户端密钥(如果授权服务器要求提供)。 | | |
| | `scope` | 字符串 | 授权时请求的 OAuth 作用域。 | | |
| #### 调试 | |
| 如果远程 MCP 服务器身份验证失败,你可以通过以下方式诊断问题: | |
| ```bash | |
| # 查看所有支持 OAuth 的服务器的认证状态 | |
| opencode mcp auth list | |
| # 调试特定服务器的连接和 OAuth 流程 | |
| opencode mcp debug my-oauth-server | |
| ``` | |
| `mcp debug` 命令会显示当前认证状态、测试 HTTP 连接,并尝试执行 OAuth 发现流程。 | |
| ## 管理 | |
| 你的 MCP 在 OpenCode 中作为工具使用,与内置工具并列。因此,你可以像管理其他工具一样,通过 OpenCode 配置来管理它们。 | |
| ### 全局 | |
| 你可以全局启用或禁用 MCP 工具。 | |
| ```json title="opencode.json" {14} | |
| { | |
| "$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 模式来禁用所有匹配的 MCP。 | |
| ```json title="opencode.json" {14} | |
| { | |
| "$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*` 来禁用所有 MCP。 | |
| ### 按代理配置 | |
| 如果你有大量 MCP 服务器,可以选择全局禁用它们,然后仅在特定代理中启用。具体做法: | |
| 1. 全局禁用该工具。 | |
| 2. 在[代理配置](/docs/agents#tools)中,将 MCP 服务器作为工具启用。 | |
| ```json title="opencode.json" {11, 14-18} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "my-mcp": { | |
| "type": "local", | |
| "command": ["bun", "x", "my-mcp-command"], | |
| "enabled": true | |
| } | |
| }, | |
| "tools": { | |
| "my-mcp*": false | |
| }, | |
| "agent": { | |
| "my-agent": { | |
| "tools": { | |
| "my-mcp*": true | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| #### Glob 模式 | |
| glob 模式使用简单的正则通配符规则: | |
| - `*` 匹配零个或多个任意字符(例如,`"my-mcp*"` 匹配 `my-mcp_search`、`my-mcp_list` 等) | |
| - `?` 匹配恰好一个字符 | |
| - 其他字符按字面值匹配 | |
| :::note | |
| MCP 服务器工具在注册时以服务器名称作为前缀,因此要禁用某个服务器的所有工具,只需使用: | |
| ``` | |
| "mymcpservername_*": false | |
| ``` | |
| ::: | |
| ## 示例 | |
| 以下是一些常见 MCP 服务器的配置示例。如果你想记录其他服务器的用法,欢迎提交 PR。 | |
| ### Sentry | |
| 添加 [Sentry MCP 服务器](https://mcp.sentry.dev) 以与你的 Sentry 项目和问题进行交互。 | |
| ```json title="opencode.json" {4-8} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "sentry": { | |
| "type": "remote", | |
| "url": "https://mcp.sentry.dev/mcp", | |
| "oauth": {} | |
| } | |
| } | |
| } | |
| ``` | |
| 添加配置后,使用 Sentry 进行身份验证: | |
| ```bash | |
| opencode mcp auth sentry | |
| ``` | |
| 这会打开浏览器窗口完成 OAuth 流程,将 OpenCode 连接到你的 Sentry 账户。 | |
| 认证完成后,你可以在提示词中使用 Sentry 工具来查询问题、项目和错误数据。 | |
| ```txt "use sentry" | |
| Show me the latest unresolved issues in my project. use sentry | |
| ``` | |
| ### Context7 | |
| 添加 [Context7 MCP 服务器](https://github.com/upstash/context7) 以搜索文档。 | |
| ```json title="opencode.json" {4-7} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "context7": { | |
| "type": "remote", | |
| "url": "https://mcp.context7.com/mcp" | |
| } | |
| } | |
| } | |
| ``` | |
| 如果你注册了免费账户,可以使用 API 密钥来获得更高的速率限制。 | |
| ```json title="opencode.json" {7-9} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "context7": { | |
| "type": "remote", | |
| "url": "https://mcp.context7.com/mcp", | |
| "headers": { | |
| "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| 这里假设你已经设置了 `CONTEXT7_API_KEY` 环境变量。 | |
| 在提示词中添加 `use context7` 即可使用 Context7 MCP 服务器。 | |
| ```txt "use context7" | |
| Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7 | |
| ``` | |
| 你也可以在 [AGENTS.md](/docs/rules/) 中添加类似的规则。 | |
| ```md title="AGENTS.md" | |
| When you need to search docs, use `context7` tools. | |
| ``` | |
| ### Grep by Vercel | |
| 添加 [Grep by Vercel](https://grep.app) MCP 服务器以搜索 GitHub 上的代码片段。 | |
| ```json title="opencode.json" {4-7} | |
| { | |
| "$schema": "https://opencode.ai/config.json", | |
| "mcp": { | |
| "gh_grep": { | |
| "type": "remote", | |
| "url": "https://mcp.grep.app" | |
| } | |
| } | |
| } | |
| ``` | |
| 由于我们将 MCP 服务器命名为 `gh_grep`,你可以在提示词中添加 `use the gh_grep tool` 来让代理使用它。 | |
| ```txt "use the gh_grep tool" | |
| What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool | |
| ``` | |
| 你也可以在 [AGENTS.md](/docs/rules/) 中添加类似的规则。 | |
| ```md title="AGENTS.md" | |
| If you are unsure how to do something, use `gh_grep` to search code examples from GitHub. | |
| ``` | |
Xet Storage Details
- Size:
- 13.6 kB
- Xet hash:
- 8f0b17ddff4e8e2bdb2fbe1ad3e1432e6cf77ac47866eb65a8b1f051bebcc616
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.