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
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
モデル コンテキスト プロトコルを実装し、自然言語を介して外部ツール機能で LLM を強化する Flask ベースのサーバー。これにより、天気検索や計算などのツールをモデルのテキスト出力で直接呼び出すことができます。
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 -131335MIT 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 -23Apache 2.0
- -securityAlicense-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
- AsecurityFlicenseAqualityA 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