mcpField
O
OpenCode MCP Bridge

OpenCode MCP Bridge

リモート
github.comAI・エージェント32 週間前に更新
リポジトリ公式サイト

OpenCode MCP Bridge について

OpenCode MCP Bridge は、MCP 対応ホストをセルフホストの OpenCode インスタンス上のワーカーに接続します。認証付き Streamable HTTP でリポジトリやシステムの作業を委任・調整する用途向けで、制限付きワーカーエンドポイントと旧式の全ツールカタログを備えます。

主な機能

  1. 01OpenCode ワーカーへのタスク委任
  2. 02Bearer 認証付き Streamable HTTP で動作
  3. 03ワーカーの実行、待機、状態確認、検証ツール
  4. 04制限付きワーカーエンドポイントと旧式カタログを分離
  5. 05タスクのクリーンアップ、承認、再開に対応

活用シーン

  1. 01別のマシン上のワーカーにリポジトリ作業を委任
  2. 02タスクの進捗を確認しワーカーの変更を検証
  3. 03MCP ホストから OpenCode のタスクを調整
  4. 04シェル実行を公開せずリモートワーカーへのアクセスを制限

MCP 対応

このブリッジはセルフホストの OpenCode インスタンス向け MCP サーバーで、Bearer 認証付き Streamable HTTP を使用し、ローカル stdio トランスポートはありません。既定の `/worker-mcp` は `exec_run` を含まない 8 つのワーカーツールを公開し、旧式の `/mcp` カタログでは明示的に有効化した場合のみ同ツールを含みます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://opencode-mcp.manuotel.com/worker-mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://opencode-mcp.manuotel.com/worker-mcp認証が必要

ツール

詳細

OpenCode MCP ブリッジのロゴ

opencode-mcp-bridge

セルフホストの OpenCodeインスタンス向けの、コーディネーター側で動作するMCP サーバーです。

最初の利用を60 秒で開始

プロトコルレベルで互換性があります(Streamable HTTP経由のMCP)。公式な提携はなく、一部のハーネスではエンドツーエンドの検証が済んでいません。詳しくは docs/compatibility.mdをご覧ください。

Codex のドキュメント Claude Code のドキュメント ChatGPT のドキュメント Cursor のドキュメント VS Code のドキュメント Gemini CLI のドキュメント OpenHands のドキュメント Pi のドキュメント Hermes のドキュメント MCP Inspector のドキュメント

ホスト側のハーネス(Codex、Claude Code、またはMCP対応クライアント)が、別のマシン上のOpenCodeワーカーにリポジトリやシステム関連の作業を委任します。ホスト側のモデルがタスクの範囲を定め、ワーカーと連携し、結果を検証します。このブリッジはBearer認証を使用したStreamable HTTP経由のMCPで通信します(リモートHTTPのみ。ローカルのstdioトランスポートはありません)。OpenCodeワーカーと連携しますが、OpenCodeを置き換えるものではありません。

ブリッジはご自身で用意してください。OpenCodeサーバー、ご自身のブリッジのデプロイ、ご自身のトークン、そしてご自身のhttps://<your-domain>/worker-mcpが必要です。一般的なインストール設定から、他者のサーバーに接続することはありません。ManuOtelが運営する任意参加のコミュニティデモエンドポイントhttps://opencode-mcp.manuotel.com/worker-mcp(/worker-mcpのみ)は、利用を選択した場合に限り使用でき、専用のトークンが必要です。本番環境向けではありません。本番環境では、ご自身のトークンを使ってセルフホストしてください。.mcp.jsonに含まれるhttps://YOUR-BRIDGE-HOST/worker-mcpはプレースホルダーであり、利用可能なサーバーではありません。意図的に明確なエラーを返すようになっています。

ドキュメントの案内

初回利用(60秒)

独自のブリッジデプロイと、その Bearer トークンが必要です。 トークンは環境変数に保存してください。実際のトークンをファイル、 チャットログ、コミットに貼り付けないでください。上記の任意の コミュニティデモは別のもので、独自のトークンが必要な場合があります。 以下の一般的な手順では、独自のブリッジのみを使用します。

