2026-05-19 ヘッドレスでレンタルした Apple Silicon クラウド Mac 上の OpenClaw MCP サーバーとツール権限(香港 / 東京 / ソウル / シンガポール / 米国)
香港・東京・ソウル・シンガポール・米国で Mac mini M4 をレンタルし、ヘッドレス SSH で OpenClaw を動かすチームは、リポジトリ検索や社内 API をエージェントに安全に渡すために Model Context Protocol(MCP) を構成したくなる。本稿の結論は明確だ:短命でリポジトリ内に閉じるツールは stdio MCP を優先し、複数ゲートウェイで共有する場合のみ HTTP/SSE MCP に昇格させる。どちらの転送でも30 秒以上の読み取りタイムアウトと、OpenClaw+並列 MCP 向けに少なくとも 4GBの空き統合メモリを確保する。比較表・ツール面マトリクス・7 ステップ手順・3 列トリアージ表を用意し、Node 24 + launchd + doctor と AGENTS.md ワークスペース方針 と相互参照できる。
ヘッドレス Mac で MCP が必要になるケース
OpenClaw はファイルスキルやチャネル統合を備えるが、本番では Git・課題管理・HTTP API を構造化ツールとして公開したい場面が残る。MCP はエージェントランタイムが更新されても統合を差し替えずに済ませる。レンタル環境では他テナントの npx キャッシュが PATH を汚染しないか、各 MCP が許可されたワークスペース根だけを読むかを必ずレビューする。
- プラットフォームチームはゴールデンイメージごとに監査済み MCP 束を一本化したい。
- モバイルリリース担当は
xcodebuildやsimctlを SSH と launchd で同じ argv に揃えたい。 - セキュリティは各 MCP が触り得るパス接頭辞を列挙したい——stdio 境界の方が説明しやすい。
設計の出発点として MacXCode ホーム を参照し、どの MCP をレンタルホスト上のチェックアウトに同居させるかを決める。
macOS ゲートウェイにおける stdio と HTTP/SSE
stdio は子プロセスの標準入出力で JSON-RPC を運び、信頼できるバイナリをリポジトリ横に置くケースに最適。HTTP/SSE は常駐デーモンへ接続し、TLS 終端や複数ゲートウェイ共有が必要なときに選ぶ。stdio はゲートウェイ再起動で綺麗に落ちるが、HTTP MCP は launchd のスロットルと整合しないと接続が宙吊りになる。
| 観点 | stdio MCP | HTTP/SSE MCP | レンタル運用メモ |
|---|---|---|---|
| ライフサイクル | セッションに紐付く | 常駐+ヘルスチェック | 単一チームなら stdio が単純 |
| 認証 | ゲートウェイ環境を継承 | mTLS や署名トークン | bearer を world-readable な /tmp に置かない |
| レイテンシ | ローカルパイプで極小 | ループバックは速いが跨地域は遅延増 | HTTP MCP は HK/JP/KR/SG/US と同都市圏へ |
| 観測性 | stderr をゲートウェイへ | 集中アクセスログ | StandardErrorPath を日次ローテーション |
git や xcodebuild を呼ぶ MCP にはクライアント側で30 秒の読み取りタイムアウトを。冷えたキャッシュでは10 秒超の初回スキャンも珍しくない。
ツール面マトリクス:人間承認なしで何が許されるか
ネットワーク出口を渡す前に各行を許可/拒否へ落とし、分割読み取りで隣ディレクトリの秘密を再構成できないようにする。
| ツール群 | 既定 | 必須要件 |
|---|---|---|
| リポジトリ読取/検索 | 許可リスト内のみ | シンボリックリンクのエスケープ禁止 |
| シェル実行 | 原則拒否 | argv ホワイトリストと cwd 固定 |
| HTTP フェッチ | タグ付きホストのみ | メタデータ IP を遮断し URL をログ |
| ブラウザ自動化 | SSH のみでは無効 | 必要なら VNC 手順に従う |
ヘッドレス launchd:PATH、Node 24+、ログ
launchd ジョブは zshrc を読まない。npx 依存の MCP は SSH では成功しても夜間ジョブで exit 127 になる。onboard + doctor と同様に Node 24+ を固定し、plist の EnvironmentVariables に絶対パスを書く。OpenClaw と 2 つの stdio MCP を前提に、言語サーバー型 MCP を追加するたび約 2GBの追加メモリを見込む。
7 ステップ:Apple Silicon レンタルで MCP を有効化
node -vが v24+ か確認し、SSH とテスト plist の両方でwhich openclawを一致させる。- MCP 設定を Git 管理し、環境別ブロックに分割する。
- stdio MCP の argv[0] を絶対パスにし、作業ディレクトリを CI と同じチェックアウトに合わせる。
- ファイル系ツールに許可リストを適用し、AGENTS.md の根定義と突き合わせる。
- 最小の読み取り専用ツール呼び出しでドライランし、ログを
/var/log/openclaw/などへ。 openclaw doctorを実行し、重複 LaunchAgent を解消してから反映する。- キルスイッチ:MCP ブロックをコメントアウトし、
launchctl kickstart -kでゲートウェイを再起動する手順を文書化する。
デプロイ後のプローブ例:
OPENCLAW_LOG_LEVEL=debug openclaw doctor >> ~/Logs/openclaw-mcp-probe.log 2>&1
トリアージ:本番で MCP が失敗するとき
| 症状 | 有力原因 | 次の手 |
|---|---|---|
| 子プロセス exit 127 | PATH 不足 | plist EnvironmentVariables を印刷し絶対パスを追加 |
| 30 秒超のハング | ネットワーク遮断や git 資格情報 | GIT_TERMINAL_PROMPT=0 と stderr を確認 |
| アップグレード後ツール一覧が空 | スキーマ不一致 | サーバ版を固定し doctor を再実行 |
FAQ
stdio と HTTP の優先順位は? 短命でリポジトリ内なら stdio。共有ゲートウェイや TLS 終端が要るなら HTTP/SSE。混在時はタイムアウトを分ける。
SSH と launchd で挙動が違うのはなぜ? launchd は最小環境。plist に絶対パスを書き、シェルプロファイルに依存しない。
メモリはどれだけ? OpenClaw+stdio MCP×2+ ripgrep 負荷で4GB空きを底上げし、言語サーバー型を足すごとに約 2GB追加。
オンブック用に ブログ一覧 と ヘルプ をブックマークしておく。
Mac mini M4 レンタルが OpenClaw + MCP を閉じる理由
Apple Silicon M4 のメモリ帯域は、OpenClaw、複数 MCP、ときどきの xcodebuild analyze を同時に回してもインデックスをスワップに追いやりにくい。ネイティブ macOS スタックは TLS ジッタを抑え、30 秒の MCP タイムアウト設計と相性が良い。東京で App Store Connect に近づけたり、シンガポールで ASEAN 向けに試したり、検証後に解放できる。料金ページ でリージョンを比較し、ヘルプ で SSH をリハーサルし、ブラウザ MCP が必要なときだけ VNC を有効化する。
OpenClaw と MCP の PATH を揃えた Apple Silicon をレンタル
HK / JP / KR / SG / US · SSH / オプション VNC · Mac mini M4