MCP から操作する
Claude Code / Claude Desktop のような MCP クライアントから、 ブラウザで開いている oniyanma を操作できます。
仕組み — サーバは実行しない
oniyanma のコマンドは、ブラウザ上の生きた Viewer を動かします。 サーバはコマンドを実行できないので、中継に徹します。
Claude Desktop ──stdio──> mcp.ts (agent) ──WS──> coordinator ──WS──> ブラウザ (viewer)
▲ │
└──────────────────────── result ───────────────────────────────────┘ツール定義は起動時に viewer(ブラウザ)から受け取ります。 サーバはアプリのコードを import しません。 だからアプリ側にコマンドを足しても、サーバは何も変えなくて済みます。
認証はありません
ペアリングコード(room)で相手を結ぶだけです。identity と権限は要件確定後に上載せします。
設定手順
1. コーディネータを起動
pnpm --filter @oniyanma/server coordinator # ws://localhost:8787(PORT で変更可)2. ブラウザを viewer として接続
アプリを開き、URL にパラメータを付けるか、コンソールから接続します。
http://localhost:5173/?relay=ws://localhost:8787&room=bridge1oniyanma.connectRelay('ws://localhost:8787', 'bridge1')room はペアリングコードです。次の agent 側と一致させます。
3. MCP クライアントに登録
Claude Desktop の claude_desktop_config.json:
{
"mcpServers": {
"oniyanma": {
"command": "pnpm",
"args": ["--filter", "@oniyanma/server", "mcp"],
"cwd": "/absolute/path/to/oniyanma",
"env": {
"ONIYANMA_RELAY_URL": "ws://localhost:8787",
"ONIYANMA_ROOM": "bridge1"
}
}
}
}Claude Code なら:
claude mcp add oniyanma \
--env ONIYANMA_RELAY_URL=ws://localhost:8787 \
--env ONIYANMA_ROOM=bridge1 \
-- pnpm --filter @oniyanma/server mcp再起動すると、oniyanma のツール(setColorMode / selectBox / measureDistance …)が 使えるようになり、ブラウザ側の点群が実際に動きます。
| 環境変数 | 既定 | 内容 |
|---|---|---|
ONIYANMA_RELAY_URL | ws://localhost:8787 | コーディネータの URL |
ONIYANMA_ROOM | oniyanma | ペアリングコード。viewer 側と一致させる |
使うときの注意
viewer が繋がっていないとツールが空になります。 ブラウザを先に開いて ?relay= で接続するか、 oniyanma.connectRelay() を呼んでください。起動順はどちらでも構いません (agent が先でも、viewer が来た時点で peer 通知で繋がります)。
編集は api として記録されます。 MCP 経由の編集は Command ログに発行者 api で残り、 確認ゲートの対象になります。破壊的コマンドは一度件数が返るので、 confirm: true を付けて呼び直してください。
ログは stderr に出ます。 stdout は MCP transport なので汚しません。
動作確認
Claude Desktop 無しで中継の往復を検証できます。
pnpm --filter @oniyanma/server relay-test # 往復・ルーム分離・起動順・viewer 不在時読み取り専用で外に出す
発注者やコンサルに MCP の入口を渡すなら、 読み取り専用サーフェス(readonly の 18 コマンドだけ)で組むのが想定です。 ツール一覧を絞るだけでなく実行時にも弾くので、名前を知っていても書きコマンドは通りません。