每天一个 Agent Skills:Context7 — 让 AI 永远写出最新的代码
Context7 是一个 MCP 服务,通过实时拉取库的最新文档和代码示例,解决 AI 编程助手「知识过时」和「幻觉 API」两大痛点。本文介绍如何在 Claude Code 中配置 Context7,并通过实战演示其核心工具
resolve-library-id和query-docs的用法。
问题的本质:AI 不知道你的库是哪一版
用 AI 写代码时,你是否遇到过这些问题:
- AI 给你一个
useState的旧用法,项目里早就迁移到新 API 了 - AI 写了一段
axios请求代码,用的是已废弃的语法 - AI 信誓旦旦地说「这个 API 存在」,实际跑通后才发现根本不对
这些问题的根源在于:AI 的训练数据有截止日期。你的项目依赖库的版本和 AI 训练时见过的版本很可能不一致,AI 在「凭感觉」生成代码。
Context7 就是为了解决这个问题而生的。
Context7 是什么
Context7 是 Upstash(知名 Serverless Redis/Kafka 提供商)开源的一个 MCP 服务。它的核心能力只有一条:
将任意库的最新、版本相关的文档和代码示例,直接注入到 AI 的上下文中。
支持 50+ 流行库,包括但不限于:
| 前端框架 | 后端框架 | 数据库 / ORM | 其他 |
|---|---|---|---|
| React | Next.js | Prisma | Tailwind CSS |
| Vue | Express | Supabase | Stripe |
| Svelte | Fastify | MongoDB | Socket.IO |
| Nuxt | Nest.js | Drizzle | shadcn/ui |
| Astro | Hono | Clerk Auth |
支持所有主流 AI 编码工具:Cursor、Claude Code、Windsurf 等。
核心原理:两个工具,两步走
1. resolve-library-id — 找库的身份证
通过自然语言搜索库,返回 Context7 内部的库标识符。
// 输入
{
"query": "How do I use React hooks?",
"libraryName": "react"
}
// 输出
{
"title": "React Documentation",
"Context7-compatible library ID": "/reactjs/react.dev",
"Description": "The library for web and native user interfaces",
"Code Snippets": 1250,
"Trust Score": "High",
"Benchmark Score": 98,
"Versions": ["19.0.0", "18.3.1", "18.2.0"]
}
2. query-docs — 按问题查文档
拿着库的 ID,用自然语言提问,返回相关性排序的文档片段和代码示例。
// 输入
{
"libraryId": "/vercel/next.js",
"query": "app router middleware authentication"
}
// 输出
{
"documentation": [
{
"title": "Middleware in Next.js",
"content": "Middleware allows you to run code before a request is completed...",
"codeExample": "import { NextResponse } from 'next/server'\nimport type { NextRequest } from 'next/server'\n\nexport function middleware(request: NextRequest) {\n const token = request.cookies.get('token')\n if (!token) {\n return NextResponse.redirect(new URL('/login', request.url))\n }\n return NextResponse.next()\n}"
}
]
}
两步配合:resolve-library-id → query-docs → AI 基于真实文档回答。效果是:AI 永远基于最新文档生成,而不是靠记忆。
如何在 Claude Code 中配置 Context7
前置条件
- 安装 Claude CLI:
npm install -g @anthropic-ai/claude-code - 拥有 Context7 API Key(免费注册:context7.com)
方式一:远程连接(推荐)
claude mcp add --scope user --header "CONTEXT7_API_KEY: YOUR_API_KEY" --transport http context7 https://mcp.context7.com/mcp
方式二:本地连接
claude mcp add --scope user context7 -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY
推荐用远程方式,不需要本地安装依赖,响应也更快。
配置完成后,可以用 claude mcp list 验证是否添加成功。
实战演示
场景:写一个 Prisma 关联查询
假设你的项目用的是 Prisma,要写一个联表查询。直接问 AI,AI 可能用旧语法;带 Context7 再问:
Prompt:
帮我写一个 Prisma 查询,获取用户及其所有订单,订单按时间倒序。用 TypeScript。use context7
Claude Code 会自动调用 Context7:
- 先调用
resolve-library-id,确定库是/prisma/prisma - 再调用
query-docs,传入查询user with orders order by date - 拿到最新的 Prisma 文档片段,其中包含
include语法和排序写法 - 基于真实文档生成代码
返回的代码示例(最新语法):
import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()
async function getUserWithOrders(userId: string) {
const user = await prisma.user.findUnique({
where: { id: userId },
include: {
orders: {
orderBy: {
createdAt: 'desc', // 按创建时间倒序
},
},
},
})
return user
}
这就是最新版本的正确语法,而不是 AI 记忆中的旧写法。
指定版本查询
如果你需要特定版本的文档,可以在库 ID 后追加版本号:
{
"libraryId": "/supabase/supabase/v2.45.0",
"query": "server-side authentication with JWT"
}
使用效果对比
| 维度 | 不带 Context7 | 带 Context7 |
|---|---|---|
| API 准确性 | 依赖训练数据,可能已过时 | 基于实时文档,准确率高 |
| 版本匹配 | 不知道你用的哪一版 | 可指定版本号 |
| 代码示例 | 模糊、通用 | 具体、可运行 |
| 幻觉 API | 常见 | 几乎消除 |
实测中,Context7 能在 80% 以上的场景下显著提升 AI 生成代码的正确性和可运行性。
局限性与注意事项
- 需要 API Key:虽然有免费额度,但生产环境需要注意用量控制
- 不是全知全能:对于非常冷门的库,Context7 可能没有收录
- 版本意识:建议同时告知 AI 你使用的库版本,以获得更精确的回答
- 文档质量依赖上游:Context7 的质量取决于各库官方文档的完整度
结论
Context7 解决的是一个被长期忽视但高频发生的问题:AI 和你的代码之间存在「知识代差」。通过 MCP 协议,Context7 把实时文档注入 AI 上下文,让 AI 从「凭记忆猜测」变成「查手册回答」。
如果你经常用 AI 写业务代码,推荐立即配置 Context7。两分钟配置,换来的是 AI 输出的代码从「勉强能用」到「直接可提交」的质量跃升。