opencode subagents について
opencode-subagent-mcp は Claude Code 向けの stdio MCP サーバーで、メインセッションは Anthropic に接続したまま、opencode モデルで動くサブエージェントに作業を委任できます。バックグラウンド実行、セッション再開、worktree 分離、権限確認に対応します。
主な機能
- 01サブエージェントの実行と管理
- 02send_message による作業再開
- 03バックグラウンド実行と完了待ち
- 04Git worktree による分離
- 05権限ルールと確認の反映
活用シーン
- 01検索作業を opencode モデルに委任
- 02分離した worktree でリファクタリング
- 03完了済み・中断済みセッションの継続
- 04バックグラウンド作業の結果収集
MCP 対応
stdio MCP サーバーとして agent、send_message、wait、stop、list ツールを提供し、ローカルで起動する opencode serve を介して Claude Code からサブエージェントを管理できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| cwd | string | いいえ | 作業ディレクトリ(デフォルト:プロジェクトディレクトリ) |
| model | string | いいえ | opencode モデル。形式は provider/model(デフォルト:opencode-go/deepseek-v4.1-flash) |
| tools | array | いいえ | 使用を許可するツールのリスト(Claude または opencode の名前) |
| effort | string | いいえ | モデルのバリアント/推論強度(例:low、high、max) |
| prompt | string | はい | エージェントが実行するタスク |
| isolation | enum | いいえ | worktree |
| max_turns | integer | いいえ | |
| description | string | はい | タスクの簡潔な説明(3~5 語) |
| output_schema | object | いいえ | 最終回答が満たす必要のある JSON Schema。構造化出力として返されます |
| subagent_type | string | いいえ | Claude Agent 定義名または opencode Agent 名(デフォルト:general) |
| permission_mode | enum | いいえ | 権限モード(デフォルト:auto)default | acceptEdits | auto | bypassPermissions | plan |
| disallowed_tools | array | いいえ | |
| run_in_background | boolean | いいえ |
詳細
opencode-subagent-mcp
Claude Code のサブエージェントを、より低コストの opencode モデル(たとえば、opencode Go サブスクリプションで利用できる opencode-go/deepseek-v4.1-flash(DeepSeek))で実行できます。その間、Claude Code 自体は引き続き Anthropic に直接接続します。Opus や Sonnet の何分の一かのコストで利用できるモデルに、検索、リファクタリング、バグ修正、テスト、調査を委任しながら、バックグラウンドエージェント、send_message による再開、ワークツリー分離、.claude/agents の定義、権限プロンプト、構造化出力など、すでに使っているツールをそのまま利用できます。
これは stdio MCP サーバーです。メインの Claude Code セッションはどこかにプロキシされたり、ルーティングされたりすることはありません。このサーバーは、委任されたサブエージェントのみを、自身で起動した専用の opencode serve インスタンス上で実行します。
インストール
Node 22 以降、git、および利用したいプロバイダーにログイン済みの opencode CLI(opencode auth login)が必要です。
Claude Code プラグインとしてインストールする場合(opencode に委任するタイミングを Claude に伝えるスキルも追加されます):
claude plugin marketplace add sebstaq/opencode-subagent-mcp
claude plugin install opencode-subagent-mcp@sebstaq-opencode
または、通常の MCP サーバーとしてインストールする場合:
claude mcp add -s user opencode -- npx -y [email protected]
実行内容と送信内容
- ランダムな localhost ポートとランダムなパスワードを使って、専用の
opencode serveプロセスを起動し、Claude Code の終了時に停止します。パスワードは実行ごとに生成され、このサーバーとローカルプロセスの間でのみ使用されます。プロセスは環境を引き継ぐため、opencode は設定済みのプロバイダーログイン情報と API キーを使用できます。このサーバーがそれらの認証情報を読み取ったり、保存したり、送信したりすることはありません。 - 委任したプロンプト、およびサブエージェントが読み取るファイルやコマンドの出力は、opencode を介して選択したモデルプロバイダー(デフォルトでは opencode Go)に送信され、そのプロバイダーのデータ保持条件に従って扱われます。opencode はセッション履歴をマシン上のローカルデータベースに保存します。それ以外の情報はどこにも送信されません。このサーバーにテレメトリーはなく、ほかのネットワーク呼び出しも行いません。
~/.claude/settings.json、プロジェクトの.claude/settings.jsonと.claude/settings.local.json、および.claude/agents/*.md(ユーザーとプロジェクト)を読み取り、権限ルールとエージェント定義を反映します。また、存在する場合は~/.config/opencode-subagent-mcp/config.jsonも読み取ります。isolation: "worktree"を指定すると、プロジェクトの.claude/worktrees/配下に git ワークツリーを作成し、変更がないものを削除します。
これは独立したプロジェクトであり、Anthropic または opencode チームとは提携していません。
ツール
| ツール | ネイティブの相当機能 | 機能 |
|---|---|---|
agent | Agent ツール | サブエージェントを実行し、最終レポート、使用状況、ワークツリーの結果を返します |
send_message | SendMessage | 完了したエージェントを全履歴付きで継続します。再起動後にも使用できます |
wait | バックグラウンド完了通知 | run_in_background エージェントの結果を取得します(タイムアウトの指定も可能です) |
stop | TaskStop | 実行中のエージェントを中止し、生成した内容を返します |
list | /agents | このセッションのエージェント、Claude エージェント定義、opencode エージェントを表示します |
agent_id は MCP サーバーまたは Claude Code の再起動後も有効です。wait と stop でその後の状況を確認でき、send_message でエージェントを継続できます。再起動前のエージェントは、ID が再度使われるまで list に表示されませんが、opencode のローカルセッションストアには残っています。
agent のパラメーター:description、prompt、subagent_type、model、isolation: "worktree"、permission_mode、tools、disallowed_tools、max_turns、effort、output_schema、run_in_background、cwd。
ネイティブのサブエージェントとの同等性
| ネイティブの動作 | こちら |
|---|---|
| 新しいコンテキストを使用し、最後のメッセージのみ返されます | 同じです。長い出力は切り詰められ(maxResultChars)、全文はファイルに書き込まれます |
| プロジェクトディレクトリで実行されます | 同じです(MCP roots の cwd、次に CLAUDE_PROJECT_DIR、最後にサーバーの cwd を使用します) |
isolation: worktree | 同じ構成です(.claude/worktrees/<name>、ブランチ worktree-<name>、デフォルトブランチをベースとします)。変更がなければ削除され、それ以外の場合はコミット/ファイルの概要とともに保持されます。外部のパスへのアクセスは拒否されます |
| 権限の確認プロンプトがメインセッションに表示されます | opencode の ask ルールが MCP の確認ダイアログとして表示されます(1 回許可/常に許可/拒否、フィードバックは任意) |
| 権限モード | default、acceptEdits、auto、bypassPermissions、plan は opencode のルールにマッピングされます。ユーザー、プロジェクト、ローカル設定の Claude permissions.allow/ask/deny が適用されます |
| 完了通知付きのバックグラウンドエージェント | Claude Code は長時間の MCP 呼び出しを自動的にバックグラウンドに移し、完了時に通知します。明示的に制御するには run_in_background と wait を使用します |
| 完全な履歴を使用して再開 | send_message(opencode はエージェントを保持するため、以前のセッションのエージェントや再起動後のエージェントでも使用できます) |
.claude/agents/*.md の定義 | subagent_type を介して使用します。対象は prompt、tools、disallowedTools、permissionMode、maxTurns、effort、isolation です。model が適用されるのは opencode の provider/model の場合のみです |
maxTurns は部分的な出力を返します | 同じです。ステータスは max_turns で、再開できます |
| UI での進捗 | ツール呼び出しは MCP の進捗通知として送信されます |
| サブエージェントはサブエージェントを起動したり、ユーザーに質問したりできません | opencode の task ツールと question ツールは無効になっています |
| 構造化出力 | output_schema(JSON Schema)→ opencode の構造化出力。structuredContent として返されます |
既知の不足点:エージェントは Claude Code の /tasks エージェントビューに表示されません。親のコンテキストを引き継いだフォークには対応していません。Workflow ツールの agent() ではエージェントを指定できません。auto モードには安全性分類器がなく、設定したルールと、確認を求める破壊的コマンドの固定リスト(rm -r/-rf、git push --force、git reset --hard、git clean -f、git restore/git checkout --、`curl | sh、sudo、chmod -R/chown -R、dd、mkfs、npm/pnpm publish)を除き、プロジェクト外のパスも含めてすべて許可します。opencode はコマンドチェーン内の各コマンドを個別に照合します。親の権限モードは MCP サーバーから確認できないため、デフォルト値は設定から取得します。フック、スキルの事前読み込み、memory`、エージェントごとの MCP サーバーはマッピングされません。 |
Claude の操作を誘導する
Claude Code はネイティブの Agent ツールとこのツールのどちらを使うかを自動的に選択するため、振り分けは予測できません。検証が容易な委任作業では opencode をデフォルトにするには、docs/claude-md-snippet.md のスニペットをグローバルな ~/.claude/CLAUDE.md に貼り付けてください。
設定
任意の ~/.config/opencode-subagent-mcp/config.json(または $OPENCODE_SUBAGENT_CONFIG):
{
"defaultModel": "opencode-go/deepseek-v4.1-flash",
"defaultPermissionMode": "auto",
"pure": true,
"opencodeBin": "opencode",
"maxConcurrent": 8,
"maxResultChars": 80000
}
OPENCODE_SUBAGENT_MODEL と OPENCODE_SUBAGENT_MODE は、最初の 2 つの設定を上書きします。pure を指定すると、外部プラグインなしで opencode が起動します。
仕組み
初回使用時に、サーバーはランダムなループバックポートとランダムなパスワードで opencode serve を起動し、イベントストリームを購読して、エージェントごとに opencode セッションを 1 つ操作します(エージェント ID = セッション ID)。opencode からの権限要求には、MCP エリシテーションを通じて応答します。opencode プロセスは MCP サーバーとともに停止し、クラッシュしたサーバーの残存プロセスは次回の起動時に回収されます。
開発
pnpm check # typecheck, lint, format check, unit tests
pnpm smoke [provider/model] # end-to-end run against a real model in a temp repo
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。