用 AI 编程助手(Cursor、Claude Code、OpenCode、Cline 等)时,经常遇到一个尴尬:模型知识截止到某个日期,生成的代码用的是旧版 API——Next.js 14 的 middleware 写法在 15 里改了、OpenAI SDK v4 和 v5 API 完全不同、Playwright 每个小版本都在换东西。
Context7 就是解决这个问题的——给模型动态注入最新的官方文档。
它做什么
流程大致:
用户提问:"Next.js 15 middleware 怎么写"
↓
AI 判断需要文档
↓
Context7 拉取 Next.js 最新文档
↓
把相关片段塞进 prompt
↓
模型基于真实文档生成代码
不用它的差别:
- 无 Context7:模型可能给出 Next.js 13/14 的老写法,甚至凭空造 API
- 有 Context7:读到 Next.js 15 最新文档,给现在正确的写法
用户侧的触发方式通常是在 prompt 里加 use context7,或者在 MCP 层自动挂上。
覆盖范围
Context7 主要针对开源库和框架:
- 前端:React、Next.js、Vue、Svelte、TanStack Router / Query
- 后端:Node.js、FastAPI、NestJS、Rails、Spring
- 语言 SDK:OpenAI、Anthropic、Google GenAI
- 工具链:Docker、K8s、Terraform、Cloudflare Workers
- 数据库 ORM:Prisma、Drizzle、SQLAlchemy
- AI Agent 相关:LangChain、LangGraph、Vercel AI SDK
不覆盖:企业内部私有文档、闭源产品文档(那要走 RAG)。
和 RAG 的区别
看着都是”检索 + 生成”,实际定位不同:
| 维度 | Context7 | 通用 RAG |
|---|---|---|
| 目标数据源 | 公开的开源库官方文档 | 任意语料(企业文档、书、票据) |
| 更新频率 | 跟随上游 release 自动同步 | 需要自己维护索引 |
| 检索粒度 | 按库版本和 API 检索 | 通用 embedding 相似度 |
| 主要面向 | AI 编程助手 | 各种问答场景 |
| 部署方式 | 云服务 + MCP 客户端 | 自建向量库 + 应用集成 |
企业内私有代码库还是要自己搭 RAG。Context7 专注公共库这个细分场景,做得比通用 RAG 更精准。
MCP 是怎么接的
Context7 走 MCP(Model Context Protocol)——Anthropic 提出的、给 LLM 用的工具协议。客户端配置例:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
放到 Claude Desktop / Cursor / OpenCode 的 MCP 配置里,模型就能调用两个工具:
resolve-library-id— 把”Next.js” 之类的名字解析成内部 IDget-library-docs— 按 ID 拿具体文档
MCP 客户端会把工具 schema 注入到模型的系统提示里,模型自主决定什么时候调用。
用 OpenCode / Claude Code 集成
~/.claude.json 里加:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
重启客户端,让 Claude Code 认到工具,之后你可以:
- 直接问:“帮我按 Next.js 15 官方文档写一个 middleware”
- 或明确指令:“use context7 查一下 Cloudflare Workers 最新的 D1 API”
模型会自己调用工具、拿到文档片段、然后写代码。
局限
- 只能查 Context7 收录的库,长尾库覆盖不到
- 文档质量取决于上游 README / docs 站的质量
- 有请求配额(免费额度足够个人用)
- 对版本切换很敏感——比如你项目锁死用 Next.js 14,模型可能拉了 15 的文档给你混淆
一句话总结
Context7 = AI 编程助手的动态文档知识库。核心用途是修复”模型不知道最新 API”这个通病。走 MCP 一键接入,Claude Code / Cursor / OpenCode 都能用。