export OPENCODE_MCP_URL="https://<your-domain>/worker-mcp"
export OPENCODE_MCP_BEARER_TOKEN="<paste-token-here>"

<your-domain>をブリッジホストに、<paste-token-here>をそのホストの MCP_BEARER_TOKENに置き換えてください。 python3 -c "import secrets; print(secrets.token_urlsafe(48))"で 新しいトークンを生成します。

クイック接続(独自のブリッジ):./scripts/install-client.sh bothを実行すると、 OPENCODE_MCP_URLとOPENCODE_MCP_BEARER_TOKENからCodexと Claude Codeのトランスポートが登録されます。どちらかが設定されていない場合や URLの形式が不正な場合(/mcpまたは/worker-mcpで終わる http(s)://...ではない場合)は、明確なエラーで停止します。 他者のサーバーにフォールバックすることはありません。

./scripts/install-client.sh both --dry-run

詳しい手順:docs/client-setup.md。 Copilotファミリー製品:docs/copilot-setup.md。

以下の例ではすべて、https://<your-domain>/worker-mcp(安全なデフォルトで、 推奨されるエンドポイント。8つのワーカーツール worker_catalog、worker_run、worker_wait、worker_status、 worker_verify、worker_cleanup、worker_decide、worker_resumeを提供し、 exec_runは提供しません)、または https://<your-domain>/mcp(19個のツールを含むレガシーの完全なカタログ。 オペレーターがENABLE_EXEC_RUN=trueを設定した場合に限り exec_runを使用できます)を使用します。 CodexのプラグインバンドルではサーバーURL内の環境変数が展開されないため、 具体的なURLを使って、マシンごとにトランスポートを登録してください。

エンドポイント

2つのStreamable HTTPエンドポイントで、1つのBearerトークンを共有します。 GET /healthと、読み取り専用の GET/HEAD(/.well-known/oauth-protected-resourceおよびその /mcp、/worker-mcp配下のパス)、さらに /.well-known/mcp/server-card.jsonは、シークレットなしで利用できます。

エンドポイントツール用途
/worker-mcpワーカーツールのみ(8個。exec_runは提供しません)すべての新規クライアントのデフォルト。最小権限で、シェルはありません。
/mcp完全な互換カタログ(19個のツール)レガシー専用。ENABLE_EXEC_RUN=trueでない限り、exec_runはフェイルクローズします。
/healthなし(公開)リバースプロキシの稼働確認。
/readyなし(Bearerトークンが必要)OpenCodeとレジストリの準備状態(200/503)。
/metricsなし(Bearerトークンが必要)機密データを含まない、上限付きカウンター。

Codex と Claude Code

エンドツーエンドテストが文書化されている場合を除き、プロトコルレベルの互換性 (Bearerヘッダーを使用する、Streamable HTTP経由のMCP)です。 マトリックス、ステータスラベル、初回呼び出しの仕様: docs/compatibility.md。

Codex
codex mcp add opencode --url "$OPENCODE_MCP_URL" --bearer-token-env-var OPENCODE_MCP_BEARER_TOKEN

Codex はリクエスト時に環境からトークンを読み取ります。 opencode-worker プラグインはスキル(delegate-to-opencode、続いて verify-opencode-work、失敗時は recover-opencode-task)を追加します。コード変更には opencode-git-workflow を使用します。Git マーケットプレイスから v0.6.0 に固定してインストールし、上記のとおり独自のトランスポートを登録してください(同梱の プレースホルダー URL は使用できません)。

codex plugin marketplace add ManuOtel/opencode-mcp-bridge --ref v0.6.0

詳細:docs/client-setup.md のセクション 2 と 6 を参照してください。 公式ドキュメント:https://developers.openai.com/codex/cli/reference

Claude Code

推奨トランスポート:type: http、 url: ${OPENCODE_MCP_URL}、ヘッダー Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN} を指定したプロジェクトの .mcp.json エントリ (読み込み時に展開されるため、トークンはファイルに残りません)。CLI を使用する場合も、同じ参照 形式です。

claude mcp add --transport http --header 'Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN}' opencode "$OPENCODE_MCP_URL"
claude mcp add --transport http --header 'Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN}' opencode-bridge "$OPENCODE_MCP_URL"

