MCP Documentation Search Server について
MCP Documentation Search Server は、AI システム向けに複数のフレームワークやライブラリのドキュメント検索を一元化します。ライブラリ名の別表記を解決し、DuckDuckGo 検索と非同期の並列取得を行います。
主な機能
- 016 種類のフレームワーク・ライブラリの文書検索
- 02ライブラリ名の別名解決
- 03DuckDuckGo によるサイト指定検索
- 04非同期の並列コンテンツ取得
- 05入力検証とリクエストエラー処理
活用シーン
- 01Next.js API の使い方を調べる
- 02Tailwind CSS の利用方法を確認する
- 03LangChain や Framer Motion の文書を検索する
MCP 対応
FastMCP ツールを通じて、MCP クライアントにドキュメント検索を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP ドキュメント検索サーバー
FastMCP で構築された強力なドキュメント検索サーバーです。AI システムが、複数の人気フレームワークやライブラリのドキュメントを横断して、インテリジェントに検索できるようにします。このツールにより、AI モデルは統一されたインターフェースを使用して、さまざまなドキュメントソースから関連情報をすばやく取得できます。
🌟 特長
-
📚 複数ライブラリのサポート:複数のライブラリのドキュメントを検索できます。
- LangChain - JavaScript/TypeScript 版 LangChain のドキュメント
- LangGraph - LangGraph.js のドキュメント
- Next.js - Next.js フレームワークのドキュメント
- Tailwind CSS - ユーティリティファーストな CSS フレームワーク
- FastMCP - FastMCP のドキュメント
- Framer Motion - React 用アニメーションライブラリ
-
🔍 インテリジェントな検索
- ライブラリ名の表記揺れをスマートに解決
- DuckDuckGo を利用した正確な検索
- サイトを指定した検索
-
⚡ パフォーマンス機能
- 非同期処理
- 効率的な Web リクエスト処理
- コンテンツの並列取得
-
🛡️ 堅牢なエラー処理
- ネットワークのタイムアウト管理
- 無効な入力の検証
- HTTP エラー処理
- リクエスト失敗からの復旧
📋 要件
- Python 3.8+
- pip または uv パッケージマネージャー
- 仮想環境(推奨)
🚀 クイックスタート
- リポジトリをクローンする
git clone <repository-url>
cd mcp-server
- 仮想環境をセットアップする
python -m venv .venv
# On Windows:
.venv\Scripts\activate
# On Unix or MacOS:
source .venv/bin/activate
- 依存関係をインストールする
pip install -r requirements.txt
- サーバーを実行する
python main.py
💻 使用方法
基本的な使用方法
from main import get_docs
# Search Framer Motion documentation
result = await get_docs(
query="how to animate on scroll",
library="framer-motion"
)
# Search Next.js documentation
result = await get_docs(
query="how to use app router",
library="next"
)
ライブラリ名の表記揺れ
システムは、さまざまなライブラリ名の形式をインテリジェントに処理します。
# All these calls will work the same way
await get_docs(query="animations", library="framer")
await get_docs(query="animations", library="framermotion")
await get_docs(query="animations", library="framer-motion")
await get_docs(query="animations", library="motion")
🧪 テスト
このプロジェクトには、信頼性と正確性を確保するための包括的なテストスイートが含まれています。テストは、主に次の 3 つのカテゴリに分類されています。
テスト構成
-
ユニットテスト:各コンポーネントを個別にテストします。
test_utils.py:ライブラリ名の正規化と URL 取得のテストtest_services.py:Web 検索とコンテンツ取得サービスのテスト
-
統合テスト:コンポーネントが連携して動作することをテストします。
test_main.py:メイン API 関数get_docsのテスト
テストの実行
すべてのテストを実行するには:
python -m pytest
特定のテストモジュールを実行するには:
python -m pytest tests/test_utils.py
python -m pytest tests/test_services.py
python -m pytest tests/test_main.py
詳細な出力を表示してテストを実行するには:
python -m pytest -v
テストカバレッジ
テストでは次の項目をカバーします。
- ✅ ライブラリ名の正規化と検証
- ✅ 各ライブラリの URL 取得
- ✅ Web 検索機能
- ✅ コンテンツ取得とエラー処理
- ✅ ドキュメント検索の統合
- ✅ API 入力の検証とエラー処理
- ✅ さまざまなライブラリ名形式のエイリアス解決
非同期テスト
このプロジェクトでは、同期テスト環境で非同期コードをテストするために、カスタムの run_async ヘルパー関数を使用します。この方法により、複雑なテスト設定を必要とせずに非同期関数をテストできます。
🏗️ プロジェクト構成
mcp-server/
├── main.py # Entry point and FastMCP tool definition
├── config.py # Configuration settings and constants
├── services.py # Web search and content fetching services
├── utils.py # Utility functions for library name handling
├── tests/ # Test suite
│ ├── test_utils.py # Tests for utility functions
│ ├── test_services.py # Tests for web services
│ ├── test_main.py # Tests for main API
│ └── conftest.py # Pytest configuration
├── requirements.txt # Project dependencies
└── README.md # Documentation
🔧 設定
対応ライブラリ
新しいライブラリを追加するには:
config.pyにドキュメントの URL を追加します。
DOCS_URLS = {
"new-library": "https://docs.new-library.com",
# ... existing entries
}
- よく使われるエイリアスを追加します。
LIBRARY_ALIASES = {
"new-lib": "new-library",
# ... existing entries
}
HTTP 設定
config.py で変更します。
HTTP_TIMEOUT = 30.0 # Timeout in seconds
MAX_SEARCH_RESULTS = 2 # Number of search results to fetch
🤝 コントリビューション
コントリビューションを歓迎します。次の方法でご協力いただけます。
- リポジトリをフォークする
- 機能ブランチを作成する
- 変更を加える
- 新機能のテストを追加する
- すべてのテストが通ることを確認する
- プルリクエストを送信する
新しいライブラリの追加
config.pyのDOCS_URLSを更新するLIBRARY_ALIASESに関連するエイリアスを追加する- 統合をテストする
- ドキュメントを更新する
- プルリクエストを送信する
🐛 トラブルシューティング
よくある問題と解決方法:
- TimeoutError:
config.pyのHTTP_TIMEOUTを大きくしてください - 結果が見つからない:別の検索語を試すか、ライブラリ名を確認してください
- HTTP エラー:インターネット接続とドキュメントの URL を確認してください
📄 ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
🙏 謝辞
- コア機能を提供する FastMCP
- 検索機能を提供する DuckDuckGo
- テストフレームワークを提供する pytest
- サポート対象のすべてのドキュメントプロバイダー
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。