3.3 Context7:把最新库文档拉进上下文
它是什么
upstash/context7,约 63456 star——这是本书所有推荐里 star 数最高的一个。TypeScript,npm 包 @upstash/context7-mcp(实测版本 4.4.4)。
官方定位:Context7 Platform -- Up-to-date docs for AI agents(面向 AI agent 的最新文档平台)。在 2026 年 3 月搜索量榜单排第 5(约 32k/月)。
它解决什么问题
模型写代码时最大的隐患是 API 幻觉:它记得的可能是三年前的用法。
模型可能写出:
from langchain.llms import OpenAI # 已废弃的路径
client.chat.completions.create(...) # 旧版 SDK 签名
Context7 的做法是:把指定库、指定版本的最新官方文档直接拉进上下文,让模型照当下的文档写。效果上,相当于给模型配了一个永远最新的“官方文档口袋书”。
安装与配置
npm install --global @upstash/context7-mcp
- insert:
- id: context7
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: context7
transport: stdio
command: npx
args: ["-y", "@upstash/context7-mcp"]
cwd: !!js process.cwd()
serverName 用 context7,工具前缀为 mcp__context7__...。
典型用法
指定库与版本:
用 context7 拉取 Next.js 15 的 App Router 文档,
然后按最新 API 写一个带服务端组件的页面。
对比两个版本:
用 context7 分别拉取 React 18 与 19 的文档,
列出 useEffect 相关 API 的差异。
防幻觉:
写这段代码前,先用 context7 确认 pandas 2.2 的 read_csv 参数,
不要凭记忆写。
最后这个用法极其实用——把“先查文档”变成固定动作,从根上减少因为 API 记忆过期导致的编译错误和运行时异常。
使用技巧
技巧一:任务里带版本号。 “用 React 19” 比 “用 React” 得到的文档精准得多。版本越具体,拉到的越是你真正在用的那一份。
技巧二:配合只读约束。 Context7 只读文档不改代码,天然安全,可以让模型放心调用,不必担心它“顺手改了什么”。
技巧三:和 fetch 互补。 Context7 面向“已知库名”,fetch(见 2.4 fetch)面向“已知 URL”。查库用前者,读指定页面用后者。两者覆盖“按名查文档”与“按址读页面”两种需求。
谁该装
| 情况 | 建议 |
|---|---|
| 经常写依赖第三方库的代码 | 必装,显著降低幻觉 |
| 做框架升级评估 | 建议 |
| 只用标准库 / 自研代码 | 不必 |
排错
| 现象 | 原因 |
|---|---|
| 找不到库 | 库名拼写或大小写不对,用官方全名 |
| 拉到的是旧版本 | 没在请求里指定版本号 |
| 文档内容偏少 | 该库在 Context7 收录的快照有限,换 fetch 直读官网 |
小结
- Context7 star 数(约 63.5k)是本书推荐里最高的,搜索量第 5。
- 它把指定库、指定版本的最新文档拉进上下文,治 API 幻觉。
- 用法要点:任务里带版本号;与 fetch 互补(查库 vs 读页)。
延伸阅读
- 本章其余小节:3.4 搜索三选、3.5 Desktop Commander
- 轻量读页:2.4 fetch
- 姊妹篇:《DeepSeek Harness 必装的 skill 推荐》
