MCP Server について
MCP Serverは、トピックに関連するウェブ上の資料を集めて学習パスを生成します。ツリー構造の調整や非同期処理に対応し、標準化されたJSONを利用するアプリ向けです。
主な機能
- 01ウェブ資料の検索と取得
- 02TF-IDFによる関連資料の選別
- 03学習パスのツリー構造を調整
- 04YouTube動画の検索
- 05非同期タスクと進捗表示
- 06リクエスト結果のキャッシュ
活用シーン
- 01トピック別の学習パス作成
- 02学習ノード数や構造の調整
- 03指定言語でのパス生成
- 04時間のかかる生成タスクの進捗確認
MCP 対応
このサーバーはMaster Content Plansを生成するAPIを提供し、Model Context Protocolのツールは公開しません。READMEにはMCPインターフェースの記載がありません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバー
トピックに基づいてマスターコンテンツプラン(MCP)を生成するサーバーです。ウェブからリソースを集約し、体系的な学習パスとして整理します。
特長
- 技術分野に限らず、あらゆるトピックの学習パスを生成
- ウェブ検索とスクレイピングを使用して関連リソースを検索
- カスタマイズ可能なノード数で、リソースを論理的な順序に整理
- ポルトガル語を重視した多言語対応
- Render の無料プラン向けにパフォーマンスを最適化
- 応答を高速化するキャッシュシステム
- クライアントアプリケーションで利用できる、標準化された JSON 構造を返却
- 新機能:トピックとの一致を確保する、TF-IDF に基づくリソース関連性フィルタリング
- 新機能:バランスの取れた学習体験を実現する、学習ツリー全体への戦略的なクイズの配置
- 新機能:学習パスに関連動画を含める YouTube 連携
- 新機能:さまざまな種類のトピックに合わせて、より具体的なコンテンツを生成するカテゴリシステム
- 新機能:ユーザー体験を向上させ、タイムアウトを防ぐリアルタイムの進捗フィードバック付き非同期タスクシステム
- 新機能:パフォーマンス向上と応答時間短縮を実現する強化されたキャッシュシステム
- 新機能:リソースをより効果的に活用する最適化されたウェブスクレイピング手法
- 新機能:各ウェブサイトに最も効率的な手法を自動で選択する適応型スクレイピングシステム
- 新機能:ブラウザーを効率的に再利用し、メモリ使用量を削減する Puppeteer インスタンスプール
技術スタック
- Python 3.9+
- FastAPI
- JavaScript を多用するウェブサイトのスクレイピングに使用する Pyppeteer
- ウェブスクレイピング中の検出回避に使用する Pyppeteer-stealth
- ブラウザーを効率的に再利用する Puppeteer インスタンスプール
- DuckDuckGo Search API
- HTML 解析用の BeautifulSoup
- TF-IDF に基づくリソース関連性フィルタリング用の scikit-learn
- YouTube 動画の検索とメタデータ抽出用の yt-dlp
- 分散キャッシュ用の Redis(任意)
- 効率的なデータシリアライズ用の msgpack
- 高度なインメモリキャッシュ用の cachetools
インストール
-
リポジトリをクローンします:
git clone https://github.com/yourusername/mcp_server.git cd mcp_server -
仮想環境を作成します:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Python の依存関係をインストールします:
pip install -r requirements.txt -
Node.js の依存関係をインストールします(最適化されたスクレイピングシステム用):
npm install -
Pyppeteer 用の Chrome/Chromium をインストールします(まだインストールされていない場合)
使い方
ローカルでの実行
-
付属のバッチファイルを使用してサーバーを起動します(Windows):
run_local.batまたは、uvicorn を手動で実行します:
uvicorn main:app --reload --host 0.0.0.0 --port 8000 -
http://localhost:8000で API にアクセスします -
次の URL に GET リクエストを送信して MCP を生成します:
GET /generate_mcp?topic=your_topic -
http://localhost:8000/docsで API ドキュメントを確認します
本番環境の URL
本番サーバーは次の URL で利用できます:
https://reunemacacada.onrender.com
この README に記載されているすべてのエンドポイントは、ローカル URL と本番環境の URL の両方で利用できます。
キャッシュシステムのテスト
-
最初のリクエストを送信して MCP を生成します(これによりキャッシュが登録されます):
GET /generate_mcp?topic=python&num_nodes=15&language=pt -
同じパラメーターで2回目のリクエストを送信します(キャッシュが使用されます):
GET /generate_mcp?topic=python&num_nodes=15&language=pt結果がキャッシュから取得されるため、2回目のリクエストは大幅に速くなります。
ドキュメント
詳細なドキュメントは docs フォルダーにあります:
- API リファレンス - API の詳細なドキュメント
- エンドポイントリファレンス - すべてのエンドポイントの完全なリファレンス
- Flutter 連携 - Flutter アプリとの連携ガイド
- 非同期タスクシステム - 非同期タスクシステムのドキュメント
- パフォーマンス改善 - パフォーマンス最適化の概要
- キャッシュシステム - キャッシュシステムのドキュメント
- ウェブスクレイピングの最適化 - ウェブスクレイピングの最適化に関する詳細
API エンドポイント
GET /health- ヘルスチェックエンドポイントGET /generate_mcp?topic={topic}&max_resources={max_resources}&num_nodes={num_nodes}&min_width={min_width}&max_width={max_width}&min_height={min_height}&max_height={max_height}&language={language}&category={category}- 指定したトピックの MCP を同期的に生成しますtopic(必須):MCP を生成するトピック(最小 3 文字)max_resources(任意):含めるリソースの最大数(デフォルト:15、最小:5、最大:30)num_nodes(任意):学習パスに含めるノード数(デフォルト:15、最小:10、最大:30)min_width(任意):ツリーの最小幅(第 1 レベルのノード数)(デフォルト:3、最小:2、最大:10)max_width(任意):ツリーの各レベルでの最大幅(デフォルト:5、最小:3、最大:15)min_height(任意):ツリーの最小高さ(深さ)(デフォルト:3、最小:2、最大:8)max_height(任意):ツリーの最大高さ(深さ)(デフォルト:7、最小:3、最大:12)language(任意):リソースの言語(デフォルト:"pt")category(任意):トピックのカテゴリ(例:"technology"、"finance"、"health")。指定しない場合は自動的に検出されます。
POST /generate_mcp_async?topic={topic}&max_resources={max_resources}&num_nodes={num_nodes}&min_width={min_width}&max_width={max_width}&min_height={min_height}&max_height={max_height}&language={language}&category={category}- MCP の非同期生成を開始しますGET /status/{task_id}- 非同期タスクのステータスを確認しますGET /tasks- すべてのタスクを一覧表示しますPOST /clear_cache?pattern={pattern}&clear_domain_cache={clear_domain_cache}- パターンに基づいてキャッシュをクリアしますpattern(任意):キャッシュキーに一致させるパターン(デフォルト:"*"ですべて)clear_domain_cache(任意):ドメインメソッドのキャッシュもクリアするかどうか(デフォルト:false)
GET /cache_stats- ドメインメソッドのキャッシュに関する情報を含む、キャッシュの統計情報を取得します
例
基本的な使い方(ポルトガル語)
GET /generate_mcp?topic=python
ノード数のカスタマイズ
GET /generate_mcp?topic=machine+learning&num_nodes=20
英語
GET /generate_mcp?topic=javascript&language=en
カテゴリを手動で指定
GET /generate_mcp?topic=python&category=technology
詳細なカスタマイズ
GET /generate_mcp?topic=história+do+brasil&max_resources=20&num_nodes=25&min_width=4&max_width=8&min_height=4&max_height=8&language=pt
ツリー構造の制御
GET /generate_mcp?topic=machine+learning&min_width=2&max_width=4&min_height=5&max_height=10
非同期生成
POST /generate_mcp_async?topic=inteligência+artificial&category=technology
タスクのステータスを確認
GET /status/550e8400-e29b-41d4-a716-446655440000
キャッシュをクリア
POST /clear_cache
特定のキャッシュをクリア
POST /clear_cache?pattern=mcp:*
パフォーマンスの改善
MCP サーバーには、いくつかのパフォーマンス最適化が含まれています。
- キャッシュシステム:繰り返しのクエリに対する応答時間を短縮するため、結果をキャッシュします
- 非同期タスクシステム:実行時間の長い処理を非同期で処理します
- リソースのフィルタリング:TF-IDF に基づくフィルタリングにより、最も関連性の高いリソースを選択します
- 最適化されたウェブスクレイピング:リソースの使用量を減らす効率的なウェブスクレイピング手法
- 適応型スクレイピングシステム:各ウェブサイトに最も効率的なスクレイピング方法を自動的に選択します
- Puppeteer インスタンスプール:ブラウザーインスタンスを再利用して、メモリ使用量と起動時間を削減します
- ドメインメソッドキャッシュ:ドメインごとに最適なスクレイピング方法を記憶します
- リソースのブロック:スクレイピング中に不要なリソース(画像、スタイルシート、フォント)をブロックします
パフォーマンスの向上
- キャッシュ済みのトピックでは、応答時間を 60~80%短縮
- 新しいトピックでは、応答時間を 30~50%短縮
- ウェブスクレイピング中のメモリ使用量を 40~60%削減
- 同時リクエストのスループットを 3~5 倍に向上
デプロイ
サーバーは、さまざまなプラットフォームにデプロイできます。
Docker を使用
docker build -t mcp-server .
docker run -p 8080:8080 mcp-server
Render、Fly.io、その他のプラットフォームへのデプロイ
Docker コンテナまたは Python アプリケーションのデプロイについては、各プラットフォーム固有の手順に従ってください。
ライセンス
プロプライエタリソフトウェア - All Rights Reserved
このソフトウェアはプロプライエタリであり、機密情報です。このソフトウェアの無断での複製、配布、改変、公衆への展示または公衆への実演は固く禁じられています。このソフトウェアは、有料サブスクリプションモデルでのみ使用することを目的としています。
© 2024 ReuneMacacada. All rights reserved.
最終コミット:v1.1.2 - DuckDuckGo のレート制限と Puppeteer に関する問題を修正
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。