MCP Autogui Multinode
M

MCP Autogui Multinode

2.5ポイント
4.5K

インストール

以下のコマンドをクライアントにコピーして設定
注意:あなたのキーは機密情報です。誰とも共有しないでください。

🚀 PyAutoGUI用MCPとHTTPサーバーラッパー

このサービスは、LLMがマウスとキーボードを制御できるようにする、PyAutoGUI用のMCPとHTTPサーバーラッパーです。

🚀 クイックスタート

前提条件

  • Python >= 3.12
  • uv パッケージマネージャー(推奨)

インストール

  1. リポジトリをクローンします。
git clone https://github.com/stonehill-2345/mcp-autogui-multinode.git
cd mcp-autogui-multinode
  1. デプロイメントシナリオに基づいて依存関係をインストールします。

ローカルフル開発

すべての機能(GUI制御 + テスト)を備えたローカル開発用:

uv sync --group gui --group dev

MCPサーバーのみデプロイ

リモートツールサービスに接続するMCPサーバーをデプロイする場合(GUI依存関係は不要):

uv sync --no-group gui

ツールサービスのみデプロイ

実際のコンピューター制御を行うHTTPツールサービスをデプロイする場合(GUIが必要):

uv sync --group gui

サービスの起動

このサービスは2つの独立したサーバーをサポートしています。

1. ツールサービス(HTTP API)を起動

コンピューター制御のためのHTTP APIサーバーを起動します。

uv run python tool.py

2. MCPサーバーを起動

リモートツールサービスに接続できるMCPサーバーを起動します。このサーバーは2つのトランスポートモードをサポートしています。

HTTPトランスポートモード:

uv run python mcp_local.py http

stdioトランスポートモード(デフォルト):

uv run python mcp_local.py stdio

起動後、以下のURLにアクセスできます。

  • HTTP APIドキュメント:http://localhost:8000/docs
  • ヘルスチェック:http://localhost:8000/health
  • MCPエンドポイント:http://localhost:8001/mcp(HTTPトランスポートを使用する場合)

✨ 主な機能

  • 🚀 デュアルプロトコルサポート:HTTP REST APIとMCP(Model Context Protocol)
  • 🔐 APIキー認証:サービス間通信のためのオプションのAPIキー認証
  • 🌐 複数のMCPトランスポート:HTTPとstdio(標準入出力)の両方のトランスポートモードをサポート
  • 🖱️ マウス制御:移動、クリック、ドラッグ、スクロール操作
  • ⌨️ キーボード制御:キーの押下、テキスト入力、キーの組み合わせ
  • 📸 スクリーンショット:画面をキャプチャし、Base64エンコードされた画像を取得
  • 📊 画面情報:カーソル位置と画面解像度を取得
  • ⚙️ 設定管理:環境変数をサポートするPydantic設定
  • 📝 自動ドキュメント化:HTTP APIのSwagger UI
  • 🔧 柔軟なデプロイメント:HTTPサーバーまたはMCPサーバーを独立して実行
  • 📋 リクエストトレーシング:リクエスト追跡のためのリクエストIDミドルウェア
  • 📝 構造化ロギング:リクエストIDを統合したLoguruベースのロギング
  • 🔌 リモートMCPサポート:リモートツールサーバーの統合のためのオプションのHTTPクライアント

📦 インストール

前提条件

  • Python >= 3.12
  • uv パッケージマネージャー(推奨)

手順

  1. リポジトリをクローンします。
git clone https://github.com/stonehill-2345/mcp-autogui-multinode.git
cd mcp-autogui-multinode
  1. デプロイメントシナリオに基づいて依存関係をインストールします。

ローカルフル開発

すべての機能(GUI制御 + テスト)を備えたローカル開発用:

uv sync --group gui --group dev

MCPサーバーのみデプロイ

リモートツールサービスに接続するMCPサーバーをデプロイする場合(GUI依存関係は不要):

uv sync --no-group gui

ツールサービスのみデプロイ

実際のコンピューター制御を行うHTTPツールサービスをデプロイする場合(GUIが必要):

uv sync --group gui

💻 使用例

基本的な使用法

マウスを移動する

curl -X POST "http://localhost:8000/api/computer/MoveMouse" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-secret-api-key-here" \
  -d '{"x": 100, "y": 200}'

マウスをクリックする

curl -X POST "http://localhost:8000/api/computer/ClickMouse" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-secret-api-key-here" \
  -d '{"x": 100, "y": 200, "button": "left"}'

スクリーンショットを撮る

