04. ホストに登録する

Claude Code・Codex・Antigravity へ登録し、実際に呼ばせる

📅 作成: 2026-09-07 / 更新: 2026-09-07

この資料の内容

  1. 登録するとは何をすることか
  2. Claude Code
  3. Codex
  4. Antigravity
  5. 動かないときの切り分け

登録するとは何をすることか

stdio のサーバーの登録は、要するに「このコマンドを起動してください」と伝えるだけです。特別な仕組みはありません。

{
	"command": "node",
	"args": ["docs/samples/03-sdk/server.mjs"]
}

ホストはこれを子プロセスとして起こし、標準入出力で話しかけます。どのホストでも中身は同じで、書き方と置き場所だけが違います。

Claude Code claude mcp add / .mcp.json Codex codex mcp add / config.toml Antigravity antigravity --add-mcp 同じことを言っている node <path> を起動して あなたの サーバー
書き方は 3 通りだが、伝えている内容は同じ。サーバー側を作り分ける必要はない。

置き場所には範囲がある

範囲効く先使いどころ
プロジェクトそのフォルダで作業するときだけチームで共有したい。お勧め
利用者その人のすべての作業どこでも使う道具

まずプロジェクト範囲で試してください。設定がリポジトリの中に収まるので、消したいときはファイルを消すだけで済みます。利用者範囲に入れると、他のプロジェクトでも起動されるようになります。

Claude Code

コマンドで登録する

# プロジェクト範囲(.mcp.json に書かれる)
claude mcp add --scope project memo -- node docs/samples/06-memo/server.mjs

# 環境変数を渡す
claude mcp add memo -e MEMO_FILE=C:/data/memo.jsonl -- node server.mjs

# HTTP のサーバー
claude mcp add --transport http remote https://example.com/mcp

-- より後ろが、そのまま起動するコマンドになります。この区切りを忘れると、後ろの引数が claude のものとして読まれます

ファイルに直接書く

プロジェクト範囲の実体は、リポジトリ直下の .mcp.json です。手で書いても同じです。

{
	"mcpServers": {
		"memo": {
			"command": "node",
			"args": ["docs/samples/06-memo/server.mjs"]
		}
	}
}

確かめる

claude mcp list        # 一覧と接続の可否
claude mcp get memo    # 1 本の詳細
claude mcp remove memo # 消す
.mcp.json に書く または mcp add 起動し直す 読み込みは起動時だけ 承認する プロジェクト範囲は初回のみ 使える mcp__memo__memo_add ツールの名前は mcp__<サーバー名>__<ツール名> になる 同じツール名を持つサーバーが複数あっても、サーバー名で分かれる
設定を読むのは起動のときだけ。書き換えたら起動し直す。

プロジェクト範囲の .mcp.json は、初回に承認が要ります。他人のリポジトリを開いただけで勝手にプロセスが起動しないための仕組みです。承認していないサーバーは一覧に「⏸ Pending approval」と出て、接続されません。

Codex

コマンドで登録する

codex mcp add memo -- node docs/samples/06-memo/server.mjs

# HTTP のサーバー
codex mcp add remote --url https://example.com/mcp

# 環境変数
codex mcp add memo --env MEMO_FILE=C:/data/memo.jsonl -- node server.mjs

書かれる先は ~/.codex/config.toml です。Claude Code と違い、プロジェクト単位の設定ファイルはありません

設定を書き換えずに試す

-c でその場だけ上書きできます。設定ファイルを汚さずに試せるので、動作確認に向きます。

codex exec -c 'mcp_servers.memo={command="node", args=["docs/samples/06-memo/server.mjs"]}' "メモを検索して"

確かめる

codex mcp list
codex mcp get memo
codex mcp remove memo
サーバーには繋がる initialize / tools/list は通る ツールの実行だけ 承認を求められる approval policy が never だと 呼ばずに断られる 「繋がっているのにツールが動かない」ときは、承認の設定を疑う サーバー側のログには tools/call が届いていない
接続とツールの実行は別の関門。ログに tools/call が来ていなければ、サーバーの問題ではない。

