Gemini Docs MCP サーバー
説明
このプロジェクトは、200万トークンという巨大なコンテキストウィンドウを持つGemini APIを用いて、様々な技術のドキュメントへのアクセスを可能にするMCPサーバーを実装します。どのクライアントでも動作するはずですが、特にRoo/Cline環境を対象としています。
このアプローチには、単に Web を閲覧したり検索エンジンを使用したりする場合に比べていくつかの利点があります。
- 厳選されたナレッジ ベースへのアクセス: LLM は特定のドキュメント セットを使用して、モデルを混乱させる可能性のあるジャンク結果や誤検知を回避します。
- **コンテキスト ウィンドウの制限を克服:**ドキュメントを直接提供することで、LLM は Web 検索のみで可能な情報よりも多くの情報にアクセスできます。
- 綿密に検討された、的確な回答: LLMはドキュメントから抜粋した情報を提供するだけでなく、対象となる技術の仕様全体を考慮した、論理的に根拠のある回答を作成します。これにより、「Xを実行する別の方法は何かありますか?」や「このスニペットは慣用的な表現ですか?」といった、より複雑な質問にも対応できます。
また、従来の RAG システムの問題点もいくつか克服しています。
- チャンク化の必要はありません。LLMは、ドキュメントを小さな部分に分割したり、すべての可能な方法を苦労してテストして選択したりすることなく、ドキュメント全体に一度にアクセスできます。
- リトリーバーは不要: Gemini API 自体が、ドキュメント全体にアクセスできる強力なリトリーバーとして機能するため、カスタム リトリーバーを実装する必要はありません。
- **ベクトル化、ベクトルDB、その他の複雑なシステムは不要です。**プレーンテキストを直接操作し、すべてを一度に確認できるため、類似性検索にベクトルは必要ありません。関連性があれば、すぐに認識できます。
ただし、いくつか制限があります。
- **リアルタイム更新なし:**ドキュメントは静的であり、リアルタイムで更新されません。つまり、手動でドキュメントを更新するか、自動化された方法を提供しない限り、LLMは最新の機能やテクノロジーの変更を把握できない可能性があります。
- トークンの数が多いからといって、コンテキストウィンドウが無限大になるわけではありません。LLMは一度に約200万トークンしか認識できないため、一部のテクノロジーのドキュメント全体を把握できない可能性があります。これは特に、膨大な量のドキュメントを持つ大規模で複雑なスタックの場合に当てはまります。
- それほど速くはありません。Gemini 1.5 Pro(Flashではありません)を使用しており、大量のドキュメントを読み込んでいるため、応答に時間がかかる可能性があります。特に最初のクエリでは、サーバーがドキュメントをAPIにアップロードする必要があるため、応答に時間がかかる可能性があります。
特徴
- クライアントが「ドキュメントに質問する」アプローチを採用して、あまり知られていない技術やあまり知られていない技術を含む任意の数の技術を学習およびデバッグできるようにします。
- Gemini API を使用して、ドキュメントに関する質問に回答します。
- ドキュメントを照会するための複数のツールをサポートしています。
can_x_be_done
: 特定のタスクが特定のテクノロジーで実行できるかどうかを確認します。hints_for_problem
: 特定の問題を解決するためのヒントを取得します。is_this_good_practice
: コード スニペットが適切なプラクティスに従っているかどうかを確認します。how_to_do_x
: 特定のタスクの例と代替アプローチを取得します。
- デバッグ用のログ システムを提供します (
--verbose
フラグで有効化)。
はじめる
Smithery経由でインストール
Smithery経由で Claude Desktop 用の Gemini Docs Server を自動的にインストールするには:
このMCPサーバーはクライアントによって自動的に起動および管理されます。有効にするには、設定ファイル(例: ~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json
)で設定する必要があります。通常、クライアントには設定ファイルを開くボタンがあります。
このサーバーの構成は次のとおりです。
ナレッジベースの入手とサニタイズ
このMCPサーバーでは、質問に答えるためのドキュメントのナレッジベースが必要です。このナレッジベースは、公開リポジトリのダウンロード、ウェブサイトのスクレイピング、その他の方法など、手動で入手する必要があります。
オプションのサニテーション プロセスを実行して、元のドキュメントからスタイルやその他の不要なコンテンツを削除できます。
そのための基本的なツールをいくつかご紹介します。より良い解決策を推奨します。
ナイーブ・スクラッパー:
Markdown風への簡単かつ簡単な変換ツール:
使用法
このサーバーは次のツールを提供します。
- **can_x_be_done:**特定のタスクが特定のテクノロジーで実行できるかどうかを確認します。
- 入力:
docs
、prompt
、x
、technology
- 出力:
success
、data
- 入力:
- **hints_for_problem:**特定の問題を解決するためのヒントを取得します。
- 入力:
docs
、prompt
、problem
、context
、environment
- 出力:
success
、data
- 入力:
- **is_this_good_practice:**コード スニペットが適切なプラクティスに従っているかどうかを確認します。
- 入力:
docs
、prompt
、snippet
、context
- 出力:
success
、data
- 入力:
- **how_to_do_x:**特定のタスクの例と代替アプローチを取得します。
- 入力:
docs
、prompt
、x
、technology
- 出力:
success
、data
- 入力:
貢献
貢献を歓迎します!以下のガイドラインに従ってください。
- リポジトリをフォークします。
- 機能またはバグ修正用の新しいブランチを作成します。
- 変更を加えて、説明的なコミット メッセージを付けてコミットします。
- プルリクエストを送信します。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています。
免責事項
これはプロジェクトの初期段階であり、バグや制限事項が含まれている可能性があります。問題を発見した場合はご報告ください。また、改善点や新機能のご提案もお気軽にお寄せください。
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Gemini API を介して厳選されたドキュメントへのアクセスを提供し、ユーザーがコンテキストと検索の制限を克服して技術ドキュメントを効果的に照会および操作できるようにします。
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityUtilizes Gemini API and Google Search to generate answers based on the latest information for user queries.Last updated -321JavaScriptMIT License
- -securityFlicense-qualityA Model Context Protocol server utilizing Claude AI for generating intelligent queries and offering documentation assistance based on API documentation analysis.Last updated -32TypeScript
- AsecurityAlicenseAqualityAn MCP server that enables users to fetch Python documentation using the Brave Search API through natural language queries.Last updated -1JavaScriptApache 2.0
- -securityFlicense-qualityA simple Model Context Protocol server that enables searching and retrieving relevant documentation snippets from Langchain, Llama Index, and OpenAI official documentation.Last updated -Python