curl -X POST "http://localhost:8000/api/computer/TakeScreenshot" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-secret-api-key-here" \
  -d '{}'

カーソル位置を取得する

curl -X POST "http://localhost:8000/api/computer/GetCursorPosition" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-secret-api-key-here" \
  -d '{}'

📚 ドキュメント

APIエンドポイント

基本エンドポイント

  • GET / - ルートパス、API情報を返します。
  • GET /health - ヘルスチェックエンドポイント

コンピューター制御エンドポイント

すべてのコンピューター制御アクションは以下のエンドポイントで利用できます。

  • POST /api/computer/{action} - コンピューター制御アクションを実行します。
  • GET /api/computer/actions - 利用可能なすべてのアクションをリストします。
利用可能なアクション
アクション 説明 パラメーター
MoveMouse マウスカーソルを移動します。 x, y (座標)
ClickMouse マウスボタンをクリックします。 x, y, button, press, release
PressMouse マウスボタンを押し続けます。 x, y, button
ReleaseMouse マウスボタンを離します。 x, y, button
DragMouse マウスをソースからターゲットにドラッグします。 source_x, source_y, target_x, target_y
Scroll マウスホイールをスクロールします。 scroll_direction, scroll_amount, x, y
PressKey キーボードのキーを押します。 key (例: "enter", "ctrl c")
TypeText テキストを入力します(クリップボードを使用)。 text
Wait 指定された時間待機します。 duration (ミリ秒)
TakeScreenshot 画面をキャプチャします。 (パラメーターなし)
GetCursorPosition マウスの位置を取得します。 (パラメーターなし)
GetScreenSize 画面解像度を取得します。 (パラメーターなし)

MCPツール

利用可能なMCPツール

