omp-worker-mcp について
omp-worker-mcp は、監督役のエージェントからローカルの Oh My Pi ワーカーへコーディング作業を委任する MCP サーバーです。単一タスクと依存関係のあるバッチに対応し、レビュー用の構造化結果とジョブ記録を保持します。
主な機能
- 01個別のコーディングタスクの委任
- 02依存関係に基づくタスクバッチの実行
- 03宣言された書き込み範囲の検証
- 04同じセッションでの作業継続
- 05ジョブ記録とログの永続化
活用シーン
- 01機能実装やバグ修正の委任
- 02競合しないリポジトリ作業の並列実行
- 03ワーカーの変更内容と検証結果のレビュー
MCP 対応
委任、待機、結果確認、継続、キャンセルを行う Oh My Pi ワーカー向けツールを MCP クライアントに公開します。MCP クライアントが監督役となり、Oh My Pi がローカルで作業します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y omp-worker-mcpOMP_WORKER_OMP_COMMANDPath or executable name for the local OMP CLI binary.OMP_WORKER_ALLOWED_ROOTSOptional JSON array of absolute directory paths that delegated job cwd values must resolve inside.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
9掲載時のツール一覧 · 5 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| cwd | string | はい | OMP が検査および変更できる絶対作業ディレクトリ |
| tasks | array | はい | 依存 DAG と所有権の安全性に従って同時実行する、分解済みタスクの配列 |
| max_parallel | integer | いいえ | 同時にアクティブにできる OMP ランナーの最大数(1-10、デフォルト 4) |
| wait_seconds | integer | いいえ | この呼び出し内でバッチ完了を待機する最大秒数(0-240、デフォルト 60) |
| supervisor_brief | string | いいえ | タスクグループで共有する、意思決定に役立つ読み取り専用の調査結果、仮説、制約 |
| default_max_attempts | integer | いいえ | タスクで指定されていない場合に適用する、タスクごとのデフォルト試行回数上限(1-5、デフォルト 3) |
| group_timeout_minutes | integer | いいえ | グループ全体のハード期限(分)(1-120、デフォルト 60) |
| default_timeout_minutes | integer | いいえ | タスクで指定されていない場合に適用する、タスクごとのデフォルトタイムアウト(分)(1-120、デフォルト 30) |
詳細
omp-worker-mcp
メインの AI エージェントに計画とレビューを任せ、実作業のコーディングはローカルの Oh My Pi ワーカーに任せましょう。
ChatGPT、Codex、Claude Code、Cursor などの MCP クライアントをスーパーバイザーにし、
お使いのマシン上の Oh My Pi(OMP)をバックグラウンドの作業部隊にする MCP サーバーです。
機能
多くのコーディングエージェントは、コードの読み取り、計画、編集、テストの実行、修正まで、すべてをひとつの会話とひとつのモデルの予算内で行います。omp-worker-mcp はこの作業を2つの役割に分けます。
| 役割 | 担当 | 責任 |
|---|---|---|
| スーパーバイザー | 対話相手となるエージェント:ChatGPT、Codex、Claude Code、Cursor… | 依頼を理解し、作業を分割して受け入れ基準を作成し、結果をレビューします |
| ワーカー | お使いのマシン上の OMP CLI。omp setup で選択したモデルを使用します | ファイルを読み取り、コードを編集し、シェルコマンドやテストを実行して、結果を報告します |
omp-worker-mcp は両者をつなぐ橋渡し役です。スーパーバイザーに少数の MCP ツールを提供し、バックグラウンドで OMP を起動して、すべてのジョブをディスクに保存し、大量のログではなく、簡潔で構造化されたレポートを返します。
主な特長
- 単一のタスクにも、計画全体にも対応 —
omp_run_compactは単一のタスクを委任します。omp_run_batch_compactは最大50件のタスクを依存関係グラフ(DAG)として実行し、一度に最大10件を並行処理します。 - 宣言された書き込み範囲の検証 — バッチ内で並行して書き込みを行うタスクは、各タスクが担当するパスを宣言する必要があります。宣言された範囲の重複と依存関係の循環は、ワーカーの起動前に拒否されます(これはスケジューリング上のチェックとプロンプトによる制約であり、OS のファイルシステムロックではありません)。
- レビューしやすい結果 — 各ワーカーは、ステータス、概要、変更ファイル、検証の根拠、残作業を含む
OMP_WORKER_RESULTエンベロープを出力して完了します。 - 再起動ではなく修正 —
omp_continueは同じ OMP セッションにフィードバックを送信するため、ワーカーはコンテキストを維持します。 - ジョブを永続化 — ジョブの記録、ログ、結果はディスクに保存され、MCP サーバーの再起動後も読み取れます。
- ウェブ版 ChatGPT から利用可能 — OpenAI の Secure MCP Tunnel を介して利用できます。インバウンドポートは不要で、ジョブの実行先ディレクトリを制限する許可リスト(
OMP_WORKER_ALLOWED_ROOTS。0.2.0以降で利用可能。npm0.1.1にはこの機能はありません)も使用できます。
使用する場面
適している場合
- 意思決定は高性能なモデルに任せ、より高速または低コストのモデルに入力を担当させたい場合。
- 機能の追加、テスト付きのバグ修正、複数モジュールにまたがるリファクタリング、長時間の読み取り専用調査など、委任するのに十分な規模のタスクがある場合。
- エージェント同士が互いの変更を上書きせずに、リポジトリの複数の部分を並行して作業させたい場合。
- ChatGPT を使って考えをまとめ、手元のマシンにあるファイルを操作させたい場合。
おそらく必要ない場合
- 変更が1行だけ、または質問への回答がすぐに済む場合。スーパーバイザー自身のツールのほうが高速です。
- OS レベルの本格的なサンドボックスが必要な場合。このプロジェクトが制御するのは、ジョブの開始場所と、ジョブが触れるよう指示される対象であり、OMP が技術的に実行できることではありません(安全性モデルを参照)。
クイックスタート
必要なもの: Node.js ≥ 22 · Oh My Pi のインストール · MCP クライアント(Codex、Claude Code、Cursor、ChatGPT など)。
1. OMP をインストールしてセットアップする
公式の手順に従って OMP をインストールし、次に以下を実行します。
omp --version # confirm the CLI is on your PATH
omp setup # sign in and choose the default model
ここで選択するデフォルトモデルが、すべてのワーカーで使用されるモデルです。(上級者向け:~/.omp/agent/config.yml で modelRoles.default: <provider>/<model> を設定します。)
ompがPATHにない場合は、以下の MCP 設定でOMP_WORKER_OMP_COMMANDに実行ファイルの絶対パスを設定してください。
2. クライアントに MCP サーバーを登録する
グローバルにインストールする必要はありません。クライアントは npx -y omp-worker-mcp で公開パッケージを実行します。使用するクライアントを選択してください。
Codex — 作者が日常的に使用している設定
~/.codex/config.toml を編集します(Windows の場合:C:\Users\<you>\.codex\config.toml)。
[mcp_servers.omp-worker]
command = "npx"
args = ["-y", "omp-worker-mcp"]
[mcp_servers.omp-worker.env]
OMP_WORKER_OMP_COMMAND = "omp"
# Optional (Codex Code Mode only): let Codex call omp-worker tools directly
# without code-mode wrapping. Per the current Codex config reference, merge into
# your existing [features.code_mode] table (do not create a duplicate table header)
# and append "mcp__omp_worker" while preserving any other list entries:
[features.code_mode]
direct_only_tool_namespaces = ["mcp__omp_worker"]
(config.toml に [features.code_mode] がすでにある場合は、そのテーブルに統合し、テーブルを重複させたり既存の項目を上書きしたりせずに、direct_only_tool_namespaces に "mcp__omp_worker" を追加してください。以前の Codex ビルドでは、[table] ヘッダーより前に、トップレベルのキー direct_only_tool_namespaces = ["mcp__omp_worker"] を使用していました。どちらの設定も MCP サーバーの登録に必須ではありません。Codex の直接名前空間の設定と公式の Codex 設定リファレンスを参照してください。)
ChatGPT(ウェブ) — Secure MCP Tunnel 経由
バージョン要件(
>= 0.2.0):OMP_WORKER_ALLOWED_ROOTSはomp-worker-mcp0.2.0以降で利用できます(過去の npm 版0.1.1にはこの機能がなく、OMP_WORKER_ALLOWED_ROOTSも適用されません)。ローカルでの実行をリモートに公開する前に、npx -y omp-worker-mcp@latest --versionで0.2.0以降が表示されることを確認してください。
OpenAI の tunnel-client の背後でサーバーをローカルに実行します。マシンから行われるのは外向きの接続だけです。
export OMP_WORKER_OMP_COMMAND=omp
export OMP_WORKER_ALLOWED_ROOTS='["/Users/you/Projects"]' # strongly recommended for remote access (available since 0.2.0; 0.1.1 lacks this feature)
export CONTROL_PLANE_API_KEY='<runtime-api-key>'
tunnel-client init \
--sample sample_mcp_stdio_local \
--profile omp-worker \
--tunnel-id <your-tunnel-id> \
--mcp-command "npx -y omp-worker-mcp"
tunnel-client doctor --profile omp-worker --explain
tunnel-client run --profile omp-worker
Windows PowerShell のコマンド、0.1.1 のアップグレード/ローカルビルドに関する注意事項、管理対象ランタイムの代替手段(tunnel-client runtimes connect)、権限要件、および信頼境界の詳細については、ChatGPT Secure MCP Tunnel ガイドを参照してください。
Claude Code
claude mcp add omp-worker --scope user --env OMP_WORKER_OMP_COMMAND=omp -- npx -y omp-worker-mcp
現在のプロジェクトだけに登録するには、--scope project を使用します。Windows の cmd.exe で npx を解決できない場合は、cmd /c npx を使用してください。
Cursor · VS Code / Copilot · Windsurf · Continue · あらゆる JSON 設定対応クライアント
{
"mcpServers": {
"omp-worker": {
"command": "npx",
"args": ["-y", "omp-worker-mcp"],
"env": {
"OMP_WORKER_OMP_COMMAND": "omp"
}
}
}
}
ファイルの場所とクライアント固有の注意事項については、クライアント設定を参照してください。
設定を変更したら、クライアントを再起動してください。
3. 委任する場面をエージェントに伝える
サーバーを登録するとツールが利用可能になりますが、エージェントがそれを選択するようになるわけではありません。プロジェクトの指示ファイル(Codex の場合は AGENTS.md、Claude Code の場合は CLAUDE.md、その他の場合は .cursorrules / .github/copilot-instructions.md)または ChatGPT のプロジェクト指示に、簡潔な方針を追加してください。
## Delegation policy (omp-worker-mcp)
- Quick questions, single-file edits, design discussion: do it yourself.
- Substantive single tasks (feature, bug fix, refactor, long investigation): inspect briefly,
then delegate with `omp_run_compact`, giving a clear `goal` and `acceptance` criteria.
- Multi-part work: use `omp_run_batch_compact`. Parallel write tasks need disjoint `ownership`;
tasks touching the same files must be ordered with `depends_on`.
- Review every result. If acceptance is not met, use `omp_continue` with specific feedback.
- Never delegate `git push`, publishing, deployments or secret changes — confirm those with the user.
より詳しいテンプレートについては、作成者向けワークフロー → 方針テンプレートを参照してください。
4. 最初のタスクを実行する
まずは読み取り専用のタスクから始めましょう:
Use omp-worker-mcp to do a read-only inspection of this workspace: summarize the
project structure and dependencies. Do not modify any files.
表示される内容: エージェントが omp_run_compact を呼び出し、OMP がバックグラウンドで動作して、ファイルを変更せずに短い要約が返ってきます。ジョブが待機時間(デフォルトで 60 s)を超えて実行されると、呼び出しはステータス running の job_id を返し、エージェントは omp_wait を使って処理を続けます。これは正常な動作です。
使い方
ポリシーを設定したら、実現したい結果を説明するだけで構いません。以下の例では、スーパーバイザーが内部で送信する内容を示します。
単一のタスク
"
src/net/の HTTP クライアントに指数バックオフを追加し、ユニットテストで検証して、npm testが通ることを確認してください。"
// omp_run_compact
{
"cwd": "/path/to/repo",
"goal": "Add exponential backoff (max 5 retries) to src/net/client.ts for 5xx and network errors.",
"acceptance": [
"Unit tests cover the retry and give-up paths",
"npm test passes"
],
"timeout_minutes": 30
}
返される内容は簡潔です(省略した例):
{
"job_id": "job-…",
"status": "completed",
"attempt": 1,
"max_attempts": 3,
"session_id": "sess-…",
"summary": "Added retry with exponential backoff to the HTTP client.",
"artifacts": [
{ "path": "src/net/client.ts", "description": "retry loop + backoff helper" },
{ "path": "test/net/client.test.ts", "description": "retry / give-up tests" }
],
"verification": ["npm test: all tests passed"],
"remaining": [],
"details_path": "…/jobs/job-…/job.json"
}
DAG として複数のタスクを実行する
"API に
/healthエンドポイントを追加し、UI にステータスバッジを並行して追加してから、その両方を対象にする統合テストを追加してください。"
graph LR
api["api · write src/api/"] --> tests["tests · write tests/"]
ui["ui · write src/ui/"] --> tests
// omp_run_batch_compact
{
"cwd": "/path/to/repo",
"max_parallel": 2,
"tasks": [
{ "id": "api", "goal": "Add GET /health returning build info.", "access": "write", "ownership": ["src/api/"] },
{ "id": "ui", "goal": "Show a status badge fed by /health.", "access": "write", "ownership": ["src/ui/"] },
{ "id": "tests", "goal": "Add an integration test for /health and the badge.",
"depends_on": ["api", "ui"], "access": "write", "ownership": ["tests/"],
"acceptance": ["npm test passes"] }
]
}
知っておくべきルール:
writeタスクでは、ownershipに所有するパスを指定する必要があります(cwdからの相対パス)。read_onlyタスクでは何も指定しません。- 同時に実行される可能性のある 2 つのタスクで、所有するパスを重複させることはできません。代わりに
depends_onを使って順序を指定してください。 max_parallelは 1~10 です(デフォルトは 4)。グループ全体には期限があります(group_timeout_minutes、デフォルトは 60)。- 待機時間が終わった時点でグループがまだ実行中の場合は、
group_idが返されます。omp_wait_groupで処理を続けてください。
ジョブを監督する
| 状況 | ツール |
|---|---|
| まだ実行中 | omp_wait / omp_wait_group |
| ログ、試行回数、または最終回答の全文が必要 | omp_result |
| 結果が受け入れ基準を満たさない | 具体的なフィードバックを添えて omp_continue を実行(max_attempts(デフォルトは 3)に算入されます) |
| 方向性が間違っているため停止する | omp_cancel / omp_cancel_group |
ツール
| ツール | 種別 | 説明 |
|---|---|---|
omp_run_compact | 推奨 | 1 つのタスクを開始し、簡潔な結果が返るまで最大 wait_seconds(≤ 60)待機します |
omp_run_batch_compact | 推奨 | 最大 50 個のタスクからなる DAG を検証して実行し、最大 wait_seconds(≤ 240)待機します |
omp_delegate | 低レベル | 1 つのタスクを開始し、すぐに job_id を返します |
omp_wait | 低レベル | ジョブの完了を待ちます |
omp_wait_group | 低レベル | バッチグループの完了を待ちます |
omp_result | 詳細確認 | ステータス、試行回数、attempt-NN.stdout.jsonl / attempt-NN.stderr.log のパス、最終応答をすべて表示します |
omp_continue | 監督 | 同じ OMP セッションにフィードバックを送り、次の試行を行います |
omp_cancel | 制御 | ジョブとそのプロセスツリーを停止します |
omp_cancel_group | 制御 | グループ内の保留中および実行中のタスクをすべて停止します |
パラメーターと制限の詳細:ツールリファレンス。
設定
設定はすべて環境変数を通じて行います。クライアントの MCP 設定(env)またはサーバーを起動するシェルで設定してください。
| 変数 | デフォルト | 用途 |
|---|---|---|
OMP_WORKER_OMP_COMMAND | omp | OMP 実行ファイル名またはフルパス |
OMP_WORKER_ALLOWED_ROOTS | (未設定 = 制限なし) | ジョブの実行を許可する絶対ディレクトリの JSON 配列。リモートで使用する場合は必ず設定してください。 (0.2.0 以降で利用可能。npm 0.1.1 にはこの機能がありません。) |
OMP_WORKER_STATE_DIR | ~/.codex/state/omp-worker | ジョブの状態、プロンプト、ログの保存先(Codex を使用しない場合もデフォルトのパスが使われます) |
OMP_WORKER_RETENTION_TTL_SECONDS | (未設定 = 永続的に保持) | N 秒より古い完了済みレコードを削除します |
OMP_WORKER_RETENTION_MAX_BYTES | (未設定 = 上限なし) | ストアのサイズが N バイトを超えた場合、最も古い完了済みレコードを削除します |
すべての変数、ディスク上のレイアウト、再起動時の動作について:運用ガイド · .env.example。
安全モデル
omp-worker-mcp が適用する制約
OMP_WORKER_ALLOWED_ROOTSが設定されている場合(0.2.0以降で利用可能。npm0.1.1にはこの機能がありません)、ジョブのcwdはrealpathによる解決後、承認済みのルート内にある必要があります。OMP の起動前に、兄弟ディレクトリのプレフィックスを悪用する手法や、シンボリックリンク/ジャンクションを介した逸脱は拒否されます。値が設定されているものの無効な場合は、フェイルクローズします。- バッチでは、並列実行する
writeタスクのownershipが互いに重複せず、グラフが非巡回である必要があります。これはワーカーを起動する前にチェックされます。 ownershipと読み取り専用の意図は、明示的な制約として各ワーカーに渡されます。
適用されないこと
- サンドボックスではありません。 OMP とその実行内容は、サーバーを起動したユーザーアカウントと同じ権限を持ちます。
ownershipはスケジューリング時のチェックとワーカーへの指示であり、ファイルシステムロックではありません。 - 何を安全に実行できるかは判断しません。
git push、公開、デプロイ、シークレットの変更は、自分とスーパーバイザーの管理下に置いてください。
リモートアクセス(Secure MCP Tunnel 経由の ChatGPT など)では、必ず OMP_WORKER_ALLOWED_ROOTS を設定し、権限を制限した専用アカウント、コンテナー、または VM の使用も検討してください。脆弱性を報告するには、SECURITY.md を参照してください。
プラットフォームのサポート
| プラットフォーム | ステータス |
|---|---|
| Windows | ✅ 実際の OMP CLI を使ったエンドツーエンドの動作を確認済み。CI(windows-latest)でも確認済み |
| macOS | 🟡 CI(macos-latest、偽の OMP を使用)でテストスイート全体を実行しています。実際の OMP CLI を使ったエンドツーエンドの動作は未確認です |
| Linux | 🟡 CI(ubuntu-latest、偽の OMP を使用)でテストスイート全体を実行しています。実際の OMP CLI を使ったエンドツーエンドの動作は未確認です |
| クライアント | ステータス |
|---|---|
| Codex | ✅ 作者が毎日使用しています |
| ChatGPT web(Secure MCP Tunnel) | 📄 ワークフローをドキュメント化しています。ガイドを参照してください |
| Claude Code、Cursor、VS Code / Copilot、Windsurf、Continue | 📄 設定をドキュメント化しています。CI での統合テストは実施していません |
| クラウド/リモートのエージェントホスト | ⚠️ Node.js ≥ 22、PATH 上の OMP、書き込み可能なワークスペース、プロセスの起動機能を提供する場合に限ります |
検証済みの Linux に関する報告やクライアント設定を歓迎します。貢献方法を参照してください。
よくある質問
エージェントがツールを無視して、すべて自分で実行します。
ツールが利用可能でも、必ず選択されるとは限りません。ステップ 3 の委任ポリシーを追加するか、プロンプトでサーバー名を明示してください(「omp-worker-mcp を使って…」)。Code Mode を有効にした Codex では、任意で features.code_mode.direct_only_tool_namespaces も設定できます。
「command not found」/ENOENT ですぐにジョブが失敗します。
MCP サーバーが OMP を見つけられません。実行可能ファイルのフルパスを OMP_WORKER_OMP_COMMAND に設定してください。GUI クライアントは、ターミナルより短い PATH で起動することがよくあります。
結果ではなく、ステータスが running の job_id が返ってきました。
時間のかかるタスクでは想定どおりの動作です。呼び出しは wait_seconds までしか待機しません。ジョブはバックグラウンドで実行を続けます。待機を続けるには omp_wait(または omp_wait_group)を呼び出してください。
ワーカーはどのモデルを使いますか?
OMP のデフォルトモデルです。これは omp setup で選択したモデル(または ~/.omp/agent/config.yml の modelRoles.default)です。スーパーバイザーのモデルは、クライアントが使用するモデルです。モデルを別々にできるのが、この仕組みの要点です。
「outside OMP_WORKER_ALLOWED_ROOTS」エラーが発生します。
タスクの cwd が許可されたルートのいずれにも含まれていません。これは許可リストが機能していることを示します。ディレクトリを許可する必要がある場合は、OMP_WORKER_ALLOWED_ROOTS に追加してください(注:OMP_WORKER_ALLOWED_ROOTS は 0.2.0 以降で利用できます。npm 0.1.1 にはこの機能がありません)。
「Concurrent write ownership conflict」エラーが発生します。
同時に実行できる 2 つのタスクが、重複するパスを所有しています。それぞれに別の ownership スコープを割り当てるか、depends_on を追加して一方の実行後にもう一方を実行してください。
クライアントに組み込まれているサブエージェントとは、どう違いますか?
ワーカーは独自のモデルとプロバイダーを持つ別個のエージェント(OMP)です。会話のターンをまたいでバックグラウンドで実行され、状態をディスクに保持し、ChatGPT のウェブ版を含むあらゆる MCP クライアントから操作できます。バッチでは、依存関係の順序付けと書き込み範囲のチェックも行います。
ドキュメント
| ガイド | 次のことを知りたいときにお読みください… |
|---|---|
| ワークフローの作成 | 委任ポリシーを設定し、監督 → レビュー → 修正のサイクルを理解する |
| クライアントの設定 | Codex、Claude Code、Cursor、VS Code、Windsurf、Continue を設定する |
| ChatGPT Secure MCP Tunnel | ウェブ版 ChatGPT からローカルの OMP を操作する |
| ツールリファレンス | すべてのツール、パラメーター、結果の形式を確認する |
| 運用 | 環境変数、ストレージ、保持期間、再起動を調整する |
| ベンチマークプロトコル | 直接実行とスーパーバイザー・ワーカー間の委任を比較する |
| レジストリへの公開 | npm と Official MCP Registry にリリースする(メンテナー向け) |
COMPATIBILITY.md では公開仕様とバージョニングポリシーを定義しています。CHANGELOG.md にはリリースが記載されています。
コントリビューション
Issue とプルリクエストを歓迎します。特に Linux での検証や、テスト済みのクライアント設定をお待ちしています。CONTRIBUTING.md から始めてください。ソースからビルドするには、次の手順に従ってください。
git clone https://github.com/divenire990/omp-worker-mcp.git
cd omp-worker-mcp
npm ci
npm test # builds, then runs the test suite against a fake OMP
謝辞
Model Context Protocol TypeScript SDK を基盤とし、Oh My Pi(MIT)を中心に設計されています。OMP は同梱されていないため、別途インストールする必要があります。このプロジェクトは独立したものであり、OMP、OpenAI、Anthropic とは提携していません。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。