mcpField
M
MCP Documentation Search Server

MCP Documentation Search Server

ローカル
github.com/PicardRaphaelメモリ・ナレッジ1384 週間前に更新

MCP Documentation Search Server について

MCP Documentation Search Server は、AI システム向けに複数のフレームワークやライブラリのドキュメント検索を一元化します。ライブラリ名の別表記を解決し、DuckDuckGo 検索と非同期の並列取得を行います。

主な機能

  1. 016 種類のフレームワーク・ライブラリの文書検索
  2. 02ライブラリ名の別名解決
  3. 03DuckDuckGo によるサイト指定検索
  4. 04非同期の並列コンテンツ取得
  5. 05入力検証とリクエストエラー処理

活用シーン

  1. 01Next.js API の使い方を調べる
  2. 02Tailwind CSS の利用方法を確認する
  3. 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 パッケージマネージャー
  • 仮想環境(推奨)

🚀 クイックスタート

  1. リポジトリをクローンする
git clone <repository-url>
cd mcp-server
  1. 仮想環境をセットアップする
python -m venv .venv
# On Windows:
.venv\Scripts\activate
# On Unix or MacOS:
source .venv/bin/activate
  1. 依存関係をインストールする
pip install -r requirements.txt
  1. サーバーを実行する
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

🔧 設定

対応ライブラリ

新しいライブラリを追加するには:

  1. config.py にドキュメントの URL を追加します。
DOCS_URLS = {
    "new-library": "https://docs.new-library.com",
    # ... existing entries
}
  1. よく使われるエイリアスを追加します。
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

🤝 コントリビューション

コントリビューションを歓迎します。次の方法でご協力いただけます。

  1. リポジトリをフォークする
  2. 機能ブランチを作成する
  3. 変更を加える
  4. 新機能のテストを追加する
  5. すべてのテストが通ることを確認する
  6. プルリクエストを送信する
新しいライブラリの追加
  1. config.py の DOCS_URLS を更新する
  2. LIBRARY_ALIASES に関連するエイリアスを追加する
  3. 統合をテストする
  4. ドキュメントを更新する
  5. プルリクエストを送信する

🐛 トラブルシューティング

よくある問題と解決方法:

  • TimeoutError:config.py の HTTP_TIMEOUT を大きくしてください
  • 結果が見つからない:別の検索語を試すか、ライブラリ名を確認してください
  • HTTP エラー:インターネット接続とドキュメントの URL を確認してください

📄 ライセンス

このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。

🙏 謝辞

  • コア機能を提供する FastMCP
  • 検索機能を提供する DuckDuckGo
  • テストフレームワークを提供する pytest
  • サポート対象のすべてのドキュメントプロバイダー

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。