シェルで展開したヘッダーを使うと、シークレットがローカル設定に保存されます。設定ファイルが漏えいした場合は、トークンをローテーションしてください。推奨:このリポジトリの Claude マーケットプレイスにある opencode-worker プラグイン (.claude-plugin/marketplace.json)。トランスポートと coordinate-opencode-worker スキルが同梱されています。先に両方の変数をエクスポートしてください。

claude plugin marketplace add ManuOtel/opencode-mcp-bridge
claude plugin install opencode-worker@opencode-mcp-bridge

npm パッケージも Brew パッケージもありません。どちらのマーケットプレイスも、この Git リポジトリからインストールします。詳細:docs/client-setup.md のセクション 3 と 7 を参照してください。公式ドキュメント:https://docs.anthropic.com/en/docs/claude-code/mcp

その他のハーネス

製品ごとに設定キーが異なります。貼り付ける前に、リンク先の公式 ドキュメントでキー名を確認してください。コピーしてすぐに使える完全な設定ブロック: docs/harnesses.md。どこでも使える安全なパターン:URL https://<your-domain>/worker-mcp、ヘッダー Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN}、8 つの worker_* ツール(worker_wait は上限付きの読み取り専用ロングポーリング、 worker_decide/worker_resume は承認が必要です)。

ハーネス場所状態
ChatGPT Developer Mode / connectorsdocs/harnesses.md静的な Bearer ヘッダーでの動作は未検証
Cursordocs/harnesses.mdプロトコルレベル
VS Codedocs/harnesses.mdプロトコルレベル
Gemini CLIdocs/harnesses.mdプロトコルレベル
OpenHandsdocs/harnesses.md未検証
Windsurfdocs/harnesses.mdプロトコルレベル
Clinedocs/harnesses.mdプロトコルレベル
Roo Codedocs/harnesses.mdプロトコルレベル
Pidocs/harnesses.mdプロトコルレベル
Hermes Agentdocs/harnesses.mdプロトコルレベル
GitHub Copilot / Copilot Studio / M365 Copilotdocs/copilot-setup.md別のガイド
MCP Inspectordocs/harnesses.mdデバッグのみ
OpenHands
openhands mcp add opencode-bridge --transport http \
  --header "Authorization: Bearer <paste-token-here>" \
  "https://<your-domain>/worker-mcp"

