MCP Hot Update Server Demo について
MCP Hot Update Server Demoは、JSONからユーティリティ関数を読み込み、再起動せずに登録済みツールを更新するFastMCPのサンプルです。動的なツール管理を示すもので、本番利用ではexec()の実行に対する追加対策が必要です。
主な機能
- 01ユーティリティ関数の動的読み込み
- 02JSON設定によるツール管理
- 03再起動不要のツール更新
- 04エラー処理とログ記録
活用シーン
- 01MCPツールの動的登録のテスト
- 02JSONによるユーティリティ関数の変更
- 03開発中のホットアップデートの検証
MCP 対応
JSON設定で定義された関数を読み込み、MCPツールとして登録します。コードの実行にはexec()を使用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
インストール方法は未掲載です
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ツール一覧はまだ取得されていません
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP ホットアップデートサーバーのデモ
これは FastMCP フレームワークをベースにしたホットアップデートサーバーのサンプルで、サーバーを再起動せずにユーティリティ関数を動的に読み込み、更新できます。
特長
- ユーティリティ関数の動的読み込みに対応
- JSON 設定ファイルを使ったツールの管理
- リアルタイムのホットアップデート機能
- 詳細なエラー処理とログ記録
主なコード
exec(tool_code, globals(), local_namespace)
if inspect.isfunction(obj) and obj.__name__ in local_namespace:
if found_func is not None:
# Handle potential duplicate function definition if needed
pass # Or log a warning, raise an error, etc.
found_func = obj
if found_func:
# Add the tool to MCP using the database name
mcp.tool(
name=tool_name, description=tool_description
)(found_func)
print(f"Successfully registered tool '{tool_name}'")
🚀 クイックスタート
1️⃣ 環境のセットアップ
Python 3.7+ がインストールされていることを確認してください。次に、必要なライブラリをインストールします。
$ pip install fastmcp
fastmcp: MCP の Python 実装ライブラリです。
2️⃣ MCP サーバーの実行
$ python server.py
tools.jsonファイルの形式は次のとおりです。
[
{
"name": "Tool Name",
"description": "Tool Description",
"code": "def function_name(params):\n # Function implementation\n return result"
}
]
セキュリティに関する注意事項
⚠️ 重要なセキュリティ警告:
- 現在の実装では、JSON ファイルから読み込んだコードの実行に
exec()を使用しています - 本番環境では、追加のセキュリティ対策が必要です:
- コード署名の検証
- サンドボックス環境の制限
- コードレビューの仕組み
- アクセス制御
開発に関する提案
- 開発環境ですべてのユーティリティ関数をテストします
- JSON ファイルの形式が正しいことを確認します
- 適切なエラー処理を追加します
- コードレビューのプロセスを導入します
- バージョン管理の仕組みの導入を検討します
ワークフロー
graph TD
A[Start Server] --> B[Load tools.json]
B --> C{Parse JSON}
C -->|Success| D[Iterate Tool List]
C -->|Failure| E[Output Error Log]
D --> F[Execute Tool Code]
F --> G{Code Execution}
G -->|Success| H[Register to MCP]
G -->|Failure| I[Output Error Log]
H --> J[Server Running]
J --> K[Wait for New Requests]
コメント
Markdown 対応
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。