HAL_DATA_techBlog

HALDATAの技術ブログです。

Context7 MCP- 継続的に更新されるライブラリを扱う際の、LLM や AI コードエディタの制限を克服する最適なソリューション

問題の紹介

ChatGPT、Claude、Copilot などの大規模言語モデル(LLM)は、開発において強力なツールとなっています。しかし、これらのモデルは一般に古いデータをもとに学習されているため、古くなった、あるいは不正確なコードやAPIを提案してしまうことがあります。その結果、開発者は混乱や時間の浪費、動作しないコードに直面し、不満を感じることが多くなります。特に、Vue.js、React、Next.js、Tailwind といった進化の速いライブラリを扱う場合、このようなズレは顕著に現れます。

Context7 MCPとは?

Context7は、Upstashが開発したオープンソースの**MCPサーバー(Model Context Protocol)**で、最新の公式ドキュメントをAIのコンテキストに直接統合します。AIが古いデータに依存するのではなく、利用中のライブラリやフレームワークの最新ドキュメントを自動的に取得してAIのプロンプトに反映させます。

Context7 MCPの主な特徴

正確かつ最新のコード: 最新バージョンのライブラリに基づく例や提案。

誤ったAPIの推測を防止: ドキュメント化された実際の関数のみを利用。

バージョン特化のガイダンス: 実際に使用しているライブラリのバージョンに合わせた回答。

シームレスなワークフロー: ドキュメントサイトを頻繁に切り替える必要なく、既存のAIコーディングアシスタント(Cursor、VS CodeのMCP拡張機能など)に直接統合可能。

GitHubスターのグラフから人気度が分かります:

必要条件

Context7 MCPをインストールする前に以下の準備が必要です:

  1. Node.js: バージョン18.0.0以上。Context7はNode.jsのエコシステムに依存しており、主にnpx(または代替としてbunxdeno)を使用します。ターミナルでnode -vを実行してバージョンを確認し、必要ならnodejs.orgからダウンロードしてください。
  2. MCP対応クライアント: Context7はMCPサーバーであり、対話するためにはMCPクライアントアプリケーションが必要です。人気のあるクライアントとしては次のようなものがあります:
    • Cursor IDE
    • VS Code(MCP拡張機能「MCP Support」など)
    • Windsurf
    • Claude Code(CLIツール)
    • Claude Desktop

利用可能なContext7ツール

Context7はプロンプトで直接使用可能なツールを提供しています:

  • resolve-library-id: ライブラリ名をContext7対応のライブラリIDに変換します。
    • libraryName(必須)
  • get-library-docs: Context7対応のライブラリIDを使用してドキュメントを取得します。
    • context7CompatibleLibraryID(必須)
    • topic(オプション): 特定のトピック(例:「routing」、「hooks」)に焦点を当てる。
    • tokens(オプション、デフォルト10000): 返されるトークンの最大数。

Context7のドキュメント処理手順

Context7は以下の手順でドキュメントを処理します:

  1. 解析(Parse): 公式ドキュメントからコードや例を抽出。
  2. 内容の拡充(Enrich): LLMを利用して説明やメタデータを追加。
  3. ベクトル化(Vectorize): 内容を検索可能なエンベディングに変換。
  4. 再ランク付け(Rerank): 質問に対する関連性を評価。
  5. キャッシュ(Cache): Redisに結果を保存しアクセス効率を向上。

Context7 MCPのワークフロー

Context7使用時のワークフローは以下の通りです:

  1. ライブラリの特定: resolve-library-idを使用して使用中のライブラリを特定します。
  2. ドキュメントへのアクセス: get-library-docsで最新ドキュメントを取得します。
  3. 内容のフィルタリング: 質問に最も適した内容を選択します。
  4. 直接統合: ドキュメント内容をプロンプトに組み込み、AIが正確に回答できるようにします。

インストール手順

Cursor IDEにContext7 MCPをインストールする方法

  1. Settings -> Cursor Settings -> MCP -> Add new global MCP server に移動します。
  2. 次の設定を Cursor の ~/.cursor/mcp.json ファイルに貼り付ける方法が推奨されます。特定のプロジェクトにインストールしたい場合は、プロジェクトフォルダ内に .cursor/mcp.json を作成してください。詳しくは Cursor MCP docs を参照してください。
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"]
    }
  }
}
  • ファイルを保存し、変更を反映させるために Cursor を再起動してください。

Cursor の代替手段(Bun または Deno を使用する場合):

npx に問題がある場合や好まない場合は、bunxdeno を使用することもできます。

  • Bun を使用する場合:

    {
      "mcpServers": {
        "context7": {
          "command": "bunx",
          "args": ["-y", "@upstash/context7-mcp"]
        }
      }
    }
    
  • Deno を使用する場合:

    {
      "mcpServers": {
        "context7": {
          "command": "deno",
          "args": ["run", "--allow-env", "--allow-net", "npm:@upstash/context7-mcp"]
        }
      }
    }
    

    (注:Deno では明示的なネットワーク許可(--allow-net)が必要です。)

実用的な例

プロンプト例:

Guide to creating a composable using Fetch API in Vue 3 with the Composition API. use context7

Context7 は、Vue.js の公式ドキュメントから最新のサンプルコードを直接提供します。

Context7 MCP を最適化するためのヒント(トークンと費用の節約)

以下は、Context7 MCPを効率的に利用し、内容の質を向上させつつ、AI API 呼び出し時のトークン消費と費用を節約するためのヒントです。

1. 適切なタイミングで「use context7」を追加する

「use context7」は、技術的な内容が本当に必要な場合や、ライブラリ・フレームワークが最近更新された場合のみに使用してください。

2. 質問を具体的かつ明確にする

プロンプトが詳細であればあるほど、Context7が正確な情報を効率よく抽出でき、トークン消費を大幅に節約できます。

  • 良い例:
Create a composable for managing global state using Pinia in Vue 3. use context7
  • 最適でない例:
Create a composable in Vue. use context7

3. topicパラメータを活用する

特定のトピック(composition-apipiniarouternavigation-guardsなど)にフォーカスしたい場合、プロンプト内でそれを明確に示してください。

  • navigation-guardsの例:
Guide to using Vue Router 4 for route protection, topic: navigation-guards. use context7

4. トークン数を設定で制限する

AIサービスの使用コストを抑えるために、トークンの最大数を設定できます。

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"],
      "env": {
        "DEFAULT_MINIMUM_TOKENS": "2000"
      }
    }
  }
}

注意:トークンを減らしすぎると、AIが正確な回答に必要なコンテキストを取得できなくなる可能性があります。

結論

Context7 MCPは開発者が常に最新かつ正確な情報をもとに作業できるよう支援する理想的なソリューションです。これによりミスを削減し、時間と費用の節約につながります。オープンソースプロジェクトとして、コミュニティからの貢献を通じて今後のさらなる発展が期待されています。

参考資料

  1. Upstash. context7. GitHub repository. https://github.com/upstash/context7
  2. Upstash Blog「Context7 MCP: Up-to-Date Docs for Any Cursor Prompthttps://upstash.com/blog/context7-mcp
  3. Upstash Blog「Introducing Context7: Up-to-Date Docs for LLMs and AI Code Editorshttps://upstash.com/blog/context7-llmtxt-cursor
  4. Anthropic. Model Context Protocol Specification. https://modelcontextprotocol.org
  5. Upstash documentation. https://upstash.com/docs/introduction