Model Context Protocol (MCP) MSPaint App Automation について
MCPとpywinautoでWindowsのMSPaintを自動操作する、デスクトップ自動化の開発者向けサンプルです。付属クライアントからGoogle Geminiがツールを呼び出して問題を解き、結果をPaintのキャンバスに表示します。
主な機能
- 01ツールによるMSPaintの操作
- 02矩形の描画とテキストの追加
- 03Google Geminiによる指示生成
- 04計算結果のキャンバス表示
活用シーン
- 01AIエージェントによる従来型Windowsアプリ操作の実演
- 02数学問題の結果をPaintに描画
- 03Paint自動化ツールの開発やデバッグ
MCP 対応
MCPサーバーはfastmcpを使い、Paintの起動、矩形の描画、テキストの追加ツールを公開します。付属クライアントがサーバーに接続し、Google Geminiのツール呼び出し結果をモデルに返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Model Context Protocol(MCP)MSPaint アプリの自動化
このプロジェクトでは、Model Context Protocol(MCP)を使用して、従来の Windows アプリケーション(MSPaint)とのやり取りを自動化する方法を紹介します。pywinauto で Paint アプリケーションを制御し、fastmcp で AI エージェントから呼び出せるツールを定義します。Google の Gemini モデルを搭載した AI エージェントは、これらのツールを使って、Paint のキャンバスに長方形を描いたり、テキストを追加したりします。
目次
はじめに
このプロジェクトでは、AI エージェントを使ってMSPaintを自動化する方法を紹介します。エージェントは自然言語による指示に従って Paint を開き、長方形を描いたり、テキストを追加したりできます。これは、AI エージェントが Python コードで定義された特定の関数(ツール)を呼び出せるようにする Model Context Protocol(MCP)によって実現されます。
Model Context Protocol(MCP)
Model Context Protocol(MCP)は、AI モデルが外部のツールやリソースとやり取りできるようにするフレームワークです。モデルが関数を呼び出し、データを取得し、現実世界でアクションを実行するための標準化された方法を提供します。このプロジェクトでは、AI エージェントが使用できるツールとして Paint の自動化関数を公開するために MCP を使用します。
プロジェクト構成
├── MSPaint-MCP-Server/
│ ├── mcp_server.py # Defines the MCP server with tools for Paint automation
│ ├── mcp_client.py # Defines the MCP client that interacts with the server and AI model
│ ├── requirements.txt # Lists the project dependencies
│ └── .env # Stores the Gemini API key
├── README.md # This file
要件
- Python 3.11+
- Conda(環境管理に推奨)
- Google Gemini API キー
- pywin32
- pywinauto
- fastmcp
- python-dotenv
- google-genai
セットアップ
-
Conda 環境を作成します:
conda create -n eagenv python=3.11 conda activate eagenv -
依存関係をインストールします:
pip install -r requirements.txt -
Gemini API キーを設定します:
-
ディレクトリに
.envファイルを作成します。 -
.envファイルに Gemini API キーを追加します:GEMINI_API_KEY=YOUR_API_KEY
-
使い方
-
MCP クライアントを実行します:
python mcp_paint_app/mcp_client.pyこれにより MCP クライアントが起動し、MCP サーバーに接続して AI エージェントを初期化し、自動化プロセスを開始します。
仕組み
-
MCP サーバー(
mcp_server.py):- MSPaint とやり取りするためのツール(例:
open_paint、draw_rectangle、add_text_in_paint)を定義します。 pywinautoを使用して MSPaint アプリケーションを制御します。fastmcpライブラリを介してこれらのツールを公開します。
- MSPaint とやり取りするためのツール(例:
-
MCP クライアント(
mcp_client.py):- MCP サーバーに接続します。
- Google Gemini モデルを使用して指示を生成します。
- モデルの出力を解析し、呼び出すツールを決定します。
- MCP サーバー上の適切なツールを呼び出します。
- ツールからの応答を処理し、モデルに返します。
-
AI エージェント(Google Gemini):
- クエリ(例:「最初の20個のフィボナッチ数の合計を返してください。」)を受け取ります。
- 利用可能なツール(システムプロンプトで定義)を使って問題を解決します。
- ツールを使用するための関数呼び出し(例:
FUNCTION_CALL: fibonacci_numbers|20)を生成します。 - 最終回答(例:
FINAL_ANSWER: 6765)を提示し、Paint を使って結果を表示します。
主なコンポーネント
mcp_server.py: MSPaint を自動化する中核ロジックが含まれています。open_paint、draw_rectangle、add_text_in_paint関数は、AI エージェントが使用する主なツールです。mcp_client.py: AI エージェントと MCP サーバー間のやり取りを管理します。システムプロンプトを設定し、ツールを呼び出し、応答を処理します。requirements.txt: プロジェクトに必要なすべての Python パッケージを記載しています。- .env: Google Gemini API キーを保存します。
トラブルシューティング
- 権限の問題: 権限の問題が発生した場合は、管理者としてスクリプトを実行してみてください。
- 座標の問題: MSPaint でクリックする際に使用する座標は、画面解像度やウィンドウサイズに応じて調整が必要になることがあります。コード内のデバッグ用の出力文を使って、正しい座標を特定してください。
- ツール選択の問題: AI エージェントが正しいツールを選択しない場合は、システムプロンプトを確認し、ツールの説明が正確であることを確認してください。
- API キーの問題: Gemini API キーが
.envファイルに正しく設定されていることを確認してください。
コントリビューション
コントリビューションを歓迎します!変更内容を含むプルリクエストを送信してください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。