◉ANTIGRAVITY LABEN
記事一覧/連携・プラグイン
⬡ 連携・プラグイン/2026-10-19初級

Antigravity CLI に GitHub MCP を繋ぐ最初の 1 本 — 書き換えるのは url の 1 語だけでした

Antigravity CLI で GitHub MCP を使うには、設定の url を serverUrl に書き換える必要があります。公式の MCP ドキュメントを根拠に、リモート接続と Docker 接続の書き方、読み込む前の検査スクリプト、トークンの置き場所と切り分けの順番をまとめます。

MCP28GitHubAntigravity CLI39設定11トラブルシューティング37

壁紙アプリのリリースメモを、GitHub の Issue から拾ってエージェントに下書きさせたいと考えました。そう思い立って GitHub MCP の導入手順を開いた夜、書かれているのは IDE の設定ばかりでした。

CLI 側の手順は、公式リポジトリの導入ガイドにはまだありません。実際、GitHub MCP Server のリポジトリには「Antigravity CLI の設置方法を追記してほしい」という要望の Issue が立っています。Gemini CLI から移ってきた方ほど、設定ファイルをどこに置けばいいのか分からず、手が止まりやすいところです。

最初にお伝えしたいのは、つまずきの大半が リモート接続の URL を書くキーの名前 に集中しているということです。Antigravity の MCP 設定では serverUrl が必須で、旧来の url や httpUrl は使えません。ここから先は、その 1 語を直すところから動作を確かめるところまで、順に辿っていきます。

設定ファイルの場所は 2 つあります

公式の MCP ドキュメント によると、CLI の設定は次の 2 か所に分かれています。

  • グローバル: ~/.gemini/config/mcp_config.json
  • ワークスペース: プロジェクト直下の .agents/mcp_config.json

ひとつ注意があります。先ほどの Issue では、グローバルの置き場所が ~/.gemini/antigravity-cli/mcp_config.json と書かれています。公式ドキュメントの記載と食い違っているのです。どちらが正しいかを私の側で断定することはできません。

ですので、パスを信じ切る前に /mcp を開いてください。CLI のプロンプトで /mcp と入力すると、MCP マネージャが開き、サーバーの接続状態をランプで確認できます。書いたサーバーがここに現れなければ、ファイルの置き場所が違っています。ファイルを開かずに足したい場合は、設定ファイルを開かずに MCP サーバーを足す — agy mcp サブコマンドで構成を持ち運ぶの方法が手堅いでしょう。

リモート接続: serverUrl と headers

GitHub が提供するリモートの MCP エンドポイントに繋ぐ場合の設定です。

{
  "mcpServers": {
    "github": {
      "serverUrl": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer YOUR_GITHUB_PAT"
      }
    }
  }
}

ここで解決しているのは「トークンを渡しながらリモートの MCP に繋ぐ」ことです。公式ドキュメントのスキーマでは、サーバーごとに command(stdio 用)か serverUrl(リモート用)のどちらかが必要と定められています。リモートなら serverUrl と、必要に応じて headers を書く。これだけです。

なぜ serverUrl なのかといえば、ドキュメントに「url や httpUrl などの旧フィールドは未対応」と明記されているからです。Gemini CLI の設定を写してきた場合、キー名だけがここで通らなくなります。

Docker 接続: ローカルでサーバーを動かす

トークンを外へ送らず、手元で動かしたい場合は stdio 接続になります。Issue で提案されていた書き方は次のとおりです。

{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PAT"
      }
    }
  }
}

私自身は Docker 版をこの記事のために動かしてはおらず、ここは Issue の提案とドキュメントのスキーマ(command・args・env)を突き合わせて確認した範囲です。その点はご承知おきください。

観点リモート(serverUrl)ローカル(Docker)
必須のキーserverUrlcommand
前提ネットワーク到達性とトークンDocker が動くこと
設定の短さ短い長い(引数の書き間違いが起きやすい)
向いている場面まず繋いで動作を見たいとき通信先を手元に閉じたいとき

はじめの 1 本は、短いリモート接続をお勧めします。

読み込む前に、設定を検査します

設定ファイルは JSON なので、カンマ 1 つで全体が読めなくなります。私は書き終えたら、起動する前に必ず次のスクリプトを通しています。

#!/usr/bin/env python3
"""mcp_check.py — mcp_config.json を読み込む前に、接続できない書き方を拾う。"""
import json, sys, pathlib
 
LEGACY = {"url": "serverUrl", "httpUrl": "serverUrl"}
 
