MCP based Math Drawing Client について
Geminiで数学の質問を処理し、結果をキャンバスに描くPythonアプリケーションです。計算結果を視覚化したいユーザー向けで、反復的な問題解決と描画ツールを備えています。
主な機能
- 01Geminiによる数学問題の解決
- 02数学計算と文字列操作
- 03長方形とテキストの描画
- 04最大9回の反復処理
- 05キャンバスの消去と色の選択
活用シーン
- 01計算結果を長方形内に描画
- 02単語をASCII値に変換し合計を可視化
MCP 対応
クライアントはstdioでMCPサーバーに接続し、ツール一覧を同期して、計算と描画のための数学的な質問を送信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP ベースの数学描画クライアント
数学描画クライアント(talk2mcp_math_draw_client.py)は、数学的な計算と視覚的な描画機能を組み合わせた Python アプリケーションです。Gemini AI モデルを使用して数学に関するクエリを処理し、適切な応答を生成します。
機能
現在実装されている機能
- 数学の問題解決における Gemini AI との連携
- 数学的な結果を視覚的に表現する描画機能
- 反復的な問題解決アプローチ(最大 9 回の反復)
- 基本的な数学演算と ASCII 値の計算に対応
- キャンバス上への結果の自動描画
- 基本的なエラー処理と復旧
- シンプルなキャンバス操作
- 基本的なテキスト配置
- 操作のタイムアウト処理(LLM の操作は 10 秒でタイムアウト)
- セッション管理
- パラメーター検証を伴うツール実行
サーバー要件
-
MCP サーバーのセットアップ:
- Python 3.x 環境
- MCP サーバーパッケージがインストールされていること
- 必要なサーバー依存関係:
mcpパッケージ- AI 連携用の
google-generativeai - 環境管理用の
python-dotenv
-
サーバー設定:
- ポート設定(デフォルト:8080)
- 数学演算用のメモリ割り当て
- キャンバスサイズの設定(デフォルト:1920x1080)
- 最大同時接続数
- 操作のタイムアウト設定
-
サーバーツール:
- 数学計算エンジン
- 描画キャンバスマネージャー
- ツール実行ハンドラー
- セッションマネージャー
- エラー処理システム
前提条件
- Python 3.x
- 必要な Python パッケージ:
python-dotenvgoogle-generativeaimcpパッケージ
環境のセットアップ
- プロジェクトのルートに
.envファイルを作成します - Gemini API キーを追加します:
GEMINI_API_KEY=your_api_key_here
サーバーのセットアップ
-
サーバーの依存関係をインストールします:
pip install mcp google-generativeai python-dotenv -
config.jsonでサーバー設定を構成します:{ "server": { "port": 8080, "max_connections": 10, "timeout": 30, "canvas": { "width": 1920, "height": 1080 } } } -
MCP サーバーを起動します:
python example2-3_server.py
利用可能なツール
現在実装されているツール
-
数学演算:
- 基本的な算術演算(加算、減算、乗算、除算)
- 高度な数学関数(指数関数、対数関数)
- ASCII 値の計算
- 文字列の操作と変換
- 配列操作
- 素数の計算
- 階乗の計算
- フィボナッチ数列の生成
-
描画ツール:
- 寸法を指定した長方形の描画
- 書式を指定した基本的なテキスト配置
- キャンバスのクリアとリセット
- 座標に基づく描画
- シンプルな色の選択
- 基本的なレイヤー管理
今後予定されているツール
- 数学演算の強化
- 高度な描画機能:
- 分析ツール:
- ユーティリティツール:
インストール
- リポジトリをクローンします
- 必要なパッケージをインストールします:
pip install python-dotenv google-generativeai mcp - 上記の説明に従って環境変数を設定します
使い方
- MCP サーバーを起動します(「サーバーのセットアップ」セクションを参照)
- サーバーが稼働していて、アクセス可能であることを確認します
- クライアントを実行します:
python talk2mcp_math_draw_client.py
サーバーとクライアント間の通信
-
接続プロトコル:
- クライアントがサーバーとの接続を確立
- 認証ハンドシェイク
- ツールリストの同期
- セッションの初期化
-
データフロー:
- クライアントが数学に関するクエリを送信
- サーバーがリクエストを処理
- 結果がクライアントに返される
- 描画コマンドが実行される
- ステータス更新が通知される
-
エラー処理:
- 接続の再試行メカニズム
- セッションの復旧
- ツール実行のフォールバック
- リソースのクリーンアップ
クエリの例
- 基本的な数学の描画:
Calculate the sum of ASCII values for the word "HELLO" and draw it inside a rectangle at the center of the canvas.
- 複雑な数学の可視化:
Find the exponential values of first 5 prime numbers, sum them up, and display the result in a blue rectangle at coordinates (500, 300).
- 複数の操作:
Convert the word "MATH" to ASCII values, calculate their sum, find the square root, and display the result in a red rectangle with white text.
- 高度な描画:
Draw a rectangle at (200, 200) with width 400 and height 300, then place the result of (2^10 + 3^5) inside it with centered text.
仕組み
- クライアントは、stdio 通信を使用して MCP サーバーに接続します
- Gemini AI モデルを使用して数学的な問い合わせを処理します
- 結果はキャンバスに自動的に描画されます
- システムは反復的なアプローチ(最大 9 回の反復)を使用して、複雑な問題を解決します
- 結果は見やすい形式で表示されます
- 各操作はツールスキーマに照らして検証されます
- エラー処理とタイムアウトの仕組みを備えています
エラー処理
クライアントには、次のような堅牢なエラー処理が含まれています。
- API タイムアウト(LLM 操作では 10 秒のタイムアウト)
- 無効な入力
- 接続の問題
- ツール実行エラー
- 描画ツールの失敗
- パラメーター検証エラー
- セッション管理の問題
貢献
問題や機能改善のリクエストをお気軽に送信してください。
ライセンス
Apache License, Version 2.0(「ライセンス」)に基づいてライセンスされています。 ライセンスに従わない限り、このファイルを使用することはできません。 ライセンスのコピーは、次の場所から入手できます。
http://www.apache.org/licenses/LICENSE-2.0
適用される法律で義務付けられている場合、または書面で合意されている場合を除き、 本ソフトウェアは「現状のまま」提供され、明示的か黙示的かを問わず、 いかなる保証もありません。 ライセンスに基づく権利および制限については、 ライセンスを参照してください。
トラブルシューティング
-
よくある問題:
- 接続タイムアウト
- 描画ツールの失敗
- メモリの問題
- パフォーマンスの問題
- 認証エラー
-
解決策:
- サーバーの状態を確認する
- ネットワーク接続を確認する
- キャッシュと一時ファイルを消去する
- 依存関係を更新する
- システムリソースを確認する
パフォーマンスのヒント
-
最適化:
- 適切なキャンバスサイズを使用する
- 同時実行する操作を制限する
- 未使用のリソースを消去する
- メモリ使用量を監視する
- 効率的なアルゴリズムを使用する
-
ベストプラクティス:
- 定期的なバックアップ
- システムの更新
- リソースの監視
- エラーログの記録
- パフォーマンステスト
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。