MCPサーバーの実装
外部ツールを使用して大規模言語モデル機能を強化するための Model Context Protocol (MCP) の完全な Flask ベースの実装。
概要
このリポジトリは、モデルのテキスト出力内で直接ツールを呼び出すことでLLM機能を拡張する手法であるモデルコンテキストプロトコル(MCP)を処理するサーバーの構築方法を示します。関数呼び出しとは異なり、MCPはツール定義をコンテキストウィンドウに直接配置し、モデルの自然言語応答を解析してツールの使用状況を識別します。
特徴
🔧完全なMCP実装:完全な解析、実行、および応答処理
🌤️サンプルツール: パラメータ検証機能を備えた天気予報および計算ツール
🔄会話フロー:複数のやり取りにわたってコンテキストを維持する
🧩正規表現ベースの解析:ツール呼び出しのための柔軟なテキスト解析
🚀 Flask API : チャット統合のための REST API エンドポイント
プロジェクト構造
インストール
リポジトリをクローンします。
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依存関係をインストールします:
pip install -r requirements.txt環境変数を設定します。
# Create a .env file with: LLM_API_KEY=your_llm_api_key_here WEATHER_API_KEY=your_weather_api_key_here FLASK_APP=app.py FLASK_ENV=development
使用法
サーバーの実行
Flask 開発サーバーを起動します。
生産の場合:
APIエンドポイント
POST /chat : MCP でチャットメッセージを処理する
curl -X POST http://localhost:5000/chat \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "user", "content": "What's the weather like in Boston?" } ] }'
スタンドアロンの例
サンプル スクリプトを実行して、MCP の動作を確認します。
仕組み
ツール登録: ツールはパラメータと実行ロジックとともに登録されます
ツール定義の挿入: XML形式のツールの説明がプロンプトに追加されます
LLM 応答処理: 正規表現パターンは LLM のテキスト出力内のツール呼び出しを識別します。
ツール実行: パラメータが解析され、適切なツールハンドラに渡されます。
結果の挿入: ツールの実行結果がレスポンスに挿入されます
MCPと関数呼び出し
特徴 | MCP | 関数呼び出し |
定義場所 | プロンプトテキスト | APIパラメータ内 |
呼び出し形式 | 自然言語 | 構造化JSON |
実装 | テキスト解析 | API統合 |
可視性 | 応答で表示される | 隠れている可能性があります |
プラットフォームサポート | テキストベースのLLM | APIサポートが必要 |
会話例
ユーザー: ボストンの天気はどうですか?
法学修士:
処理後:
独自のツールを追加する
Toolから継承した新しいクラスを作成するパラメータと実行ロジックを定義する
MCPハンドラーに登録する
例:
MCP の構成と呼び出しフロー
ツール登録:
MCPツールはハンドラーに登録されます
各ツールは、名前、説明、パラメータ定義を提供します。
ツール定義の注入:
ツール定義がシステムメッセージに追加されます
MCPのフォーマットはXML構造に従います
LLM応答処理:
LLMはツールの呼び出しを含む可能性のある応答を生成します
パターンマッチングはテキスト内のツール呼び出しを識別します
ツールパラメータは解析され、ツール実行メソッドに渡されます
ツールの実行:
ツールは指定されたパラメータで実行されます
結果が会話に反映される
会話管理:
ツールの結果を含む処理済みの応答は会話履歴に追加されます
今後のLLMリクエストには、コンテキストのためにこの履歴が含まれます。
会話例
会話の例は次のようになります。
ユーザー: ボストンの天気はどうですか?
システム: MCPツール定義を含むプロンプトをLLMに送信します
LLMの回答:
MCPハンドラ:応答を解析し、ツール呼び出しを見つけて、天気ツールを実行します。
ツール実行結果:
処理された応答(ユーザーに返送されます):
ユーザー: 144 の平方根を計算できますか?
LLMの回答:
MCP ハンドラ:応答を解析し、計算ツールを実行します
ツール実行結果:
処理された応答(ユーザーに返送されます):
これは、LLM のテキストベースの呼び出しから実行および応答処理までの、MCP ツールの使用の完全なフローを示しています。
ライセンス
マサチューセッツ工科大学
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
This server cannot be installed
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityA Model Context Protocol server that provides basic mathematical and statistical functions to LLMs, enabling them to perform accurate numerical calculations through a simple API.Last updated -13552MIT License
- -securityAlicense-qualityA comprehensive toolkit that enhances LLM capabilities through the Model Context Protocol, allowing LLMs to interact with external services including command-line operations, file management, Figma integration, and audio processing.Last updated -25Apache 2.0
- -security-license-qualityA Model Context Protocol server that enables LLMs to interact with databases (currently MongoDB) through natural language, supporting operations like querying, inserting, deleting documents, and running aggregation pipelines.Last updated -MIT License
- Asecurity-licenseAqualityA Model Context Protocol server that allows LLMs to interact with Python environments, enabling code execution, file operations, package management, and development workflows.Last updated -9