Gemini Docs MCP Server について
Gemini Docs MCP Server は、手作業で用意したドキュメントのナレッジベースと Gemini API を使って質問に答えます。技術の学習やデバッグ向けで、特に Roo/Cline を想定し、独自の分割・検索処理ではなくドキュメント全体のコンテキストを扱います。
主な機能
- 01Gemini によるドキュメント質問への回答
- 02技術でタスクを実行できるか確認
- 03問題解決のヒント取得
- 04プラクティスやコード例の確認
- 05手動で用意したドキュメントベース
活用シーン
- 01技術を使ったタスクの実行方法を学ぶ
- 02デバッグ中にヒントを得る
- 03コード例が適切なプラクティスか確認
- 04タスクの実装例や別案を比較
MCP 対応
タスクの実現可否、問題のヒント、プラクティスの確認、手順の質問などを行うドキュメント検索ツールを MCP クライアントに提供します。回答は提供されたドキュメントを使い Gemini API で生成されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Gemini Docs MCP Server
説明
このプロジェクトは、2M トークンという巨大なコンテキストウィンドウを備えた Gemini API を使用して、さまざまな技術のドキュメントにアクセスできる MCP サーバーを実装します。どのクライアントでも動作するはずですが、特に Roo/Cline 環境を対象としています。
このアプローチには、単にウェブを閲覧したり検索エンジンを使ったりする場合と比べて、いくつかの利点があります。
- 厳選されたナレッジベースへのアクセス: LLM は特定のドキュメントを使用するため、モデルを混乱させる可能性のある無関係な結果や誤検出を避けられます。
- コンテキストウィンドウの制限を克服: ドキュメントを直接提供することで、LLM はウェブ検索だけでは得られない情報にもアクセスできます。
- 目的に合わせた、よく練られた回答: 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 を自動的にインストールするには:
npx -y @smithery/cli install @M-Gonzalo/cosa-sai --client claude
この MCP サーバーはクライアントによって自動的に起動および管理されます。有効にするには、設定ファイル(例:~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json)で設定する必要があります。通常、クライアントには設定ファイルを開くボタンがあります。
このサーバーの設定は次のとおりです:
{
"command": "bun",
"args": [
"--watch",
"path/to/repo/cosa-sai-mcp/src/index.ts",
"--verbose"
],
"env": {
"GEMINI_API_KEY": "<your_gemini_api_key>"
},
"disabled": false,
"alwaysAllow": [
"can_x_be_done",
"hints_for_problem",
"is_this_good_practice",
"how_to_do_x"
],
"timeout": 60 // in seconds
}
ナレッジベースの収集とサニタイズ
この MCP サーバーが質問に回答するには、ドキュメントのナレッジベースが必要です。公開リポジトリのダウンロード、ウェブサイトのスクレイピング、またはその他の方法で、このナレッジベースを手動で収集する必要があります。
元のドキュメントからスタイルやその他の不要なコンテンツを取り除くため、任意でサニタイズ処理を行えます。
そのための基本的なツールをいくつか紹介します。より優れた方法があれば、そちらをぜひご利用ください。
単純なスクレイパー:
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --directory-prefix=./local_copy --no-verbose --show-progress $1
簡易 Markdown 風コンバーター:
#!/bin/bash
directory="${1:-.}" # Default to current directory if no argument is provided
output_file="${2:-concatenated.md}" # Default output file name
echo "Concatenating files in '$directory' into '$output_file'..."
# Clear output file if it exists
truncate -s 0 "$output_file"
# Find all files (excluding directories) and process them
find "$directory" -type f -name '*.html' | while IFS= read -r file; do
echo "=== ${file#./} ===" >> "$output_file"
cat "$file" \
| grep -v 'base64' \
| html2markdown >> "$output_file"
echo -e "\n" >> "$output_file"
done
echo "Done! Output saved to '$output_file'"
使用方法
このサーバーは次のツールを提供します:
- 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 ライセンスの下でライセンスされています。
免責事項
このプロジェクトは非常に初期のバージョンであり、バグや制限がある可能性があります。見つけた問題を報告し、改善案や新機能の提案をぜひお寄せください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。