MCP 扩展机制:OpenCode 如何通过 Model Context Protocol 接入外部工具

简介: MCP(Model Context Protocol)是连接AI编程助手与外部工具的开放协议,如数据库、API、Jira、Salesforce等。它通过标准化“插头”式接口,支持本地/远程服务器接入,实现安全、灵活、按需调用。OpenCode已深度集成MCP,助力AI真正落地业务场景。

如果你用过 OpenCode,大概已经见识过它作为 AI 编程助手的本事——读代码、写代码、跑测试、修 bug,一套流程走得挺顺。但说句实在话,再厉害的 AI 编程助手,如果只能在自己的小圈子里转悠,能做的事情终究有限。真正让它“好用”的,是能不能跟外面的世界打通——能不能查数据库、调 API、操作 Jira 工单、连 Salesforce 查客户信息。

这就是 MCP 要解决的事情。

MCP 是什么?
Model Context Protocol(MCP)是一个开放协议,专门用来连接 LLM 应用和外部数据源、工具。你可以把它理解成一个标准化的“插头”——不管你在用 Claude、Cursor 还是 OpenCode,只要支持 MCP,就能用同一套方式接上各种各样的外部工具。

MCP 采用的是客户端-主机-服务器架构。听起来有点绕,拆开看就清楚了:

Host(主机) :就是 OpenCode 本身,负责创建和管理客户端、控制权限、协调 AI 模型。
Client(客户端) :主机为每个 MCP 服务器创建一个客户端,负责跟对应的服务器通信。
Server(服务器) :真正干活的地方,暴露工具、资源和提示词给 AI 用。
MCP 基于 JSON-RPC 2.0 通信,而且是无状态的——每个请求都自包含,带上协议版本、客户端标识和能力声明。这种设计让服务器可以跑在本地,也可以部署成远程服务,很灵活。

OpenCode 怎么接入 MCP?
OpenCode 对 MCP 的支持挺彻底的。你可以在 OpenCode 配置文件的 mcp 字段下定义 MCP 服务器。配置好了之后,MCP 提供的工具会自动跟 OpenCode 的内置工具合并,一起提供给 LLM 使用。

接入方式分两种:本地服务器和远程服务器。

本地 MCP 服务器
本地服务器就是把 MCP 服务器当成一个子进程跑起来,通过标准输入输出(stdio)跟 OpenCode 通信。

配置方法很简单,在 opencode.json 里加一段:

{
"mcp": {
"everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"]
}
}
}
这里 type 必须是 "local",command 是启动服务器的命令和参数。你还可以配置 environment 传环境变量、timeout 设超时时间(默认 5 秒)、enabled 控制是否启用。

配置好之后,在提示词里直接说“use the mcp_everything tool”就能用了。

远程 MCP 服务器
远程服务器走 HTTP 通信,适合那些部署在云端的服务。配置方式类似,只是 type 改成 "remote",再加一个 url:

{
"mcp": {
"composio": {
"type": "remote",
"url": "https://connect.composio.dev/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}
远程服务器还支持 OAuth 认证。如果你的 MCP 服务器需要登录授权,可以在配置里加 oauth 字段。

一个更优雅的方式:Skill 嵌入 MCP
除了直接在全局配置里加 MCP 服务器,OpenCode 还有一个更 neat 的方式——把 MCP 服务器嵌在 Skill 里。

具体做法是在 Skill 的 markdown 文件的 YAML frontmatter 里定义 MCP 服务器:


name:my-skill
description:"A skill that uses a custom MCP server"
mcp:
my-server:
command:["npx","-y","@some/mcp-server"]
environment:

  API_KEY:"${MY_API_KEY}"

或者直接在 Skill 目录里放一个 mcp.json 文件也行。

这样做的好处是:Skill 自己管自己的 MCP 依赖,不用改全局配置。加载 Skill 的时候,插件会自动发现并连接对应的 MCP 服务器。连接是懒加载的——第一次用的时候才连,5 分钟不用自动断开清理。很省心。

一个完整的例子:接上 Salesforce
光说不练假把式。我们拿 Salesforce 举个例子,看看怎么把真实的业务工具接进 OpenCode。

用 Composio 的 MCP 网关来连 Salesforce。有两种方式:

方式一:用 Composio CLI

先装 CLI 并登录:

npx composio-cli login
然后在 OpenCode 里让 AI 去认证:

“Authenticate with Salesforce Composio”

走完浏览器里的授权流程就行了。

方式二:直接在 OpenCode 配置里加

在 opencode.json 的 mcp 字段里加:

{
"mcp": {
"composio": {
"type": "remote",
"url": "https://connect.composio.dev/mcp"
}
}
}
然后同样让 AI 去触发认证流程。

搞定之后,你就可以在 OpenCode 里直接问:

“Add new contact to spring campaign”

或者

“Clone opportunity with all associated products”

OpenCode 的 Agent 会通过 MCP 调用 Salesforce 的对应工具来完成任务。

值得注意的几个点
上下文占用:MCP 服务器会占用 LLM 的上下文空间。工具越多,占用的 token 越多。有些服务器(比如 GitHub MCP)消耗特别大,很容易撑爆上下文限制。所以别什么都往里加,按需配置。

安全边界:MCP 的设计原则之一就是服务器之间相互隔离——每个服务器只拿到它需要的信息,看不到整个对话历史,也看不到其他服务器在干什么。主机(OpenCode)负责维护这个安全边界。但工具本身可能涉及任意代码执行,调用工具之前 OpenCode 会征求用户同意。

capability 协商:MCP 用了一套能力协商机制——客户端和服务器在每次请求里声明自己支持什么功能。服务器得声明自己支持 tools,客户端才能调用工具。这套机制保证了扩展的灵活性——双方可以按需增加新能力,不用等协议升级。

小结
MCP 解决了一个很实际的问题:AI 编程助手不能活在真空中。通过 MCP,OpenCode 可以接上本地跑的命令行工具,也可以连上远端的 SaaS 服务,而且接入方式标准化了——不用为每个工具写一遍胶水代码。

配置上,你可以走全局的 opencode.json,也可以走 Skill 自带的 MCP 定义。哪种方式更适合你,取决于具体的使用场景。但不管怎么选,底层逻辑是一样的:MCP 服务器暴露工具 → OpenCode 发现并注册这些工具 → LLM 在需要的时候调用它们。

说到底,MCP 就是个“USB 接口”——让 AI 能插上各种外设,干更多活。OpenCode 把这个接口做得很扎实,剩下的就看你能接上多少好玩的东西了。

相关文章
|
2月前
|
人工智能 缓存 JavaScript
保姆级教程:OpenCode 14 个社区插件 + 6 个实战案例,建议收藏,手把手带你打造最强 AI 编码环境
OpenCode 插件使用保姆级教程:14 个社区插件 + 6 个实战案例,从加载规则到开发实战,手把手带你打造最强 AI 编码环境。建议收藏!
1186 10
|
2月前
|
人工智能 运维 API
OpenCode vs Codex:一个国内AI用户的真实体验对比
国内AI开发者实测:Codex接入国产模型需两天折腾代理与配置,而OpenCode仅5分钟即用,支持57个国产模型一键切换、全链路稳定、原生中文友好。闭眼选OpenCode!
|
2月前
|
人工智能 自然语言处理 运维
基于阿里云云联络中心:智能云客服与普通在线客服架构深度对比,附 RAG/NLU 完整代码实战与落地踩坑优化方案
多数企业分不清传统在线客服规则引擎与阿里云云联络中心 LLM+RAG 智能架构,盲目上线智能客服后投诉上涨、服务效率反向下滑。本文从底层架构、代码实战、落地场景多维度拆解两类系统差异,附 4 段可直接运行的 Python 代码,复盘 8 大高频踩坑点,输出标准化灰度上线与知识库迭代方案,助力技术人员完成客服系统选型与二次开发。
273 1
|
5月前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
50788 72
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
3月前
|
人工智能 安全 Cloud Native
2026年企业级 AI 编程助手研发治理与选型完整指南
本文基于云原生微服务与大模型底座融合的研发现状,对市场主流五款AI编程工具进行多维度横向评测,围绕云生态适配、企业资产治理、代码可控性、隐私部署、智能体架构五大核心评估维度,拆解各产品核心能力,并面向企业管理者、架构师、独立开发者三类人群给出精准选型方案,解决引入AI工具后技术债泛滥、密钥泄露、代码幻觉、部署合规等研发治理痛点。
475 8
|
3月前
|
JavaScript 前端开发 网络协议
深入理解 Node.js 事件循环机制
本文深入剖析 Node.js 事件循环本质:它由 libuv 驱动(非 V8),含 timers/poll/check 等六阶段;详解 `nextTick`(优先级最高)、Promise 微任务与宏任务的执行时序;厘清 `setTimeout(0)` 与 `setImmediate` 的执行差异;揭示线程池(默认4线程)对 fs/crypto 等操作的影响;强调避免同步阻塞主线程。助你真正掌握异步调度逻辑。(239字)
295 7
深入理解 Node.js 事件循环机制
|
3月前
|
数据采集 边缘计算 安全
边缘计算与云端协同:老旧注塑机如何通过VBOX实现全量数据上云?
本文介绍智象九维VBOX注塑机边缘网关,首创非侵入式旁路部署技术,无需停机破线,安全监听RS-485/CAN等总线;内置2000+协议解析引擎,支持海天、弘讯等多品牌老旧设备;结合云边协同架构,实现高频数据滤波、特征提取、断点续传,并无缝对接阿里云IoT平台与TSDB,构建高可靠工业数据底座。(239字)
513 8
|
2月前
|
人工智能 前端开发 API
开源「仓颉.Skill」2.0,你现在可以蒸馏任何视频!
感谢大家支持,仓颉.skill(cangjie-skill)1.3K Star了!
1108 3