<paste-token-here> をブリッジホストの MCP_BEARER_TOKEN に置き換えてください (キー名については https://docs.openhands.dev/openhands/usage/cli/mcp-servers を参照)。 エンドツーエンドの動作は未検証です。完全な設定ブロック: docs/harnesses.md。クライアントを使わずに実行する場合: ./scripts/smoke.sh。

ワーカーのワークフロー

worker_run は非同期です(すぐに taskID を返します)。その後、worker_wait でサーバー側の待機時間を指定して待つか、worker_status で状態を確認します。

worker_catalog()
worker_run(message="Implement X in /path/to/repo", directory="/path/to/repo", title="feat-x")
worker_wait(taskID="<taskID>", directory="/path/to/repo", timeout_s=30)
worker_verify(taskID="<taskID>", directory="/path/to/repo")
worker_cleanup(taskID="<taskID>", directory="/path/to/repo")
  1. worker_catalog(デフォルトでは無料で接続済み)。デフォルト: opencode/muse-spark-1.3-contributor-free。有料の代替モデル opencode-go/muse-spark-1.3-contributor は、明示的に要求された場合にのみ、 providerID/modelID として渡します。自動選択されることはありません。
  2. message、directory、title と、安全に再試行する場合は任意で requestID を指定して worker_run を実行します(同じ入力で再試行すると deduplicated=true になります)。taskID と directory を保存します (ステータスの読み取りはディレクトリ単位です)。
  3. worker_wait(timeout_s まで。デフォルトは 30、1~120 に制限されます。 変更があれば早期に返され、それ以外の場合は timed_out=true と next_action="worker_wait" が返されます)、または worker_status で状態を一度確認します。 running の場合は再度待機し、idle の場合は検証し、stale の場合は クリーンアップし、error/unknown の場合は復旧します (skills/recover-opencode-task/SKILL.md)。
  4. worker_verify を実行した後、差分を正確に確認し、ホスト側のツールで テストと lint を実行します。ワーカーの概要だけを信用してはいけません。
  5. worker_cleanup を実行します(action=abort は停止し、action=delete は 削除します)。

仕様:docs/tool-api.md。コーディネーターの動作: docs/worker-operating-model.md。 .mcp.json での承認:worker_run/worker_cleanup は確認を求めます。 worker_wait/worker_status/worker_catalog/worker_verify は 自動承認されます。

セキュリティ

  • MCP_BEARER_TOKEN は root 相当の権限を持ちます。長くランダムな値を使い、 漏えいした場合はローテーションし、.env やトークンをコミットしないでください。
  • /worker-mcp は exec_run を公開しません。ワーカートークンが漏えいしても、 直接シェルを実行することはできません。シェルを使う想定がない環境では、 /mcp を公開したり ENABLE_EXEC_RUN=true を設定したりしないでください。
  • ローテーション:MCP_BEARER_TOKEN_SECONDARY に一時的に併用するトークンを 1 つ設定します。クライアントを移行し、昇格して再起動します。空の値や 重複する値は安全側に失敗します。
  • シークレットなしで公開されるのは、GET /health と読み取り専用の RFC 9728 ディスカバリーおよびサーバーカードです。/mcp と /worker-mcp 以下の すべてのエンドポイントには Bearer トークンが必要です。

ローカルデプロイ

Python 3.11 以降、uv、および実行中の opencode serve または opencode web が必要です (サーバードキュメント)。

git clone https://github.com/ManuOtel/opencode-mcp-bridge.git
cd opencode-mcp-bridge
uv sync
cp .env.example .env
# edit .env: OpenCode credentials + a fresh MCP_BEARER_TOKEN
uv run python -m opencode_mcp_bridge.server

curl http://127.0.0.1:8087/health は {"ok": true} を返します。トークンなしで POST /mcp と POST /worker-mcp を呼び出すと 401 が返されます。主な変数: OPENCODE_BASE_URL、OPENCODE_SERVER_PASSWORD、MCP_BEARER_TOKEN、 ENABLE_EXEC_RUN(false)、TASK_STATE_PATH、MCP_MAX_BODY_BYTES、 MCP_ALLOWED_ORIGINS。TLS 対応のリバースプロキシを前段に配置してください。 リリース、チェック、ローテーション、ロールバック、ログ: docs/operations.md。

コントリビューターのワークフロー

まず AGENTS.md を読んでください(担当範囲、編集、無料モデルの ポリシー、テスト、シークレット、ワークツリー、コミット、報告について)。 スキルは skills/ にあります。

uv sync
uv run pytest
uv run ruff check src tests
uv run ruff format --check src tests
git diff --check

公開とディスカバリー

リポジトリ内でシークレットなしで設定する項目:io.github.ManuOtel/opencode-mcp-bridge 用の安全な /worker-mcp メタデータを含む server.json、ManuOtel の申請情報を 含む glama.json、およびダッシュボード/CLI 経由の Smithery。公開には所有者本人の ログインが必要です。チェックリスト:docs/registry.md。 レジストリエントリーはソフトウェアを掲載するものであり、アクセス権を付与したり、 トークンを提供したりするものではありません。デフォルトは /worker-mcp (ツール 8 個、シェルなし)です。/mcp(ツール 19 個、exec_run はオプトイン)は レガシーです。自分が運用していないエンドポイントを公開したり、トークンを コミットしたりしないでください。

コミュニティとライセンス

コードやドキュメントを変更する前に CONTRIBUTING.md を 読んでください。行動規範を遵守し、セキュリティ上の 問題は SECURITY.md に従って報告してください。 機能ブランチからイシューを作成 するか、プルリクエストを送信 してください。

ライセンス:PolyForm Noncommercial 1.0.0。非商用利用は無料です。 LICENSE.md を参照してください。商用利用には許可が必要です: [email protected]

コメント

MCP は初めてですか?

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

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