mcpField
A
AI Process Manager (AIPM)

AI Process Manager (AIPM)

ローカル
github.com/aipm-engine開発ツール16 週間前に更新

AI Process Manager (AIPM) について

AI Process Manager (AIPM) の MCP サーバーは、プロセス、ウィンドウ、UI Automation ツリーなどの Windows の状態を構造化して、Claude Desktop や Cursor などのクライアントに提供します。ユーザーの有効化が必要な UI 操作も備え、アプリごとの許可がない操作は既定で拒否します。

主な機能

  1. 01プロセス、ウィンドウ、システム状態の確認
  2. 02ウィンドウテキストと UI ツリーの読み取り
  3. 03プロセスやファイルの状態を待機
  4. 04UI 要素の検索と操作
  5. 05アプリ単位で UI 操作を許可

活用シーン

  1. 01タスクが実行中か確認
  2. 02アプリのウィンドウからコンソール出力を読む
  3. 03エクスポートファイルの安定を待つ
  4. 04UI Automation でデスクトップアプリを操作

MCP 対応

ローカルの AIPM HTTP API を、状態確認や UI 操作用の MCP クライアント向けツールとして公開します。読み取りツールは既定で利用でき、UI 操作には Agent actions の有効化と対象アプリの許可が必要です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"agorapassadoagora-debug-aipm": {
"command": "npx",
"args": [
"-y",
"aipm-mcp-server"
],
"env": {
"AIPM_API": "<AIPM_API>"
}
}
}
}
起動コマンドnpx -y aipm-mcp-server
設定が必要な環境変数
AIPM_APIAI Process Manager HTTP base URL (default: http://127.0.0.1:9147)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmaipm-mcp-server0.5.0

ツール

20

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

AI Process Manager — MCP サーバー

AI エージェント向けの構造化された Windows の状態情報。スクリーンショットは不要です。

この MCP サーバーは、AI Process Manager のローカル HTTP API を、Claude Desktop、Cursor、およびあらゆる MCP クライアント向けのツールとして公開します。ピクセルをキャプチャする代わりに(1080p のスクリーンショット 1 枚あたり約 2,765 トークン)、エージェントはプロセス、ウィンドウ、コンソール、UI Automation ツリーから JSON とテキスト(クエリあたり約 15〜150 トークン)を読み取ります。

必要条件: Windows で AIProcessManager.exe が実行されていること(システムトレイ)。Node.js ≥ 14。npm 依存関係はありません。

このプロジェクトの目的

コンピューター操作エージェントは、スクリーンショットを通じてデスクトップを「見る」ことがよくあります。これは遅く(3〜5 秒)、トークンを消費し、ピクセルデータをモデルに送信します。AIPM はループバックで構造化された質問に回答します。

質問スクリーンショットAIPM ツール
レンダリングはまだ実行中ですか?約 2,765 トークンcheck_process → 約 15 トークン
コンソールの出力は何ですか?スクリーンショット+OCRread_window → 約 30 トークン
エクスポートは完了しましたか?ポーリング+スクリーンショットwait_for(file_stable=...) → 1 回の呼び出し

スクリーンショットと比較して、アクションあたりの認識トークンを約 94〜98%削減できます(クエリあたり 2,765 → 約 60 トークン。この 2 つの入力は GET /analytics/summary の assumptions ブロックであり、ベンチマークではありません)。

クイックスタート

1. バックエンドを起動する

システムトレイで AIProcessManager.exe が実行されていることを確認してください。

2. MCP クライアントを設定する

Claude Desktop — claude_desktop_config.json:

{
  "mcpServers": {
    "ai-process-manager": {
      "command": "node",
      "args": ["C:\\path\\to\\ai-process-manager\\mcp\\server.js"]
    }
  }
}

Cursor およびその他の stdio MCP クライアントでも、同じ command / args の組み合わせを使用します。任意の環境変数 AIPM_API で API のベース URL を上書きできます(デフォルト:%LOCALAPPDATA%\AIProcessManager\endpoint.txt から読み取り、 それ以外の場合は http://127.0.0.1:9147)。

任意の環境変数 AIPM_AGENT_NAME は、API のアクティビティログでこのエージェントを識別する名前を設定します(デフォルトは mcp)。 すべてのリクエストは User-Agent: AIPM-Agent/<name> (<client>) mcp:<client> とともに送信され、API は <name> を /audit、/activity、/notes の agent フィールドに抽出します。複数のエージェントが 1 つの MCP クライアントを共有する場合は、名前を設定すると、 GET /activity でそれぞれを識別できます。

"env": { "AIPM_AGENT_NAME": "revisor" }

名前は [a-z0-9._-] に正規化され、最大 40 文字です。これは呼び出し元が自分自身について宣言する識別情報であり、 可観測性と連携のためだけに使われます。認可には決して使用されません。 ここには誰でも任意の名前を書き込めます。 この製品では、その名前に基づいて権限を付与したり拒否したりすることはありません。唯一の制限は、 アプリごとに適用されるデフォルト拒否のアクション許可リストです。

3. MCP クライアントを再起動する

ツールが ai-process-manager として表示されます。まず health_check を呼び出してください。

ツール(28)

15 個の認識ツールと 2 つの UI プローブには readOnlyHint: true が付いているため、クライアントが自動承認できます。7 つの UI アクションには readOnlyHint: false が付いており、ユーザーがオプトインしない限り実行を拒否します(プライバシーを参照)。

ツールタイトルエンドポイント
aipm_ja_fazAIPM がすでに対応しているか確認します。コードを書いたりシェルを使ったりする前に尋ねてくださいGET /?q=
health_checkステータス、使用するアクションファミリー、実入力の有効状態GET / + GET /forgepilot/status
check_processプロセスが実行中か確認しますGET /processes
list_processes実行中のプロセスを一覧表示しますGET /processes
list_windows開いているウィンドウを一覧表示しますGET /windows
get_system_statusシステムのステータス(CPU、RAM、GPU、ディスク)を取得しますGET /system
get_taskbarタスクバーのアプリを表示しますGET /taskbar
read_windowウィンドウ内のテキストを読み取りますGET /window/text
get_ui_treeウィンドウの UI 要素ツリーを取得しますGET /ui/tree
wait_for条件が満たされるまで待機しますGET /wait
get_recent_events最近の PC イベントを一覧表示しますGET /events/history
check_fileファイルまたはフォルダーを確認しますGET /filesystem/watch
get_app_knowledgeアプリについて学習済みのレシピを取得しますGET /knowledge/app
get_economy_statsトークンエコノミーの統計情報を取得しますGET /analytics/summary
get_audit_logAPI 監査ログを表示しますGET /audit
read_notesローカルのエージェント掲示板を読み取りますGET /notes

UI ツール — まず状態を確認し、その後にオプトインして操作します:

ツールタイトルエンドポイント
ui_find操作可能な UI 要素を検索しますGET /ui/find
ui_find_at画面上のピクセル位置にある UI 要素を検索しますPOST /ui/find_at
ui_act意図に基づいて操作します(UIA と実入力のどちらを使うか判断します)POST /ui/act
ui_invokeUI 要素をクリックしますPOST /ui/invoke
ui_set_valueUI フィールドの値を設定しますPOST /ui/set_value
ui_send_keys合成キーストロークでテキストを入力します(最後の手段)POST /ui/send_keys
ui_drag要素を別の要素にドラッグしますPOST /ui/drag
ui_select_optionドロップダウンのオプションを選択しますPOST /ui/select_option
focus_windowウィンドウを前面に表示しますPOST /ui/focus

ローカルテレメトリー(メタデータのみをローカルストアに書き込みます):

ツールタイトルエンドポイント
report_task_outcomeタスクの結果を報告します(テレメトリー)POST /telemetry/task
report_action_outcomeUI アクションの結果を報告します(テレメトリー)POST /telemetry/action

ローカルエージェント連携(このマシンにのみ保存されます):

ツールタイトルエンドポイント
post_noteエージェント掲示板にメモを投稿しますPOST /notes
UI ツリーを深く読み取る(Chromium/Electron)

get_ui_tree のデフォルトは depth=4 で、ネイティブ Win32 アプリには十分です。Chromium/Electron アプリ(VS Code、Slack、Discord、Claude Desktop、Teams)では、コンテンツが約 10 階層の Pane/Group ラッパーの下に隠れているため、深さが浅いと空のペインしか返されません。これらのアプリでは depth=15-20(最大 30)を指定し、max_nodes(デフォルト 200、最大 1000)でコストを抑えてください。コストを抑えるのは depth ではなく max_nodes です。 応答で truncated: true となっている場合、ツリーは途中で切り詰められています。ウィンドウについて何かを結論づける前に、より大きな depth/max_nodes を指定して再試行してください。

操作:2 つのファミリーがあり、間違ったほうを選ぶのがよくある失敗です

エージェントが標準で間違えるのはここです。これまでに使った他のコンピューター操作ツールはどれも、ウィンドウを手前に表示する必要があるからです。ここでは、ほとんどの場合その必要はありません。

ui_act は以下の 2 つのファミリーから適切なものを選びます。クリック/入力/選択には、まずこれを試してください。 UI Automation を試し、UIA がその要素でパターンが見つからないと報告した場合に限り、自動で実入力に切り替えます(intent=escolher の場合は除きます。物理クリックでは内部の選択肢ではなく要素自体がトリガーされるためです)。どちらが実行されたかは mecanismo(uia/fisico)で返します。また、曖昧なターゲットに対しては 409 alvo_ambiguo を返し、以下のツールのように最初に一致した名前を黙って選ぶのではなく、候補とその rect を返します。それぞれのファミリーの意味と、どちらかを直接呼び出すべき場合について、以下をお読みください。

ファミリーツールウィンドウを前面に表示する必要がありますか?
要素による操作(UI Automation)ui_invoke、ui_set_value、ui_select_optionいいえ。 他のウィンドウの背後にあり、フォーカスされていない状態でも動作します。ユーザーは別の場所で入力を続けられます。
合成入力による操作ui_send_keys、ui_dragはい。 そうでない場合は janela_nao_esta_em_primeiro_plano を返して拒否します。

理由:最初のファミリーはアプリのアクセシビリティプロバイダーと通信し、Z オーダーを無視します。2 つ目は実際のキーボード/マウスイベントを送信し、Windows は渡された hwnd ではなく、前面にあるウィンドウにそれらを届けます。

ファミリーを直接呼び出す場合は、毎回まず要素による操作を試してください。 「念のため」に focus_window を先に呼び出さないでください。ユーザーの前面ウィンドウを奪うだけで、何のメリットもありません。ui_send_keys を使うのは、そのフィールドで ui_set_value が実際に valor_nao_aplicado を返した後(制御されたフレームワーク内の contenteditable の場合)に限ってください。また、ui_drag を使うのは、本当にドラッグでしか動かせないものに限ります。ドラッグに対応する UIA パターンはありません。

focus_window 自体が foco_nao_aplicado で失敗した場合は、2 つ目のファミリーを繰り返し試さないでください。前面に表示されていなければ成功しません。health_check は、実入力系統(ForgePilot)を executor/forgepilot の下に報告し、インストール済みでも停止中の場合は警告します。

プライバシー

あなたに関するデータがマシンの外に送られることはありません。リモートテレメトリーもクラウドサービスもアカウントもありません。 外部へのリクエストは 1 種類だけで、あなたに関する情報は何も含まれません。また、無効にできます。

更新チェック。 1 日に 1 回、エンジンは GitHub の公開 Releases API に、新しいバージョンがあるかどうかを問い合わせます。リクエストの送信先は当社ではなく GitHub です。識別情報もテレメトリーも、あなたのマシンやアプリに関する情報も含まれません。トレイメニューから無効にできます。無効にすると、外部へのリクエストは一切行われません。 AIPM のその他すべてはローカルにとどまります。

ネットワーク
  • バックエンドは ループバックインターフェースのみ(127.0.0.1:9147)で待ち受けます。0.0.0.0 では待ち受けないため、LAN 上の何者もアクセスできません。
  • すべてのリクエストには、localhost または 127.0.0.1 の Host ヘッダーが必要です。それ以外は 403 forbidden_host で拒否されます(DNS リバインディング対策です。アクセスした Web ページから API を操作されることはありません)。
  • この MCP サーバーが行う外部への呼び出しは、ローカルアドレスへの HTTP 通信の 1 種類だけです。User-Agent に mcp:<your MCP client name> を設定するため、ローカル監査ログで、どのエージェントがリクエストしたかを確認できます。
デフォルトでは読み取り専用
  • 15 個の認識ツールと ui_find は、読み取り専用です。ui_find_at も意味的には読み取り専用ですが、ピクセルプローブでは保護された POST を使用します。17 個すべてに readOnlyHint: true が設定されています。
  • 7 個の UI 操作ツール(ui_act、ui_invoke、ui_set_value、ui_send_keys、ui_drag、ui_select_option、focus_window)は、ユーザーがトレイメニューで Agent actions を有効にし、対象プロセスをアプリごとの許可リストに追加する 両方の操作 を行うまで、403 action_denied を返します。どちらもデフォルトでは有効になっておらず、設定はアプリごとです。Notepad を許可しても、ブラウザーは許可されません。
テレメトリーに保存される内容 — メタデータのみ

記録される内容:アプリ/プロセス名、要素のロール(Button、Edit…)、エージェントが指定した要素名、アクション(invoke/set_value/focus)、成功または失敗、所要時間(ミリ秒)、失敗理由。「メタデータのみ」が単なる約束ではなく、検証可能であることを示す機械的な不変条件が2つあります。

  1. アクション記録には、アプリに表示されていた内容ではなく、エージェントが要求した内容が保存されます。 ロールと名前は、エージェント自身のrole=/name_contains=引数から取得されます。画面上で実際に解決された要素の名前は決して書き込まれないため、ツールが見た内容がテレメトリーになることはありません。
  2. 失敗理由は固定の語彙セットです(elemento_nao_encontrado、ui_timeout、erro_uia、outro、…)。それ以外の文字列はすべてoutroとして保存されます。そのため、ファイルパスや画面上のテキストを含む可能性のある例外メッセージがディスクに保存されることはありません。

保存されないもの: 画面の内容、read_windowで読み取ったウィンドウテキスト、ui_set_valueで入力したテキスト(value=)、ファイルの内容、キー入力、スクリーンショット。受動的に学習したUIの構造(ui_shape)に含まれるのは、件数、UIAのロール名、深さ、ブール値のみです。exposes_textが示すのはテキストが存在するかどうか、named_controlsが示すのは名前のある要素がいくつあるかであり、テキストそのものではありません。

マスキング: リクエストを記録する前に、value=とapi_key=は***に置き換えられるため、get_audit_logでもディスク上のクエリログでも、入力したテキストやシークレットが明らかになることはありません。

正直にお伝えしておきたい点: 監査/クエリログにはリクエスト行が保存されるため、ほかのクエリ引数は読み取れる状態のままです。たとえば、check_file(path=D:/videos/out.mp4)はそのパスのまま記録され、check_process(title_contains=...)もその断片を保持します。これは、エージェントが何を要求したかを記録するローカルログです。マスキングされるのはvalue=とapi_key=のみです。

データの保存場所と削除方法

すべてのデータは%LOCALAPPDATA%\AIProcessManager\の下にあります。

パス内容
db\*.jsonl、db\rollup.jsonテレメトリー:タスク、アクション、クエリ、UIの構造、カウンター
ledger.jsonl報告/実行されたアクションの改ざん検知可能なハッシュチェーンログ(メタデータのみ)
actions.cfgアクション層が有効かどうかと、アプリごとの許可リスト
update.json更新確認の設定(オン/オフ)とキャッシュ:最終確認時刻、最新タグ、非表示にしたタグ
log.txt、endpoint.txtアプリのログと現在使用中のAPIアドレス

消去するには、通知領域からアプリを終了してから、フォルダーを削除します(または、学習内容とエコノミーのカウンターをリセットするにはdb\のみを削除します。actions.cfgを削除すると、アクション層が再びオフになります)。ほかの場所には何も書き込まれません。また、/auditリングバッファーはメモリ上にのみ存在し、アプリを終了すると消去されます。保存されている内容は、get_audit_log、get_economy_stats、GET /analytics/actionsで確認できます。

トラブルシューティング

症状意味対処方法
connection_refusedAIProcessManager.exeが実行されていませんスタートメニューから起動します(通知領域に緑色のアイコンが表示されます)
action_deniedアクション層がオフか、アプリが許可リストにありません通知領域のメニューからAgent actionsを選び、そのアプリを許可します
api_pausedユーザーが通知領域からAPIを一時停止しました通知領域のメニューからResume APIを選びます
空のPaneツリーChromium/Electronアプリに対してdepthが低すぎますdepth=17を指定してget_ui_treeを再試行します

すべてのエラーペイロードには、同じガイダンスを示すnext_actionフィールドが含まれています。

対応状況(実測に基づく正直な情報)

スタック読み取り状況意味的な操作
Win32 / WinForms / WPF / UWP✅ 完全対応✅
Delphi VCL(レガシーな業務アプリ)✅ 完全対応✅
コンソール(cmd、PowerShell、Windows Terminal)✅ テキスト対応—
Chromium / Electron(Chrome、Cursor、Claude Desktop)✅ アクセシビリティツリーを有効化した後に対応✅
レガシーな MSAA ブリッジ上の Electron(例:Discord)⚠️ 有効化はできますが、ノードごとに約 120 ms かかるため、現時点では遅すぎます⚠️
Java Swing⚠️ Java Access Bridge が必要ですロードマップ

まだ対応していない機能も、意図的に公開しています。利用を前提にする前に、対応範囲の限界を把握してください。

動作に関する注意: Chromium/Electron ウィンドウを初めて読み取るとき、アクセシビリティツリーを有効にするよう要求します。これはスクリーンリーダーが行う標準的な要求と同じです。その後、アプリはアクセシビリティデータの計算を続けます(そのアプリで CPU を消費します)。自動的にスリープ状態に戻ることはありません。ネイティブ Win32 アプリには影響しません。

無料版と有料版

  • 無料・オープン(MIT): この MCP サーバーです。
  • 無料(クローズドソース): バックエンドの AIProcessManager.exe(センサー)です。費用をかけずに実行できます。
  • 有料: AIPM Pilot は、AIPM の構造化された認識機能を使ってアプリをエンドツーエンドで操作する自律型コンピューター操作エージェントです。

プロジェクトを支援する

AIPM によってトークンを節約できた場合は、スポンサーになることをご検討ください。

ライセンス

MCP サーバーには MIT ライセンスが適用されます。バックエンドと AIPM Pilot は別製品です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。