def check(path):
    problems = []
    try:
        cfg = json.loads(pathlib.Path(path).read_text(encoding="utf-8"))
    except (OSError, json.JSONDecodeError) as e:
        return [f"{path}: JSON として読めません ({e})"]
    servers = cfg.get("mcpServers")
    if not isinstance(servers, dict):
        return [f"{path}: mcpServers オブジェクトがありません"]
    for name, spec in servers.items():
        if spec.get("disabled"):
            continue
        for old, new in LEGACY.items():
            if old in spec:
                problems.append(f"{name}: '{old}' は使えません。'{new}' に直してください")
        if "command" not in spec and "serverUrl" not in spec:
            problems.append(f"{name}: command か serverUrl のどちらかが必要です")
        auth = spec.get("headers", {}).get("Authorization", "")
        if "YOUR_" in auth:
            problems.append(f"{name}: Authorization がプレースホルダのままです")
    return problems
 
if __name__ == "__main__":
    bad = 0
    for p in sys.argv[1:]:
        issues = check(p)
        print(("NG  " if issues else "OK  ") + p)
        for i in issues:
            print("    - " + i)
        bad += bool(issues)
    sys.exit(1 if bad else 0)

このスクリプトは、旧書式のまま写した設定、serverUrl に直した設定、末尾にカンマが残った設定の 3 つに通しました。

NG  before.json
    - github: 'url' は使えません。'serverUrl' に直してください
    - github: command か serverUrl のどちらかが必要です
    - github: Authorization がプレースホルダのままです
OK  after.json
NG  broken.json
    - broken.json: JSON として読めません (Expecting property name enclosed in double quotes: line 1 column 78 (char 77))

旧書式の設定では、url を指摘されるだけでなく「command も serverUrl も無い」とも言われます。エージェントから見れば、接続先が 1 つも書かれていないのと同じだからです。この 2 行目こそ、画面上で「繋がらない」としか見えない状況の正体なのだと思います。

トークンの置き場所と、許可の初期値

headers にトークンを書くことには、ひとつ落とし穴があります。ワークスペースの .agents/mcp_config.json はプロジェクトの中にあるため、うっかりコミットすると鍵まで一緒に載ってしまいます。

私の線引きは次のとおりです。

  • トークンを含む設定は、リポジトリの外にあるグローバルの設定に置きます
  • ワークスペースの設定には、鍵を含まない stdio 系だけを置きます
  • トークンは必要な権限だけを付けた細粒度のものにして、まず読み取りだけで始めます

許可の面では、公式ドキュメントによれば、設定していない MCP ツールは Ask モード、つまり実行前に承認を求められます。許可は mcp(github/*) のようにサーバー単位でも、mcp(github/ツール名) のようにツール単位でも書けます。最初は 1 つも許可せず、承認画面でツール名を見ながら必要なものだけ通していく進め方が安心です。絞り込みの考え方はエージェントに渡すMCPツールを絞る — 最小権限の許可リスト設計で書き残しております。

繋がらないとき、見る順番

症状最初に見る場所
/mcp に github が出ない設定ファイルの置き場所(グローバルかワークスペースか)と JSON の構文
出るが接続できないurl / httpUrl が残っていないか
接続するがツールが使えない承認画面(Ask モード)と、トークンに付いた権限
赤い波線が並ぶエディタ側のスキーマ検査が先行している可能性。MCP の設定に赤い波線が並んだ夜、直す前に確かめたことも参考になります

設定の読み込みそのものが怪しいときは、MCP サーバーが1本も起動しない原因は、起動前の 60 行足らずで特定できますの考え方が、今回のスクリプトの親にあたります。

次にやること

読み取り専用のトークンを 1 本だけ用意し、上のリモート接続の設定を書いて、mcp_check.py に通してください。/mcp で github が接続済みに変わったら、自分のリポジトリの Issue を一覧する依頼を 1 つだけ出してみていただければと思います。

鍵は手元に、設定は検査してから。 この順番だけは、新しいサーバーを足すたびに守るようにしています。

シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

⬡ 連携・プラグイン2026-08-20
MCP サーバーが1本も起動しない原因は、起動前の 60 行足らずで特定できます
設定ファイルの1件の書き間違いで MCP サーバーが揃って起動しなくなる状況を、起動前に検査する小さなスクリプトで潰す手順です。実際に壊した設定へ通した出力と、JSON の同名キーが黙って消える落とし穴まで扱います。
⬡ 連携・プラグイン2026-08-22
設定ファイルを開かずに MCP サーバーを足す — agy mcp サブコマンドで構成を持ち運ぶ
8月20日の Antigravity CLI 1.1.16 で mcp サブコマンドが追加され、MCP サーバーの追加と切り替えを設定ファイルの手編集なしに行えるようになりました。stdio と HTTP それぞれの登録手順、障害の切り分け方、構成を別のマシンへ運ぶスクリプト化までをまとめます。
⬡ 連携・プラグイン2026-10-10
Figma MCP と Stitch MCP、どちらを繋ぐか — 「画面がすでにあるか」で決める線引き
画面をコードに起こすとき、Figma MCP と Stitch MCP のどちらを Antigravity に繋ぐか。判断の軸は「正解の画面がすでにあるか」の一点です。両方を常時つなぐと何が起きるか、切り替えの手順、迷ったときの小さな判定スクリプトまでをまとめます。