すべてのHTTP APIアクションはMCPツールとして利用できます。MCPツール名はスネークケースを使用し、HTTP APIはパスカルケースを使用します。

  • move_mouse - マウスカーソルを移動します(HTTP: MoveMouse
  • click_mouse - マウスボタンをクリックします(HTTP: ClickMouse
  • press_mouse - マウスボタンを押します(HTTP: PressMouse
  • release_mouse - マウスボタンを離します(HTTP: ReleaseMouse
  • drag_mouse - マウスをドラッグします(HTTP: DragMouse
  • scroll - マウスホイールをスクロールします(HTTP: Scroll
  • press_key - キーボードのキーを押します(HTTP: PressKey
  • type_text - テキストを入力します(HTTP: TypeText
  • wait - 指定された時間待機します(HTTP: Wait
  • take_screenshot - スクリーンショットを撮ります(HTTP: TakeScreenshot
  • get_cursor_position - カーソル位置を取得します(HTTP: GetCursorPosition
  • get_screen_size - 画面サイズを取得します(HTTP: GetScreenSize

MCPトランスポートモード

MCPサーバーは2つのトランスポートモードをサポートしています。

  1. stdio(デフォルト):標準入出力トランスポート
    • stdin/stdoutを介したローカル通信に使用されます。
    • MCPクライアントとの直接統合に適しています。
    • 起動コマンド:python mcp_local.py stdio
  2. http:ステートレスモードのHTTPベースのトランスポート
    • HTTPを介したリモート通信に使用されます。
    • サービス間通信に適しています。
    • 起動コマンド:python mcp_local.py http
    • アクセス可能なURL:http://localhost:8001/mcp

MCPツール登録モード

このサービスは2つのMCPツール登録モードをサポートしています。

  1. ダイレクトツール (register_computer_tools):ローカルコンピューター制御実装を直接呼び出すツール。endpointパラメーターは不要です。
    • mcp_local.pyでローカルMCPサーバーに使用されます。
    • ツールはコンピューター制御アクションを直接実行します。
  2. クライアントベースのツール (register_computer_tools_with_client):HTTPクライアントを使用してリモートツールサーバーを呼び出すツール。endpointパラメーターが必要です。
    • mcp_server/register.pyでリモートMCPサーバーに使用されます。
    • ツールはHTTPを介してリモートツールサービスにリクエストを転送します。

ローカルMCPサーバー (mcp_local.py) はデフォルトでダイレクトツールを使用します。リモートMCPサーバーはクライアントベースのツールを使用します。

🔧 技術詳細

アーキテクチャ

このサービスは2つのデプロイメントアーキテクチャをサポートしています。

LLM -> MCP -> TOOL (リモートツールサービス)

このアーキテクチャでは、MCPサーバーとツールサービスが分離されており、MCPサーバーはHTTPを介してリモートツールサービスに接続できます。

graph LR
    LLM[LLM Client] -->|MCP Protocol| MCP[MCP Server<br/>main.py<br/>Client-based Tools]
    MCP -->|HTTP API<br/>with API Key| TOOLA[Tool Service<br/>tool.py<br/>HTTP API Server]
    MCP -->|HTTP API<br/>with API Key| TOOLB[Tool Service<br/>tool.py<br/>HTTP API Server]

    TOOLA -->|PyAutoGUI| COMPUTERA[Computer Control]
    TOOLB -->|PyAutoGUI| COMPUTERB[Computer Control]
    style LLM fill:#e1f5ff
    style MCP fill:#fff4e1
    style TOOLA fill:#ffe1f5
    style COMPUTERA fill:#e1ffe1
    style COMPUTERB fill:#e1ffe1

特徴:

  • MCPサーバーはクライアントベースのツール (register_computer_tools_with_client) を使用します。
  • MCPサーバーはHTTPを介してリモートツールサービスにリクエストを転送します。
  • ツールサービスは実際のコンピューター制御操作を実行します。
  • MCPサーバーとツールサービスが異なるマシンで実行される分散デプロイメントに適しています。
  • MCPツール呼び出しにはendpointパラメーターが必要です。

アーキテクチャ2: LLM -> MCP (ダイレクトツール)

このアーキテクチャでは、MCPサーバーが直接コンピューター制御操作を実行します。

graph LR
    LLM[LLM Client] -->|MCP Protocol<br/>stdio/http| MCP[MCP Server<br/>mcp_local.py<br/>Direct Tools]
    MCP -->|PyAutoGUI| COMPUTER[Computer Control]
    
    style LLM fill:#e1f5ff
    style MCP fill:#fff4e1
    style COMPUTER fill:#e1ffe1

特徴:

  • MCPサーバーはダイレクトツール (register_computer_tools) を使用します。
  • MCPサーバーは直接コンピューター制御操作を実行します。
  • 別のツールサービスは必要ありません。
  • すべてが同じマシンで実行されるローカルデプロイメントに適しています。
  • MCPツール呼び出しにはendpointパラメーターは必要ありません。

📄 ライセンス

MITライセンス

トラブルシューティング

ポートがすでに使用されている場合

ポートがすでに使用されているエラーが発生した場合は、.envファイルでポートを変更します。

PORT=8002
MCP_PORT=8003

MCP接続問題

HTTPトランスポートの場合、MCPサーバーが実行中でアクセス可能であることを確認します。

# MCPエンドポイントをテストする
curl http://localhost:8001/mcp

# APIキーが有効な場合のテスト
curl -H "X-API-Key: your-secret-api-key-here" http://localhost:8001/mcp

stdioトランスポートの場合、MCPサーバーがstdioモードで起動されていることを確認します。

# stdioモードでMCPサーバーを起動する
uv python mcp_local.py stdio

APIキー認証問題

認証エラーが発生した場合は、以下を確認します。

  • .envファイルでAPI_KEY_ENABLEDが正しく設定されていること。
  • API_KEYがクライアントとサーバーで一致していること。
  • APIキーがX-API-KeyヘッダーまたはAuthorization: Bearer <key>ヘッダーで渡されていること。
  • リクエストパスが除外パスリストに含まれていないこと。

スクリーンショット問題

スクリーンショット機能が失敗した場合は、以下を確認します。

  • Pythonバージョンの互換性(Python >= 3.12が必要)。
  • macOS/Linuxでのディスプレイ権限。
  • PyAutoGUIとその依存関係が正しくインストールされていること。

コントリビュート

コントリビューションは大歓迎です!プルリクエストを送信してください。

代替品

V
Vestige
Vestigeは認知科学に基づくAI記憶エンジンで、予測誤差ゲート、FSRS - 6間隔反復、記憶の夢など29の神経科学モジュールを実装することで、AIに長期記憶能力を提供します。3D可視化ダッシュボードと21のMCPツールを備え、完全にローカルで動作し、クラウドは必要ありません。
Rust
5.7K
4.5ポイント
M
Moltbrain
MoltBrainは、OpenClaw、MoltBook、Claude Code用に設計された長期記憶層プラグインで、自動的にプロジェクトのコンテキストを学習し、思い出すことができます。スマートな検索、観察記録、分析統計、永続的なストレージ機能を提供します。
TypeScript
6.8K
4.5ポイント
B
Bm.md
機能豊富なMarkdown排版ツールで、様々なスタイルテーマとプラットフォーム対応をサポートし、リアルタイム編集プレビュー、画像エクスポート、API統合機能を提供します
TypeScript
5.9K
5ポイント
S
Security Detections MCP
Security Detections MCPは、Model Context Protocolに基づくサーバーで、LLMがSigma、Splunk ESCU、Elastic、KQL形式を含む統一されたセキュリティ検出ルールデータベースをクエリできます。最新のバージョン3.0は自律型検出エンジニアリングプラットフォームにアップグレードされ、自動的に脅威インテリジェンスからTTPを抽出し、カバレッジのギャップを分析し、SIEMネイティブ形式の検出ルールを生成し、テストを実行して検証できます。プロジェクトには71以上のツール、11の事前構築されたワークフロープロンプト、および知識グラフシステムが含まれ、複数のSIEMプラットフォームをサポートしています。
TypeScript
5.7K
4ポイント
P
Paperbanana
Python
7.1K
5ポイント
B
Better Icons
20万以上のアイコンの検索と検索を提供するMCPサーバーとCLIツールで、150以上のアイコンライブラリをサポートし、AIアシスタントと開発者が迅速にアイコンを取得して使用できるように支援します。
TypeScript
8.3K
4.5ポイント
A
Assistant Ui
assistant-uiは、生産レベルのAIチャットインターフェイスを迅速に構築するためのオープンソースのTypeScript/Reactライブラリで、組み合わせ可能なUIコンポーネント、ストリーミング応答、アクセシビリティなどの機能を提供し、複数のAIバックエンドとモデルをサポートしています。
TypeScript
6.9K
5ポイント
A
Apify MCP Server
Apify MCPサーバーは、モデルコンテキストプロトコル(MCP)に基づくツールで、AIアシスタントが数千の既成のクローラー、スクレイパー、自動化ツール(Apifyアクター)を通じて、ソーシャルメディア、検索エンジン、電子商取引などのウェブサイトからデータを抽出できるようにします。OAuthとSkyfireプロキシ支払いをサポートしており、HTTPSエンドポイントまたはローカルのstdio方式でClaude、VS CodeなどのMCPクライアントに統合できます。
TypeScript
8.0K
5ポイント
E
Edgeone Pages MCP Server
EdgeOne Pages MCPは、MCPプロトコルを通じてHTMLコンテンツをEdgeOne Pagesに迅速にデプロイし、公開URLを取得するサービスです。
TypeScript
24.3K
4.8ポイント
G
Gmail MCP Server
Claude Desktop用に設計されたGmail自動認証MCPサーバーで、自然言語でのやり取りによるGmailの管理をサポートし、メール送信、ラベル管理、一括操作などの完全な機能を備えています。
TypeScript
18.0K
4.5ポイント
C
Context7
Context7 MCPは、AIプログラミングアシスタントにリアルタイムのバージョン固有のドキュメントとコード例を提供するサービスで、Model Context Protocolを通じてプロンプトに直接統合され、LLMが古い情報を使用する問題を解決します。
TypeScript
80.9K
4.7ポイント
B
Baidu Map
認証済み
百度マップMCPサーバーは国内初のMCPプロトコルに対応した地図サービスで、地理コーディング、ルート計画など10個の標準化されたAPIインターフェースを提供し、PythonとTypescriptでの迅速な接続をサポートし、エージェントに地図関連の機能を実現させます。
Python
36.9K
4.5ポイント
G
Gitlab MCP Server
認証済み
GitLab MCPサーバーは、Model Context Protocolに基づくプロジェクトで、GitLabアカウントとのやり取りに必要な包括的なツールセットを提供します。コードレビュー、マージリクエスト管理、CI/CD設定などの機能が含まれます。
TypeScript
21.7K
4.3ポイント
U
Unity
認証済み
UnityMCPはUnityエディターのプラグインで、モデルコンテキストプロトコル (MCP) を実装し、UnityとAIアシスタントのシームレスな統合を提供します。リアルタイムの状態監視、リモートコマンドの実行、ログ機能が含まれます。
C#
27.1K
5ポイント
M
Magic MCP
Magic Component Platform (MCP) はAI駆動のUIコンポーネント生成ツールで、自然言語での記述を通じて、開発者が迅速に現代的なUIコンポーネントを作成するのを支援し、複数のIDEとの統合をサポートします。
JavaScript
18.9K
5ポイント
S
Sequential Thinking MCP Server
MCPプロトコルに基づく構造化思考サーバーで、思考段階を定義することで複雑な問題を分解し要約を生成するのに役立ちます。
Python
31.8K
4.5ポイント
AIBase
智啓未来、あなたの人工知能ソリューションシンクタンク
© 2026AIBase