Context7 OpenCode 插件实战:一条命令为 OpenCode 接入 Context7 MCP 服务器与文档技能
Context7 OpenCode 插件实战一条命令为 OpenCode 接入 Context7 MCP 服务器与文档技能【免费下载链接】context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors项目地址: https://gitcode.com/gh_mirrors/co/context7Context7 OpenCode 插件upstash/context7-opencode用于解决 AI 编码助手的典型痛点训练数据过时与 API 幻觉。它通过一条命令为 OpenCode 注册托管的 Context7 MCP 服务器提供context7_resolve-library-id与context7_query-docs两个工具并自动安装context7-mcp技能让你在询问库、框架用法时自动拉取源头仓库中的最新文档。读完本文你可以完成插件的安装、API Key / OAuth 两种鉴权方式的配置并理解插件修改 OpenCode 配置的底层机制与覆盖规则。插件包含什么安装插件后OpenCode 会新增两类能力两者都是**增量additive**注入MCP Server托管的 Context7 服务器暴露context7_resolve-library-id检索库并返回 Context7 兼容 ID和context7_query-docs按问题相关性排序拉取文档两个工具Skillcontext7-mcp技能当你的提问涉及某个库如 React、Next.js、Prisma、Supabase时自动触发文档检索。从源码结构看插件本体只有一个入口文件 packages/opencode/src/index.ts其中定义了托管端点常量与服务器名const MCP_BASE_URL https://mcp.context7.com; const MCP_URL ${MCP_BASE_URL}/mcp; const MCP_OAUTH_URL ${MCP_BASE_URL}/mcp/oauth; const MCP_SERVER_NAME context7;见 src/index.ts没有 API Key 时走 OAuth 端点/mcp/oauth有 API Key 时走普通端点/mcp并用请求头鉴权。安装在项目目录中执行opencode plugin upstash/context7-opencode该命令会安装插件并将其写入 OpenCode 配置。也可以手动编辑opencode.json{ $schema: https://opencode.ai/config.json, plugin: [upstash/context7-opencode] }安装后重启 OpenCode。首次文档查询时OpenCode 会自动打开浏览器窗口让你通过 OAuth 登录 Context7从而使用你账户对应的速率限制。鉴权OAuth 默认API Key 可覆盖插件的鉴权优先级在 src/index.ts 中一行代码即可确认const apiKey nonEmptyString(options?.apiKey) ?? nonEmptyString(process.env.CONTEXT7_API_KEY);即插件选项apiKey优先于环境变量CONTEXT7_API_KEY两者都缺省时走 OAuth 流程。环境变量方式适合无头机器OAuth 是默认方式且无需配置。如果要在无浏览器的机器上使用 API Key可在 Context7 dashboard 创建密钥后启动 OpenCode 前导出# e.g. in ~/.zshrc or ~/.bashrc export CONTEXT7_API_KEYyour-api-key插件会自动拾取CONTEXT7_API_KEY并以Authorization请求头发送跳过 OAuth 流程。插件选项方式{ $schema: https://opencode.ai/config.json, plugin: [[upstash/context7-opencode, { apiKey: your-api-key }]] }从源码看Context7PluginOptions接口只声明了可选的apiKey字段src/index.ts这是插件目前暴露的唯一配置项。插件如何改写 OpenCode 配置核心逻辑在applyContext7Config函数src/index.tsfunction applyContext7Config(config: Config, apiKey: string | undefined): void { config.mcp ?? {}; config.mcp[MCP_SERVER_NAME] ?? apiKey ? { type: remote, url: MCP_URL, enabled: true, headers: { Authorization: Bearer ${apiKey} }, oauth: false, } : { type: remote, url: MCP_OAUTH_URL, enabled: true }; const withSkills config as ConfigWithSkills; withSkills.skills ?? {}; const skillPaths (withSkills.skills.paths ?? []); if (!skillPaths.includes(SKILLS_DIR)) { skillPaths.push(SKILLS_DIR); } }这段代码解释了 README 中“覆盖规则”的成因??语义保证用户配置永远优先config.mcp[context7] ?? ...意味着如果你的opencode.json已经定义了名为context7的 MCP 服务器插件会原样保留你的定义不会注入任何内容有/无 API Key 生成不同的服务器配置带 Key 时注入headers: { Authorization: Bearer ... }并显式设置oauth: false不带 Key 时指向 OAuth 端点技能路径去重SKILLS_DIR指向插件包内的skills/目录发布物中包含skills文件见 package.json 的files字段仅在skills.paths尚未包含该路径时追加因此重复加载不会产生重复技能。另外源码中有一处对旧版加载器的防御性注释/** Only the default export. Any other export is loaded as a second plugin by the legacy loader. */说明该包刻意只保留默认导出避免旧版插件加载器把其它导出当第二个插件重复执行。使用方式技能自动触发context7-mcp技能会在你询问库相关内容时自动触发无需显式调用例如“How do I set up authentication in Next.js 15?”“Show me React Server Components examples”“Whats the Prisma syntax for relations?”技能的完整行为定义在 SKILL.md 中其 frontmatter 的description明确了触发条件询问库/框架/API 参考、需要代码示例、提到 React/Vue/Next.js/Prisma/Supabase 等框架并规定了四步检索流程Step 1 — 解析库 ID调用resolve-library-id传入libraryName从用户问题中提取和query要在文档中查什么用于提升相关性排序Step 2 — 选择最佳匹配依据名称精确度、benchmark 分数分数越高文档质量越好以及版本提示如用户提到 “React 19” 时优先选版本化 IDStep 3 — 拉取文档调用query-docs传入libraryId与限定为单一概念的query。若问题跨多个概念如路由 鉴权 缓存需对同一libraryId分别发起多次query-docs因为合并查询会稀释排序、使每个话题的结果都变浅Step 4 — 引用文档作答用检索到的最新信息回答问题、附带文档中的代码示例、在相关时注明库版本。技能还给出了两条重要准则多个匹配时优先官方/主包而非社区 fork提及版本时优先使用版本化的库 ID。可用工具context7_resolve-library-id搜索库并返回 Context7 兼容标识符Input: next.js Output: { id: /vercel/next.js, name: Next.js, versions: [v15.1.8, v14.2.0, ...] }context7_query-docs拉取特定库的文档并按与问题的相关性排序Input: { libraryId: /vercel/next.js, query: app router middleware } Output: Relevant documentation snippets with code examples这两个工具由托管的 Context7 MCP 服务器提供服务器实现可参考 packages/mcp/src/index.ts其中工具入参带有别名重写机制用于纠正 LLM 客户端偶发的参数名幻觉例如将userQuery/question归一为query。版本钉选Version Pinning要获取特定版本的文档在库 ID 中追加版本号/vercel/next.js/v15.1.8 /supabase/supabase/v2.45.0context7_resolve-library-id工具会返回可用版本列表便于你挑选与项目匹配的版本。构建与发布形态包名upstash/context7-opencode当前版本 0.1.0MIT 许可见 package.json 与 CHANGELOG.md构建配置 tsup.config.ts 显示入口为src/index.ts仅产出ESMformat: [esm]、目标node20、带类型声明与 sourcemapopencode-ai/plugin被标记为 external依赖方面仅opencode-ai/plugin^1.18.11、tsup、typescript等开发依赖运行时无第三方运行时依赖。小结与延伸阅读该插件以极小的实现面完成了三件事按apiKey有无生成两种 MCP 服务器配置、去重注入技能路径、并以??语义保证用户配置不受污染。安装后你只需自然语言提问技能层会自动完成“解析库 ID → 选择匹配 → 分概念查询 → 引用作答”的完整链路。仓库中 OpenCode 客户端的完整指南含npx ctx7 setup --opencode替代方案、opencode mcp auth context7预鉴权命令、AGENTS.md配置提示等见 docs/clients/opencode.mdx插件包内技能完整定义见 packages/opencode/skills/context7-mcp/SKILL.md插件入口与配置注入逻辑见 packages/opencode/src/index.ts。【免费下载链接】context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors项目地址: https://gitcode.com/gh_mirrors/co/context7创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

