コーディングエージェントは、自分が記憶しているAPIに対してコードを書きますが、その記憶は昨年のものです。Context7はこのギャップを埋めるために存在します。ライブラリドキュメントのインデックスを保持し、エージェントが必要とした瞬間に関連する部分を渡します。64,773個のスターを獲得したupstash/context7は、最も導入されているMCPサーバーの1つです。
また、これは何度か形を変えてきました。多くのガイドが説明しているツールget-library-docsはすでに存在せず、現在はキー付きの無料枠があり、得られる回答はどのバージョンのライブラリを要求するかによって変わり、その違いは見落としがちです。私たちは2026年11月12日に公開された@upstash/context7-mcp 4.7.0を、2026年11月14日にMCP InspectorのCLIでAPIキーなしで実行し、返ってくる内容を確認しました。
インストール
Context7 は 2 通りの方法で動作します。どちらも同じホスト型の Context7 API に接続します。
| リモート | ローカル | |
|---|---|---|
| アドレスまたはコマンド | https://mcp.context7.com/mcp |
npx -y @upstash/context7-mcp |
| キー | Authorization: Bearer ヘッダー、または /mcp/oauth での OAuth |
--api-key フラグまたは CONTEXT7_API_KEY |
| Node.js が必要 | いいえ | 20.18.1 以降 |
| オフラインで動作 | いいえ | いいえ: ホスト型 API を引き続き呼び出します |
クライアントが HTTP サーバーに対応していない場合を除き、リモートを選んでください。ローカルパッケージはシンクライアントです。Context7 の README にも明記されているとおり、オープンソースなのは MCP server のみで、インデックス、パーサー、クローラーは非公開です。
まず context7.com で無料のキーを取得してください。キーは ctx7sk- で始まり、表示されるのは一度だけです。
Claude Code、リモートの場合:
claude mcp add --scope user --header "Authorization: Bearer YOUR_API_KEY" --transport http context7 https://mcp.context7.com/mcp
または、キーの代わりに /mcp 経由の OAuth を使うプラグイン:
/plugin marketplace add upstash/context7
/plugin install context7@context7-marketplace
Cursor、~/.cursor/mcp.json に記述:
{
"mcpServers": {
"context7": {
"url": "https://mcp.context7.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
VS Code は mcpServers の代わりに servers を使い、.vscode/mcp.json に記述します:
{
"servers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Codex:
codex mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY
Codex の起動時にタイムアウトする場合は、Context7 の Codex ページの推奨に従い、設定で startup_timeout_sec を 40 に引き上げてください。Claude Desktop ではカスタムコネクタとして追加します: Settings、Connectors、Add Custom Connector、URL は https://mcp.context7.com/mcp です。
Context7 には npx ctx7 setup も用意されています。サインインし、キーを作成し、Claude Code、Cursor、Codex、OpenCode のいずれかに MCP エントリまたはスキルをインストールします。npx ctx7 remove で元に戻せます。どこに何が書き込まれるかを確認したい場合は、config builder がプレーンなエントリを生成します。
2つのツール
4.7.0 の tools/list は2つのツールを返し、どちらも読み取り専用かつ冪等とマークされていました:
| ツール | パラメータ | 動作 |
|---|---|---|
resolve-library-id |
libraryName、query |
ライブラリの Context7 ID を検索し、質問に照らしてランク付けする |
query-docs |
libraryId、query、任意の language |
そのライブラリのドキュメントセクションとコード例を返す |
説明文は、ユーザーがすでに /vercel/next.js のような ID を渡していない限りまず解決を行うこと、そして1つの質問につき各ツールの呼び出しは3回までにすること、をエージェントに指示しています。どちらの query フィールドにも同じ警告があります: クエリは Context7 の API に送信されるため、API キー、パスワード、個人データ、独自コードを含めないでください。
古いチュートリアルに従っている場合: get-library-docs はバージョン 2.0.0 で query-docs に置き換えられ、その tokens、topic、page、mode パラメータはなくなりました。2.2.5 以降、サーバーはエージェントが考案した一部の引数名(query に対する question など)を暗黙に修正します。
返ってきたもの
「app router middleware」という質問を添えて、resolve-library-id に「next.js」を問い合わせました。応答は 2,175 バイトでした。最上位のヒットは /vercel/next.js で、7,338 個のコードスニペット、ソースレピュテーション High、ベンチマークスコア 79.96、バージョンは v12.3.7 から v16.4.5 に加えて canary ブランチまで含まれていました。次に来たのは /websites/nextjs で、これは別途インデックスされたドキュメントサイトで、9,524 個のスニペットとスコア 76.15 でした。1つのフレームワークに対して2つの ID が返るのは Context7 では普通のことです。リポジトリとウェブサイトは別々のライブラリとしてインデックスされています。
続いて query-docs を3回呼び出しました:
| ライブラリ ID | 質問 | 応答 | コードブロック |
|---|---|---|---|
/vercel/next.js |
未認証ユーザーをリダイレクトするプロキシ | 8,422 バイト | 5 |
/vercel/next.js |
server actions revalidatePath | 4,304 バイト | 8 |
/vercel/next.js/v16.2.9 |
未認証ユーザーをリダイレクトするプロキシ | 5,512 バイト | 未集計 |
応答はコンパクトです。いくつかのセクションがあり、それぞれに見出し、ソースリンク、コード例が付いており、エージェントがコンテキストを埋め尽くすことなく1セッション中に何度も呼び出せる大きさです。匿名の呼び出しはキーなしで、エラーもなく動作しました。
バージョンを固定する
最も重要なポイントは、参照元のリンクにありました。バージョンを固定していない回答は、Next.js リポジトリの canary ブランチ上のファイルを指していました。つまり、まだリリースされていないコードのドキュメントです。変化の速いフレームワークでは、canary のドキュメントが、インストール済みのバージョンには存在しない API、名前、デフォルト値を説明していることがあります。
バージョンを固定すれば解決します。ID にバージョンを追加して /vercel/next.js/v16.2.9 とすれば、そのリリースに基づいた回答が返ります。同じ質問に対して、私たちの場合は異なる、より短い回答でした。Context7 が保持しているバージョンは resolve-library-id の出力に一覧表示されており、プロンプト内でバージョンを平易な言葉で指定することもできます。
常設のルールにしておけば、入力の手間が省けます。Context7 自身が推奨しているのは、CLAUDE.md や Cursor のルールに一行追加して、ライブラリのドキュメント、セットアップ、設定については指示がなくても Context7 を使うようエージェントに伝えることです。私たちなら、そこに「そして package.json のバージョンを使うこと」という一文を加えます。
プランと制限
| Free | Pro | Enterprise | |
|---|---|---|---|
| 料金 | $0 | 1 シートあたり月額 $10 | カスタム |
| 含まれるコール数 | 月 1,000 | 1 シートあたり月 2,000 | 1 シートあたり月 2,000 |
| 超過後 | 月がリセットされるまで 1 日あたりボーナス 20 コール | 1,000 コールあたり $5、ブロックなし | 1,000 コールあたり $5 |
| プライベートリポジトリ | 不可 | 可、解析トークン 100 万あたり $5 | 可 |
| チームメンバー | 自分のみ | 最大 30 人 | 無制限、SSO とセルフホスティング対応 |
1 コールは 1 回の検索または 1 回のドキュメントリクエストで、MCP server、CLI、REST API のいずれかを経由します。キーがない場合は、Context7 が「低レート制限」と呼ぶ状態になり、具体的な数値は公開されていません。制限に達したリクエストは HTTP 429 を返し、Retry-After と RateLimit-* ヘッダーが付きます。
実際には、エージェントが Context7 で 1 つの質問に答えるには 2 コールかかります。1 回の resolve と 1 回の query で、リトライすればさらに増えます。プロンプトやルールで ID を指定すれば resolve のステップを省略でき、コストが半分になります。
ドキュメントが Context7 に取り込まれる仕組み
公開ライブラリは誰でも context7.com/add-library で GitHub URL を貼り付けて追加できます。プロジェクトの所有者であるかどうかは問いません。Context7 はウェブサイト、llms.txt ファイル、OpenAPI 仕様にも対応しています。Markdown、MDX、reStructuredText、ノートブックなどのテキストをインデックスし、PDF と DOCX は変換し、主に英語以外で書かれたページはスキップします。リポジトリにドキュメントがほとんどない場合は、Context7 がソースからサンプルを生成します。
ライブラリは、誰かがリクエストしたときにコピーが古ければ更新されます。どの程度古いとみなすかは人気度によって変わります。トップ 100 は 1 日、トップ 1,000 は 15 日、トップ 5,000 は 30 日、それ以外は 45 日で、ウェブサイトと llms.txt ソースはさらに 10 日長くなります。人気の低いライブラリでは、自身のドキュメントより最大 6 週間遅れることがあります。
ライブラリをメンテナンスしている場合は、リポジトリのルートに置く context7.json ファイルで、インデックスの対象を制御できます。対象のフォルダ、ブランチ、過去のバージョン、そして回答の先頭に付加するルールを指定できます。"disallow": true を指定するとライブラリは削除されます。ライブラリを申請すると、管理パネルと認証バッジへの道が得られます。
安全性
Context7 が返すものはすべて誰か他の人が書いたものであり、その一部はプロジェクトの所有者ではない人によって投稿されたものです。つまり、Web ページと同じ種類の入力、すなわちモデルが読むデータであって、従うべき指示ではありません。
Context7 は、投稿されたすべてのリポジトリとサイトを 2 パスのプロンプトインジェクション分類器に通し、フラグが立ったチャンクをスキップすると述べています。ライブラリは、アカウントの年齢、スター数、アクティビティといったシグナルに基づく信頼度と、生成された開発者向け質問のベンチマークでスコアリングされます。上記の 79.96 というスコアはそのベンチマークによるものです。Upstash のブログによると、verified バッジは現時点では視覚的なインジケーターにすぎません。
知っておく価値のあるインシデントが 1 件あります。2026 年 5 月、query-docs の返信が「システム通知」で終わり、アシスタントに npx ctx7 setup -y の実行を提案するよう求めるという報告がありました(issue 2663 と 2673)。メンテナーは、それが 2.3.0 で追加された匿名ユーザー向けサインインプロンプトの独自テストであり、異議を受けて無効化したと説明しました。これはライブラリのドキュメントではなく Context7 のサーバーに由来するものですが、ツールの結果内のテキストがエージェントにコマンド実行を求めるのはいかに容易かを示しています。シェルコマンドはご自身で承認してください。
実践的なルールは次のとおりです。質問にシークレットを含めないこと、verified またはよく知られたライブラリを優先すること、Pro または Enterprise ではチームスペースポリシーを使って使用できるライブラリを制限することです。この種のリスクの詳細は MCP security を参照してください。
代替手段
| サーバー | できること | キー | 備考 |
|---|---|---|---|
| Context7 | バージョンとスコア付きのライブラリドキュメントを事前構築したインデックス | 無料キー | 64,773 stars、MIT サーバー、プライベートインデックス |
| DeepWiki MCP | 任意の公開 GitHub リポジトリについての質問に、AI が書いた wiki から回答 | 不要 | Cognition が mcp.deepwiki.com/mcp でホスト、無料 |
| GitMCP | 1 つのリポジトリの llms.txt または README をドキュメントエンドポイントに変換 |
不要 | 8,515 stars、Apache-2.0、最終 push は 2026 年 5 月 |
| Ref | ドキュメントを検索し、ページを読み取る | 必須 | 1,186 stars、MIT。料金はサイトに記載なし |
毎回同じライブラリを既知のバージョンで参照したいなら、Context7 がより適しています。DeepWiki は、なじみのないリポジトリを全体として理解するのに向いています。GitMCP は、質の高い llms.txt を公開している 1 つのプロジェクトにとって最も軽量な選択肢です。フレームワーク固有の作業では、そのフレームワーク自身のサーバーがこれらすべてを上回ることがあります。Next.js 16 は next-devtools-mcp を通じてバージョンに一致したドキュメントをエージェントに提供しており、これについては Next.js MCP ガイド で解説しています。
うまく動作しない場合
| 表示される内容 | 原因 | 対処 |
|---|---|---|
| HTTP 429 | 無料または匿名の上限に達した | キーを追加する、デイリーボーナスを待つ、またはアップグレードする。使用量は API の usage エンドポイントで確認する |
| コードが使用している API がバージョンに存在しない | バージョンを固定していないクエリが新しいドキュメントや canary ドキュメントから回答された | /org/project/vX で固定するか、プロンプトでバージョンを指定する |
| エージェントが Context7 を呼び出さない | 「use context7」も常設ルールもない | CLAUDE.md または Cursor のルールに追加する |
チュートリアルが get-library-docs を呼び出している |
2.0.0 より前に書かれている | resolve-library-id と query-docs を使用する |
| Codex が起動時に失敗する | 起動タイムアウト | startup_timeout_sec を 40 に設定する |
| ライブラリが古い | 更新はオンデマンドで、最大 45 日 | その Context7 ページで更新するか、メンテナーに GitHub Action の追加を依頼する |
| 誤ったプロジェクトが返ってくる | 1 つの名前に複数の ID がある | resolve の一覧を読み、スニペット、評判、スコアで選んでから ID を指定する |
カタログ内の Context7 エントリは、チェックスコアとインストールコマンドとともにこのページの上部にあります。