跳至主要内容

01|即時文件查詢(upstash/context7)

🎯 一句話:解決「模型訓練資料過期」這個老問題——查詢時把目標函式庫的最新文件與程式碼範例塞進 prompt,而不是靠模型記憶。

  • Repo:https://github.com/upstash/context7
  • 授權:MIT(僅 MCP server 原始碼;索引/爬蟲/解析引擎閉源,屬 Upstash 後端服務)
  • 套件:@upstash/context7-mcp(MCP server)、ctx7(CLI)、@upstash/context7-sdk(TS SDK)、@upstash/context7-tools-ai-sdk(Vercel AI SDK 工具)

作者背景

Upstash 是一家無伺服器資料平台公司,本業是 Redis(serverless、低延遲、HTTP/REST 存取,適合 edge/serverless 環境)、Vector(向量資料庫)、QStash(訊息佇列/排程)、Workflow(流程編排)、Search(全文搜尋),計價方式是「按請求付費、可以縮到零」。背後投資人包含 a16z,以及 Vercel 創辦人 Guillermo Rauch、Auth0 共同創辦人 Matias Woloski、Naval Ravikant 等天使投資人。

Context7 是這家「資料基礎設施公司」做的開發者工具——邏輯上不算他們的核心產品線,但解決的是同一種問題:讓開發者不用自己維護一份「隨時可查、隨時最新」的資料。


解決什麼問題

LLM 訓練資料有截止日期,遇到快速迭代的函式庫(框架版本、API 簽名常變)時,很容易:

  • 給出過期的用法範例
  • 幻覺出不存在的 API
  • 混用不同版本的語法

Context7 的做法不是「訓練更新的模型」,而是在查詢當下把目標函式庫的最新文件、程式碼範例直接注入 prompt,讓模型依據當下真實內容回答,而不是靠記憶。


怎麼運作:兩段式查詢

MCP 工具只有兩個,刻意設計成「先解析、再查詢」:

工具參數作用
resolve-library-idquerylibraryName把一個函式庫名稱解析成 Context7 專用的穩定 ID,依相關性排序
query-docslibraryIdquery用已解析的 ID 查詢對應版本的文件與程式碼範例

CLI 版本(ctx7)對應同一組邏輯:

ctx7 library <name> <query> # 對應 resolve-library-id:搜尋索引,回傳符合的函式庫與 ID
ctx7 docs <libraryId> <query> # 對應 query-docs:用確切 ID 抓文件

也可以完全跳過解析步驟,直接在 prompt 裡用 slash 語法點名資源:

use library /supabase/supabase

還能指定版本(例如「Next.js 14」),避免抓到最新版但你實際用的是舊版 API。


怎麼安裝

一鍵設定(推薦):

npx ctx7 setup

會走 OAuth 登入、產生 API key,並依偵測到的 agent 自動安裝對應整合。可用旗標指定目標:--cursor--claude--opencode。有兩種模式:

  • CLI + Skills:不需要 MCP,改裝一個引導模型呼叫 ctx7 指令的 Skill
  • 原生 MCP:直接註冊 Context7 MCP server

移除

npx ctx7 remove
# 若是全域安裝,另外 npm uninstall -g ctx7

手動設定 MCP(不用 CLI 精靈時):

  • Server URL:https://mcp.context7.com/mcp
  • 認證:CONTEXT7_API_KEY header
  • 需求:Node.js ≥ 18;免費 API key(context7.com/dashboard 申請)可提高速率限制,官方文件列出 30+ 種支援的 MCP client

限制與免責聲明

文件內容多為社群貢獻,官方明講「不保證正確性、完整性或安全性」,並提供「Report」按鈕讓使用者回報問題內容。這個 repo 只公開 MCP server 的原始碼——實際的 API 後端、解析引擎、爬蟲引擎都是 Upstash 的閉源服務,等於「介面開源、資料引擎閉源」的模式。


值得抄的兩件事

  1. 穩定 ID 當作查詢的中介層——先解析成 ID 再查內容,比每次都做模糊比對更省成本、更可預測。
  2. 給使用者一條跳過解析的捷徑——slash 語法直接點名資源,是「工具鏈路徑」與「使用者直覺路徑」並存的好示範。