Context7 是一个基于 Model Context Protocol (MCP) 的服务器工具,旨在为大型语言模型(LLMs)和 AI 代码编辑器提供实时、版本特定的最新文档和代码示例。它通过直接从官方文档源获取数据,注入到 AI 提示的上下文窗口中,解决 LLMs 依赖过时训练数据或生成"幻觉"代码的问题。
Context7 MCP 是什么?
Context7 MCP 是一个由 Upstash 开发并维护的 MCP 服务器,专为开发者设计,用于增强 AI 编码助手(如 Cursor、Trae、Windsurf、Cline 等)的能力。它的核心目标是解决 LLMs 在处理快速更新的库和框架(如 Next.js、React Query、Zod、Tailwind 等)时,因训练数据滞后导致的以下问题:
- 过时文档:生成基于旧版本的代码示例,导致代码无法运行。
- API 幻觉:生成不存在的 API 或方法,浪费开发者验证时间。
- 通用答案:缺乏针对特定库版本的精确回答。
- 上下文切换:开发者需频繁切换到浏览器查找最新文档,降低效率。
Context7 通过 MCP 协议与 AI 客户端交互,动态拉取最新文档和代码示例,并将其无缝注入到提示上下文中。它支持多种 MCP 兼容客户端,广泛应用于现代开发工作流。
关键特性:
- 实时文档获取:从官方源(如 GitHub、官方文档网站)拉取最新文档。
- 版本特定:确保文档和代码示例与目标库的版本匹配。
- 无缝集成:只需在提示中添加 use context7,即可触发文档注入。
- 无幻觉代码:减少 AI 生成不存在 API 或过时代码的可能性。
- 多平台支持:兼容 Cursor、Trae、Windsurf、Cline、Zed 等。
Context7 MCP 的工作原理
Context7 MCP 基于 MCP 协议的客户端-服务器架构,运行流程如下:
-
初始化:
- 开发者在 MCP 客户端(如 Cursor、Trae)中配置 Context7 服务器。
- 客户端与 Context7 MCP 服务器建立连接,进行握手,交换协议版本和能力信息。
-
提示触发:
-
开发者在提示中加入 use context7,例如:
sqlCreate a basic Next.js project with app router. use context7
-
客户端解析提示,识别 use context7 指令,调用 Context7 服务器。
-
-
文档获取:
- Context7 服务器根据提示中的库名(如 Next.js)调用 resolve-library-id 工具,将通用库名解析为 Context7 兼容的库 ID。
- 使用 get-library-docs 工具,从官方文档源获取版本特定的文档和代码示例(默认返回最大 5000 令牌的文档)。
-
上下文注入:
- 服务器将获取的文档和代码示例解析、清理后注入到 AI 的提示上下文中。
- AI 基于增强后的上下文生成更准确的代码或回答。
-
响应返回:
- AI 客户端将生成的代码或回答返回给用户。
技术细节:
-
协议:使用 JSON-RPC 2.0 构建,基于 Anthropic 的 MCP 规范,继承了 Language Server Protocol (LSP) 的设计理念。
-
数据源:Context7 索引并预处理开源项目的文档,生成优化的 llms.txt 文件,类似于 robots.txt,为 LLMs 提供精简、特定主题的文档。
-
工具:
- resolve-library-id:将库名映射到 Context7 内部 ID。
- get-library-docs:根据 ID 获取文档,支持语言过滤(如 Python、JavaScript)和版本选择。
安装与配置
Context7 MCP 的安装过程简单,支持多种运行时(如 Node.js、Bun、Deno)和平台。以下是主要安装步骤:
系统要求
- Node.js:版本 >= 18.0.0
- MCP 客户端:如 Cursor、Windsurf、Claude Desktop、VS Code、Zed 等
- 可选:Docker(用于容器化部署)
安装方式
-
通过 Smithery 自动安装(推荐 for Claude Desktop):
bash
sqlnpx -y @smithery/cli install @upstash/context7-mcp --client claude
-
手动配置(以 Trae 为例):
- 打开 Trae 设置,选择MCP。 -

- 点击Add,选择手工添加。

-
贴进去以下配置:
json{ "mcpServers": { "context7": { "command": "npx", "args": ["-y", "@upstash/context7-mcp@latest"] } } }

- 看到这个就是添加成功了

使用方法
Context7 的使用非常直观,只需在提示中添加 use context7 即可触发服务器。以下是一些典型用例:
示例 1:创建 Next.js 项目
提示:
sql
Create a basic Next.js project with app router. use context7
-
Context7 服务器识别 "Next.js",获取最新文档(例如 Next.js 14 的 app router 配置)。
-
AI 返回基于最新版本的代码,例如:
javascript
javascript// app/page.tsx export default function Home() { return <h1>Welcome to Next.js!</h1>; }
示例 2:操作 PostgreSQL 数据库
提示:
sql
Create a script to delete rows where the city is "" given PostgreSQL credentials. use context7
-
Context7 拉取 PostgreSQL 的最新文档(例如 pg 库的 Node.js 驱动)。
-
AI 生成准确的 SQL 查询代码:
javascript
javascriptconst { Pool } = require('pg'); const pool = new Pool({ user: 'your_user', host: 'localhost', database: 'your_db', password: 'your_password', port: 5432, }); async function deleteEmptyCityRows() { try { await pool.query('DELETE FROM your_table WHERE city = $1', ['']); console.log('Rows deleted successfully'); } catch (err) { console.error('Error executing query', err.stack); } finally { await pool.end(); } } deleteEmptyCityRows();
示例 3:FastAPI CRUD API
提示:
sql
Create a CRUD API in FastAPI with authentication. use context7
-
Context7 获取 FastAPI 最新文档,提供带 OAuth2 认证的代码示例:
python
pythonfrom fastapi import FastAPI, Depends, HTTPException, status from fastapi.security import OAuth2PasswordBearer from pydantic import BaseModel app = FastAPI() oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") class Item(BaseModel): name: str description: str | None = None items = [] @app.post("/items/") async def create_item(item: Item, token: str = Depends(oauth2_scheme)): items.append(item) return item
高级用法
-
多库支持:在提示中指定多个库,例如:
vbnetBuild a Next.js app with Tailwind CSS and React Query. use context7
-
语言过滤:通过配置指定编程语言(如仅获取 Python 文档)。
-
私有包支持(计划中):Context7 未来将支持私有库的文档索引。
在Trae中使用的技巧
Trae需要创建一个agent,并把mcp勾选上


看下效果对比:
没有使用context7

使用了context7,可以找到最新版本

不过还有一个小问题:每次对话,都要认为指定 use context7,还挺麻烦的。Trae的agent可以自由编辑prompt。所以我把他塞到了prompt里。

再看看效果,对话就干净很多了,不需要我认为指定。
