每天一个 Agent Skills:Context7 — 让 AI 永远写出最新的代码

0 阅读5分钟

每天一个 Agent Skills:Context7 — 让 AI 永远写出最新的代码

Context7 是一个 MCP 服务,通过实时拉取库的最新文档和代码示例,解决 AI 编程助手「知识过时」和「幻觉 API」两大痛点。本文介绍如何在 Claude Code 中配置 Context7,并通过实战演示其核心工具 resolve-library-idquery-docs 的用法。


问题的本质:AI 不知道你的库是哪一版

用 AI 写代码时,你是否遇到过这些问题:

  • AI 给你一个 useState 的旧用法,项目里早就迁移到新 API 了
  • AI 写了一段 axios 请求代码,用的是已废弃的语法
  • AI 信誓旦旦地说「这个 API 存在」,实际跑通后才发现根本不对

这些问题的根源在于:AI 的训练数据有截止日期。你的项目依赖库的版本和 AI 训练时见过的版本很可能不一致,AI 在「凭感觉」生成代码。

Context7 就是为了解决这个问题而生的。


Context7 是什么

Context7Upstash(知名 Serverless Redis/Kafka 提供商)开源的一个 MCP 服务。它的核心能力只有一条:

将任意库的最新、版本相关的文档和代码示例,直接注入到 AI 的上下文中。

支持 50+ 流行库,包括但不限于:

前端框架后端框架数据库 / ORM其他
ReactNext.jsPrismaTailwind CSS
VueExpressSupabaseStripe
SvelteFastifyMongoDBSocket.IO
NuxtNest.jsDrizzleshadcn/ui
AstroHonoClerk 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-idquery-docs → AI 基于真实文档回答。效果是:AI 永远基于最新文档生成,而不是靠记忆。


如何在 Claude Code 中配置 Context7

前置条件

  • 安装 Claude CLI:npm install -g @anthropic-ai/claude-code
  • 拥有 Context7 API Key(免费注册:context7.com)

image.png

方式一:远程连接(推荐)

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:

  1. 先调用 resolve-library-id,确定库是 /prisma/prisma
  2. 再调用 query-docs,传入查询 user with orders order by date
  3. 拿到最新的 Prisma 文档片段,其中包含 include 语法和排序写法
  4. 基于真实文档生成代码

返回的代码示例(最新语法):

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 输出的代码从「勉强能用」到「直接可提交」的质量跃升。


进一步阅读