> 2026-05-23 完成。cure サーバー上の OpenClaw ゲートウェイ経由で GPT-5.5 を呼び出す。
## アーキテクチャ
```
shadow (Claude Code)
├── MCP: openclaw mcp serve --claude-channel-mode on
│ → conversations_list / events_poll / permissions_list_open / messages_send
│ → チャンネルなし = conversations_list は常に空
│
└── Bash: ~/.claude/scripts/claw.sh "
→ ssh cure → docker exec openclaw agent → GPT-5.5
```
## インフラ構成
| サーバー | 役割 |
|---------|------|
| shadow (100.115.94.5) | Claude Code 実行 + MCP クライアント |
| cure (100.86.220.63) | Docker コンテナ群 (OpenClaw / n8n / Dify) |
### cure 上の Docker Compose
```yaml
# /home/ubuntu/services/docker-compose.yml
openclaw:
image: ghcr.io/openclaw/openclaw:latest
container_name: openclaw
ports: ["18789:18789", "18790:18790"]
environment:
OPENCLAW_GATEWAY_TOKEN: 93e0c08954863e7739aa497ab433bf80f6665fe9ae007f0a
OPENCLAW_GATEWAY_BIND: lan
OPENCLAW_GATEWAY_CONTROL_UI_ALLOW_INSECURE_AUTH: "true"
entrypoint: ["/home/ubuntu/services/openclaw-entrypoint.sh"]
volumes:
- openclaw_data:/home/node/.openclaw
- /home/ubuntu/services/openclaw-entrypoint.sh:/home/ubuntu/services/openclaw-entrypoint.sh:ro
```
### entrypoint スクリプト(スコープ永続化)
`/home/ubuntu/services/openclaw-entrypoint.sh` — 起動のたびに MCP デバイスのスコープを full に書き換える。
MCP デバイス ID: `e3a94109b74d1412adbde74e3eb4a5e6b55c9c38659290725f1486578c7cb1c0`
## shadow の MCP 設定 (~/.claude.json)
```json
"openclaw": {
"type": "stdio",
"command": "ssh",
"args": [
"-T",
"cure",
"sudo docker exec -i openclaw openclaw mcp serve --token 93e0c08954863e7739aa497ab433bf80f6665fe9ae007f0a --url ws://localhost:18789 --claude-channel-mode on"
]
}
```
## Bash 呼び出し(アウトバウンド)
```bash
# 基本
~/.claude/scripts/claw.sh "メッセージ"
# セッション継続
~/.claude/scripts/claw.sh "メッセージ" "e0df124c-be9c-48b8-b550-279b88c7e81a"
# SSH 直接(デバッグ)
JSON_MSG=$(python3 -c "import json,sys; print(json.dumps(sys.argv[1]))" "$MSG")
ssh -o LogLevel=ERROR cure "sudo docker exec openclaw openclaw agent --agent main --json -m $JSON_MSG 2>/dev/null"
```
## MCP ツール一覧(Claude Code から利用可能)
| ツール | 動作 | 備考 |
|--------|------|------|
| `mcp__openclaw__conversations_list` | チャンネルバック会話一覧 | チャンネル未設定 = 常に空 |
| `mcp__openclaw__events_poll` | イベントキューポーリング | ✅ 動作確認済み |
| `mcp__openclaw__permissions_list_open` | 未承認リスト | ✅ 動作確認済み |
| `mcp__openclaw__permissions_respond` | 承認/拒否 | ✅ スキーマ確認済み |
| `mcp__openclaw__messages_send` | チャンネル返信 | チャンネル必要 |
## エージェント情報
- agent id: `main`
- session key: `agent:main:main`
- session id: `e0df124c-be9c-48b8-b550-279b88c7e81a`(継続可能)
- model: `gpt-5.5` (openai-codex)
- context: 272K tokens
## /claw スキル
`~/.claude/skills/claw/SKILL.md` — Claude Code から `/claw` で Codex を呼び出す。
## 既知の落とし穴
| 問題 | 原因 | 対処 |
|------|------|------|
| `--url` なしで mcp serve が無応答 | コンテナ内でゲートウェイ URL が自動検出されない | `--url ws://localhost:18789` を必ず付ける |
| `-T` なしで SSH がハング | PTY 割り当てで stdio がブロック | `-T` フラグ必須 |
| スコープが restart で戻る | paired.json がデフォルトに戻る | entrypoint スクリプトで毎回パッチ |
| `model override not allowed` | agent.json で gpt-5.5 固定 | `--model` 引数を使わない |
| `conversations_list` が空 | チャンネル未設定(Telegram/Discord 等が必要) | Bash で `openclaw agent` を使う |
## WebUI
- OpenClaw: https://cure.taile6d59.ts.net:18790 (Tailscale HTTPS)
- n8n: http://100.86.220.63:5678