Antigravity

Antigravity は VS Code をもとにしたエディタなので、登録の作法もそちら寄りです。

antigravity --add-mcp '{"name":"memo","command":"node","args":["docs/samples/06-memo/server.mjs"]}'

JSON を 1 つの引数として渡します。PowerShell では全体をシングルクォートで囲みます。ダブルクォートで囲むと、中の " が壊れます。

エディタの設定画面からも登録できます。コマンドが使えない・引数の引用符で詰まる、というときは画面から入れるほうが確実です。GUI から入れても、書かれる先は同じです。

通る antigravity --add-mcp '{"name":"memo","command":"node",...}' 壊れる antigravity --add-mcp "{\"name\":\"memo\",...}" cmd.exe 向けのエスケープを PowerShell に持ち込まない
JSON を引数に渡すときは、外側をシングルクォートで囲むのが確実。

3 つの違いのまとめ

項目Claude CodeCodexAntigravity
登録コマンドclaude mcp addcodex mcp add--add-mcp
プロジェクト単位あり.mcp.jsonなしエディタ次第
一時的に試すあり-c
喋る版2025-11-252025-06-18

「喋る版」は実測した値です。Claude Code 2.1.263 と Codex 0.153.4 で確かめました。版が上がれば変わります。自分の環境で確かめる方法は次の章にあります。

動かないときの切り分け

「登録したのにツールが出てこない」。このとき最初にやるべきは、どこまで届いているかを見ることです。

観測用のサーバーを挟む

受け取った行をすべてファイルに書き出すサーバーを用意しておくと、一発で分かります。samples/02-minimal/probe.mjs がそれです。

function record(direction, text) {
	const stamp = new Date().toISOString();
	appendFileSync(LOG, `${stamp} ${direction} ${text}\n`, 'utf8');
}

これを登録して呼ぶと、こう残ります。

2026-09-07T09:43:33.182Z *** 起動 pid=22140
2026-09-07T09:43:33.335Z --> {"method":"initialize","params":{"protocolVersion":"2025-11-25",...}}
2026-09-07T09:43:33.337Z <-- {"jsonrpc":"2.0","id":0,"result":{...}}
2026-09-07T09:43:33.471Z --> {"jsonrpc":"2.0","method":"notifications/initialized"}
2026-09-07T09:43:33.546Z --> {"method":"tools/list","jsonrpc":"2.0","id":1}
2026-09-07T09:43:41.732Z --> {"method":"tools/call","params":{"name":"add",...}}
(ファイルが作られない) プロセスが起動していない。パス・node の場所を疑う *** 起動 で止まる 起動直後に落ちている。stderr を見る initialize の後で止まる 応答の形が違う。stdout に余計な出力がないか tools/list まで来て、call が無い サーバーは正常。説明文か承認の設定を疑う tools/call が来ている 通信は成立。あとはツールの中身の問題
止まった位置が原因を教える。推測で設定をいじる前に、まずここを見る。

よくある原因

症状原因直し方
プロセスが起動しない相対パスの基準がずれている絶対パスにして確かめる。通ったら相対に戻す
起動直後に落ちる依存が入っていない手で node server.mjs を動かしてエラーを見る
繋がるがツールが出ないconsole.log が混ざっている02 章の「stdout を汚さない」
ツールは出るが呼ばれない説明文が足りないdescription に「いつ使うか」を書く
呼ばれるが断られる承認の設定ホスト側の設定を見る。サーバーは無関係
設定を変えても反映されない読み込みは起動時だけホストを起動し直す

手で動かせるものは、まず手で動かします。node server.mjs と打って何も起きなければ(入力待ちになれば)正常です。エラーが出るなら、ホストに登録する前にそれを直します。ホストを経由すると、エラーメッセージが見えなくなります。

次の章へ

登録して呼べるようになりました。次は Tools 以外の 2 つ、Resources と Prompts を扱います。