IOPaint一键部署:从双击到出图

IOPaint一键部署:从双击到出图

IOPaint一键部署:从双击到出图 【免费下载链接】IOPaint Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your pictures. 项…

2026/11/12 0:53:36 阅读更多 →
Agent Skills实战拆解:从提示词工程到科研自动化技能包

Agent Skills实战拆解:从提示词工程到科研自动化技能包

如果你最近在折腾 Agent 开发,肯定能感觉到圈子里的风向变了。以前大家拿到需求,第一反应是写一个包治百病的 system prompt,把目标、约束、话术全塞进去,指望大模型自由发挥;现在越来越多团队开始把能力拆开&#xff…

2026/10/28 18:47:09 阅读更多 →
Chart.js 在 Node.js 中服务端渲染图表:从文档示例到源码级实现原理

Chart.js 在 Node.js 中服务端渲染图表:从文档示例到源码级实现原理

Chart.js 在 Node.js 中服务端渲染图表:从文档示例到源码级实现原理 【免费下载链接】Chart.js Simple HTML5 Charts using the tag项目地址: https://gitcode.com/gh_mirrors/ch/Chart.js 本文基于 Chart.js 仓库中 Node.js 使用文档,讲清楚如何借…

2026/10/29 16:43:18 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/10 23:32:01 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/10 23:32:03 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/11 2:31:33 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/11 17:16:37 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/11 17:16:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/10 23:32:10 阅读更多 →

日新闻

周新闻

月新闻