介绍一个好用的MCP:context7

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 协议的客户端-服务器架构,运行流程如下:

  1. 初始化:

    • 开发者在 MCP 客户端(如 Cursor、Trae)中配置 Context7 服务器。
    • 客户端与 Context7 MCP 服务器建立连接,进行握手,交换协议版本和能力信息。
  2. 提示触发:

    • 开发者在提示中加入 use context7,例如:

      sql 复制代码
      Create a basic Next.js project with app router. use context7
    • 客户端解析提示,识别 use context7 指令,调用 Context7 服务器。

  3. 文档获取:

    • Context7 服务器根据提示中的库名(如 Next.js)调用 resolve-library-id 工具,将通用库名解析为 Context7 兼容的库 ID。
    • 使用 get-library-docs 工具,从官方文档源获取版本特定的文档和代码示例(默认返回最大 5000 令牌的文档)。
  4. 上下文注入:

    • 服务器将获取的文档和代码示例解析、清理后注入到 AI 的提示上下文中。
    • AI 基于增强后的上下文生成更准确的代码或回答。
  5. 响应返回:

    • 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(用于容器化部署)

安装方式

  1. 通过 Smithery 自动安装(推荐 for Claude Desktop):

    bash

    sql 复制代码
    npx -y @smithery/cli install @upstash/context7-mcp --client claude
  2. 手动配置(以 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

    javascript 复制代码
    const { 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

    python 复制代码
    from 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

高级用法

  • 多库支持:在提示中指定多个库,例如:

    vbnet 复制代码
    Build 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里。

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

相关推荐
无情的西瓜皮4 小时前
MCP协议实战:从零搭建一个AI Agent工具服务器,让大模型真正“动手干活“
运维·服务器·人工智能·mcp
Revio Lab5 小时前
把 AI 生成的 HTML 当 Markdown 来管:Web-Doc 自托管文档站实践
前端·html·mcp·html文档
带娃的IT创业者5 小时前
Anthropic收购Stainless:AI Agent时代的连接革命
人工智能·ai agent·anthropic·mcp·收购·stainless
情绪总是阴雨天~7 小时前
深度解析:LangChain、Agent、RAG、FC、ReAct、LangGraph、A2A、MCP — 区别、联系与全景图
python·langchain·agent·rag·langgraph·mcp·a2a
oscar99911 小时前
为 OpenCode 挂载外部能力:MCP 服务器完全指南
mcp·opencode
用户000453921161 天前
OpenAI Tasks API 的集成与使用
mcp
stereohomology1 天前
vibe coding效率高:一个新mcp server已经试运行尚可
大语言模型·mcp·traecn·glm5.1·why不coding
小白学鸿蒙1 天前
Funplay Unity MCP 接入 trae 实战
unity·游戏引擎·mcp
optimistic_chen2 天前
【AI Agent 全栈开发】MCP
java·linux·运维·人工智能·ai编程·mcp
winlife_2 天前
Funplay Unity MCP 与 Unity AI Assistant 详细对比:开源 MCP 工具集 vs 官方全栈 AI 产品
人工智能·unity·开源·ai编程·claude·mcp