
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),仅供参考