まえがき
前回の記事でWSL2+AntigravityVer2(AGv2)で泥沼にハマった。
とはいえ、いつまでもVer1で塩漬けするわけにもいかないので、古いMacを引っ張り出してきて、AntigravityVer2の検証。その際に気づいたメモ。
TL/DR;
- AntigravityのV2アップデートで
.mcp.jsonが勝手に/mcpから/sseに書き換わる。 - これはAGv2が、MCP(Model Context Protocol)の標準仕様に沿った HTTP+SSEトランスポート を前提に、設定フォーマットをSSEベースに揃えた影響。
- AGv2は旧来の
serverURL(HTTP POSTベース) 記法をやめ、リモート接続設定を SSEトランスポート前提のtype: "sse"/url記法に一本化 するという内部アップデートを行った。(らしい。) - そのため、.mcp.json に古い serverURL の記述を見つけると、自身が対応している SSE の形式に強制的に書き換えてしまうらしい。
- 心臓に悪いよ。
- Googleさん、毎年こういうドラスティックな変更をしれっとやりすぎ。
はじめに
-
Antigravity(GeminiベースのAIエージェント/IDE環境)をV2にアップデートした際、ワークスペース直下にある設定ファイル
.mcp.jsonが、意図せず勝手に書き換わる(/mcpから/sseになる)事象が発生。 -
先人のMCPサーバのリポジトリをForkしているので
Upstreamリポジトリの更新か?と思い、慌ててgit fetch upstreamするも差分なし。 -
AGv2を問い詰めたところ、MCP(Model Context Protocol)のトランスポート仕様(HTTP+SSE周り)の更新に伴い、クライアント側(AGv2)が勝手に自動Normalizer(正規化)していた。
以下、この事象の具体的な差分と、技術的な背景(なぜ書き換わるのか、元に戻せるのか、Claudeなどの他ツールへの影響は?等)についてまとめ。
※AGv2の回答をベースに自分の解釈を入れています。
発生した事象
Antigravity V2を導入後、プロジェクト(ワークスペース)を開くと、特段の指示をしていないにもかかわらず .mcp.json に以下の差分が発生。
この時点で冷や汗が出るのである。
"pinescript-docs": {
- "serverURL": "https://pinescript-mcp.fly.dev/mcp"
+ "type": "sse",
+ "url": "https://pinescript-mcp.fly.dev/sse"
}
- 通信先のURL末尾が
/mcpから/sseに変更された - 設定キーが
serverURLからtype: "sse"およびurlに変更された
原因と技術的背景
1. 通信方式(トランスポート層)の移行
実は、/mcp と /sse は単なるURLの違いではなく、上で使われている通信のトランスポート層の前提がけっこう違います。
| 項目 | 旧方式 (/mcp / serverURL) |
新方式 (/sse) |
|---|---|---|
| プロトコル | HTTP (JSON-RPC over HTTP、非ストリーミング想定) | HTTP + SSE (Server-Sent Events を用いたストリーミングトランスポート) |
| 通信形態 | リクエストごとにHTTPコネクションを張り直す、レスポンスも1ショット | サーバ→クライアントはSSEでストリーム、クライアント→サーバはHTTP POSTでメッセージ送信 |
| 位置づけ | 初期開発時の暫定的なカスタム実装 | MCP公式仕様に準拠した標準トランスポート(Streamable HTTP / 旧SSE系) |
2. Antigravity V2の「SSE設定への一本化」仕様
Antigravity V2では、通信の高速化・安定化および公式プロトコル標準への準拠のため、**MCPサーバとのリモート接続設定を「HTTP+SSEトランスポート前提のsse形式に統一」**するように、クライアント側の通信エンジンがアップデートされたとのこと。
そのため、古い serverURL 形式の設定を検知すると、**自動的に現在の仕様に適合する sse 形式へと書き換える(自動正規化)**処理が走るらしい。
※一言、言ってくれ。
よくある疑問と検証結果(AGv2との対話)
Q1. まだ /mcp(旧エンドポイント)でも接続自体はできるのでは?
A. サーバー側はまだ受け付けていますが、Antigravity(V2)クライアント側が受け付けません。
接続先サーバー(pinescript-mcp.fly.dev)自体は、互換性維持のために現在も /mcp (POST) と /sse (SSE) の両方のエンドポイントを開放しています。
そのため、サーバーとしては旧方式でも接続可能ですが、Antigravity V2クライアントが serverURL 形式の設定を処理できないため、手動で書き戻しても起動時に再度自動で sse に書き換えられます。
Q2. Claude Desktopなど、他のツールへの影響は?
A. 影響はありません。
このワークスペースにある .mcp.json は Antigravity専用の設定ファイル です。
Claude Desktopなどの他のMCPクライアントは、通常システムグローバルな設定ファイル(Macの場合は ~/Library/Application Support/Claude/claude_desktop_config.json など)を参照して動作しているため、本プロジェクトの .mcp.json が書き換わってもClaude側の接続には干渉しません。
(※Claude側は、/mcp のままでも /sse に設定していても、どちらでも問題なく動作します)
まとめ / 対処法
この自動書き換えは、**「接続先のサーバーやGit(upstream)に更新が入ったわけではなく、Antigravity(V2)のクライアント設定が公式のSSEトランスポート仕様に一本化されたため、設定ファイルが自動コンバートされた」**というのが真相。
ストリーミング前提のトランスポートになったことで、接続の張り直しオーバーヘッドが減り、長めのレスポンスでは体感レスポンスが良くなるケースが多いはずです。
そのため、特別な事情がなければ この変更はそのままコミット(許容)してしまって問題ない と考えています。
とAGは言っているが…本当か??
もしGitの差分にこの自動生成ファイルが出るのが煩わしい場合は、.gitignore に追加して管理対象から外すことをお勧めします。
# Antigravity local config
.mcp.json