
Context7 MCP Server让 LLM 与 AI 编程编辑器用上最新、真实的库文档【免费下载链接】context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors项目地址: https://gitcode.com/gh_mirrors/co/context7本文基于 Context7 仓库的官方文档含阿拉伯语版本 i18n/README.ar.md 与主 README README.md系统讲解 Context7 MCP Server 的核心价值、各客户端安装配置、两个 MCP 工具的参数细节并结合 MCP 服务器源码 深入其工具注册、参数容错、API 调用与部署实现帮你把实时库文档真正接入自己的 AI 编程工作流。一、为什么需要 Context7解决 LLM 的过期文档问题大语言模型的库知识来自训练数据因此在使用 Context7 之前开发者普遍会遇到三类典型问题原文档 Without Context7 一节代码示例基于一年多前的训练数据已经过期模型幻觉出根本不存在的 API针对旧版本包给出泛泛的回答。Context7 的做法是直接从源头提取最新的、版本相关的文档与代码示例并直接注入到模型的 prompt 中而不是让模型凭记忆作答。使用方式非常轻量——在 Cursor 等支持 MCP 或 Rules 的客户端里只需在自然语言请求末尾加上use context7例如原文档给出的阿拉伯语示例及其对应含义أنشئ مشروع Next.js بسيط باستخدام app router. use context7 创建一个使用 app router 的简单 Next.js 项目。use context7أنشئ سكربت لحذف الصفوف التي تكون فيها المدينة فارغة باستخدام بيانات اعتماد PostgreSQL. use context7 写一个使用 PostgreSQL 凭据删除城市字段为空的行的脚本。use context7原文档将使用流程归纳为三步1) 像平常一样写请求2) 在请求中加上use context73) 直接得到可运行的代码——无需切换标签页不产生幻觉 API不生成过期代码。从源码看MCP Server 启动时会向客户端声明一段服务器级 instructionspackages/mcp/src/index.ts明确告诉 Agent只要用户询问任何库、框架、SDK、API、CLI 工具或云服务——哪怕你自认为已经知道答案——也优先调用本服务器获取文档同时划定了不适用的场景重构、从零写脚本、业务逻辑调试、代码审查、通用编程概念。这段声明正是加一句use context7就能触发行为在协议层面的落地。二、安装要求原文档البدءGetting Started一节列出的前置条件Node.js 18.0.0 或更高版本Cursor、Devin Desktop、Claude Desktop 或任何其它 MCP 客户端。需要补充说明的是当前仓库中 MCP 包的 packages/mcp/package.json 声明的engines为node 20.18.1因此实际部署时建议使用较新的 Node LTS 版本以规避兼容性问题。三、各客户端安装配置完整继承原文档以下配置均摘自原文档可复制使用。所有 stdio 方式的核心都是同一条命令npx -y upstash/context7-mcplatest它对应 npm 包upstash/context7-mcp的 bin 入口context7-mcp见 packages/mcp/package.json 的bin字段。3.1 通过 Smithery 安装Claude Desktop 自动配置npx -y smithery/cli install upstash/context7-mcp --client claude仓库中的 packages/mcp/smithery.yaml 声明了 Smithery 集成配置startCommand.type为http且无需任何配置项exampleConfig: {}这解释了为什么该安装路径不需要额外参数。3.2 Cursor进入Settings-Cursor Settings-MCP-Add new global MCP server或直接把以下内容写入~/.cursor/mcp.json{ mcpServers: { context7: { command: npx, args: [-y, upstash/context7-mcplatest] } } }3.3 使用 Bun{ mcpServers: { context7: { command: bunx, args: [-y, upstash/context7-mcplatest] } } }3.4 使用 Deno{ mcpServers: { context7: { command: deno, args: [run, --allow-env, --allow-net, npm:upstash/context7-mcp] } } }3.5 Devin Desktop{ mcpServers: { context7: { command: npx, args: [-y, upstash/context7-mcplatest] } } }3.6 VS Code{ servers: { Context7: { type: stdio, command: npx, args: [-y, upstash/context7-mcplatest] } } }3.7 Zed可携带 API Key{ context_servers: { Context7: { source: custom, command: npx, args: [-y, upstash/context7-mcp, --api-key, YOUR_API_KEY] } } }这个--api-key参数有源码依据packages/mcp/src/index.ts 中通过 commander 注册了--api-key key选项注释说明其作用与设置环境变量CONTEXT7_API_KEY等价index.tsstdioApiKey cliOptions.apiKey || process.env.CONTEXT7_API_KEY。API Key 用于提升匿名访问的速率限制。3.8 Claude Codeclaude mcp add --scope user context7 -- npx -y upstash/context7-mcplatest3.9 Claude Desktop / BoltAI{ mcpServers: { Context7: { command: npx, args: [-y, upstash/context7-mcplatest] } } }3.10 Copilot Coding Agent托管 HTTP 端点在 Copilot Coding Agent 设置的MCP configuration段Repository - Settings - Copilot - Coding agent - MCP configuration中添加{ mcpServers: { context7: { type: http, url: https://mcp.context7.com/mcp, tools: [query-docs, resolve-library-id] } } }这是原文档中唯一的远端托管 HTTP 接入方式不需要本地 Node 环境。该地址与源码常量一致packages/mcp/src/lib/constants.ts 定义MCP_RESOURCE_URL https://mcp.context7.com而本地以--transport http启动时index.ts 注册的正是/mcp匿名访问路由/mcp/oauth则要求认证两者端点语义相同。配置中的tools字段白名单即后文详述的两个工具。3.11 Windows{ mcpServers: { github.com/upstash/context7-mcp: { command: cmd, args: [/c, npx, -y, upstash/context7-mcplatest], disabled: false, autoApprove: [] } } }四、Docker 部署原文档给出最简 stdio 镜像方案DockerfileFROM node:18-alpine WORKDIR /app RUN npm install -g upstash/context7-mcplatest CMD [context7-mcp]构建镜像docker build -t context7-mcp .客户端配置{ mcpServers: { Context7: { command: docker, args: [run, -i, --rm, context7-mcp], transportType: stdio } } }仓库内另有一份更贴近工程实践的多阶段构建Dockerfilepackages/mcp/Dockerfile。它先用node:lts-alpine构建阶段pnpm --filter upstash/context7-mcp build生产阶段只拷贝dist产物并默认以HTTP transport、8080 端口启动DockerfileCMD [node, dist/index.js, --transport, http, --port, 8080]这印证了源码中的双 transport 设计packages/mcp/src/index.ts 通过--transport stdio|http切换默认stdio--port默认3000且在 stdio 模式下传--port会被直接拒绝L70-L73http 模式下传--api-key同样被拒绝L63-L68HTTP 层走请求头认证。启动时若端口被占用会自动尝试port1最多 10 次index.ts。五、两个 MCP 工具深度解析原文档الأدوات المتوفرةAvailable Tools一节定义了 Server 对外暴露的两个工具这也是整个 Context7 工作流的骨架先解析库 ID再按 ID 取文档。5.1 resolve-library-id把库名解析为 Context7 ID作用将通用的库/产品名转换为 Context7 兼容的库 ID并返回匹配的库列表。参数原文档标注均为必填参数必填说明query是用户的问题或任务用于按相关性对结果排序libraryName是要搜索的库名建议用官方写法如Next.js而非nextjs源码中该工具的注册与详细描述见 packages/mcp/src/index.ts。描述里给出了每个结果包含的字段Library ID、Name、Description、Code Snippets 数量、Source Reputation、Benchmark Score、可用版本列表以及选型流程名称相似度 描述相关性 文档覆盖度Code Snippet 数 来源声誉 Benchmark Score并限制同一问题最多调用 3 次。其标注为只读readOnlyHint: true且幂等idempotentHint: true。5.2 query-docs按 ID 拉取最新文档作用使用 Context7 兼容 ID 提取库文档。参数参数必填说明libraryId是精确的 Context7 兼容 ID如/mongodb/docs、/vercel/next.jsquery是要获取的相关文档的问题或任务源码见 packages/mcp/src/index.ts。描述中额外强调libraryId必须来自resolve-library-id的结果除非用户已经直接给出/org/project或/org/project/version形式的 ID此时可跳过解析步骤query应聚焦单一概念跨多个概念时拆成多次调用。5.3 源码纵深参数容错与 API 调用链参数别名容错aliasArgs。这是原文档没有、但源码中很关键的一个健壮性细节LLM 客户端经常把工具描述里的措辞当参数名回显导致 Zod 校验直接失败。Server 用z.preprocess在校验前重写别名index.ts全局别名query可接受userQuery、questionquery-docs专属libraryId可接受context7CompatibleLibraryID、libraryID、libraryName。API 调用链。工具处理器最终调用 packages/mcp/src/lib/api.ts 中的两个函数searchLibraries-GET {CONTEXT7_API_BASE_URL}/v2/libs/search?querylibraryNameapi.tsfetchLibraryContext-GET {CONTEXT7_API_BASE_URL}/v2/context?querylibraryIdapi.ts。CONTEXT7_API_BASE_URL默认为https://context7.com/api可用环境变量CONTEXT7_API_URL覆盖constants.ts。所有 API 调用带 60 秒超时API_TIMEOUT_MS 60_000api.ts。另外该仓库只托管 MCP Server 源码API 后端、解析引擎与爬虫引擎均为私有组件、不在此仓库中见主 README.md 的 Disclaimer 第 2 条。请求头与鉴权。packages/mcp/src/lib/encryption.ts 的generateHeaders会为每次 API 调用附加来源标记X-Context7-Source: mcp-server、服务器版本、客户端 IDE/版本、transport 类型、会话 ID若设置了 API Key则以Authorization: Bearer key发送。HTTP transport 模式下认证头可来自Authorization、X-Context7-API-Key、Context7-API-Key、X-API-Key等多个位置index.ts。六、本地开发与调试原文档التطويرDevelopment一节的完整流程pnpm i pnpm run build本地客户端配置指向未打包的源码入口{ mcpServers: { context7: { command: npx, args: [tsx, /path/to/folder/context7-mcp/src/index.ts] } } }用 MCP Inspector 测试npx -y modelcontextprotocol/inspector npx upstash/context7-mcplatest结合仓库可补充几个细节仓库的build脚本实际是tsc chmod 755 dist/index.jspackages/mcp/package.jsonstart脚本为node dist/index.js --transport httpL15即本地跑 HTTP 服务只需pnpm run startstdio 进程在stdin结束/关闭或收到SIGHUP时自动退出index.ts并在启动握手时捕获客户端版本信息用于上报集成测试见 packages/mcp/test/integration.test.ts可参考其中的客户端接入方式。七、故障排查Troubleshooting完整继承原文档استكشاف الأخطاء一节的三类问题与解法7.1 ERR_MODULE_NOT_FOUND改用bunx替代npx{ mcpServers: { context7: { command: bunx, args: [-y, upstash/context7-mcplatest] } } }7.2 ESM 相关错误尝试加上实验性 VM 模块参数并固定版本{ command: npx, args: [-y, --node-options--experimental-vm-modules, upstash/context7-mcp1.0.6] }7.3 MCP 客户端通用错误排查顺序移除latest后缀尝试bunx尝试deno确认使用 Node v18 或更新版本结合 3.11 节 Windows 配置与 7.2 节 ESM 参数。源码层面的补充依据可帮助快速定位错误来自哪一层上游 API 返回 429/404/401 时parseErrorResponse会生成明确的文案429 提示速率限制/配额无 Key 时引导去创建免费 API Key404 提示库 ID 不存在401 提示 Key 无效且应以ctx7sk前缀开头api.ts。看到这些文案即可判断问题在鉴权/配额层而非客户端配置层企业网络下可通过HTTPS_PROXY/HTTP_PROXY大小写变体均支持走代理并可用NODE_EXTRA_CA_CERTS注入自定义 CAapi.ts工具调用若返回未找到库之类文本而非崩溃是因为searchLibraries/fetchLibraryContext全部捕获异常并返回错误文本api.ts、L178-L182所以工具能调通但内容不对多半是 libraryId 或 query 问题。八、注意事项免责与许可证社区贡献内容免责原文档إخلاء مسؤوليةContext7 收录的项目由社区贡献官方不保证全部库文档的准确性与安全性发现可疑内容应通过项目页的Report按钮举报。许可证MITLICENSE。多语言文档本仓库i18n/目录提供了 15 种语言的 README包括 简体中文、繁體中文、日本語、한국어、Русский 等内容与本文依据的 阿拉伯语版 对应可按需切换阅读更细的 API 参考、CLI 参考与 30 客户端手动安装指南见仓库内 docs/ 文档站如 installation.mdx、api-guide.mdx。【免费下载链接】context7Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors项目地址: https://gitcode.com/gh_mirrors/co/context7创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考