ANTIGRAVITY LABEN
記事一覧/連携・プラグイン
連携・プラグイン/2026-04-07上級

Antigravity × MCP 実運用ノート — 死んだサーバーの見分け方と、ツール定義が食う文脈量の実測

Antigravity の settings.json に並ぶ MCP サーバーが、まだ生きているとは限りません。npm レジストリで配布状況を機械判定する監査スクリプト、ツール定義がコンテキストを何トークン消費するかの実測値、SDK 2.x での書き直しまでを、手元で再現できる形でまとめます。

mcp15model-context-protocolintegrations20tools2production59202624

プレミアム記事

設定ファイルを開いたら、半分が「もう配られていない」ものだった

きっかけは、動かなくなった一行でした。

しばらく触っていなかった Antigravity の settings.json を開いて、mcpServers に並んだサーバーを順に起動し直したところ、いくつかが黙って立ち上がらない。ログを追う前に、そもそもそのパッケージがまだ配布されているのかを確かめるべきでした。

npm レジストリに問い合わせた結果は、想像より厳しいものでした。当時よく紹介されていた構成のうち、6本が deprecated、2本はそもそも存在しない。設定ファイルとしては何の警告も出ないまま、ただ起動しないだけです。

MCP は仕様としては安定していますが、リファレンス実装の配布はかなり動いています。ここでは「どのサーバーが良いか」を並べる代わりに、手元の設定が生きているかを機械で判定する方法と、サーバーを増やしたときに何がどれだけ削られるのかを測ったところから始めます。すべて再現できる手順で書きますので、この記事の数値も、ご自身の環境で取り直していただければと思います。

settings.json を機械で監査する

まず、設定ファイルを人間の記憶で判断するのをやめます。mcpServers の各エントリから npm パッケージ名を抜き、レジストリの dist-tagstimedeprecated を見て判定するだけの小さなスクリプトです。

#!/usr/bin/env node
// mcp-audit.mjs — settings.json の mcpServers に並ぶ npm パッケージが
// まだ生きているかを npm レジストリに問い合わせて判定する。
import { readFileSync } from "node:fs";
 
const configPath = process.argv[2];
if (!configPath) {
  console.error("usage: node mcp-audit.mjs <path-to-settings.json>");
  process.exit(2);
}
 
const cfg = JSON.parse(readFileSync(configPath, "utf8"));
const servers = cfg.mcpServers ?? {};
 
// args から npm パッケージ名らしきトークンを拾う(-y や --db-path 等のフラグは除外)
function pickPackage(entry) {
  const args = entry.args ?? [];
  if (!/^(npx|pnpx|bunx)$/.test(entry.command ?? "")) return null;
  return args.find((a) => !a.startsWith("-") && /^(@[\w.-]+\/)?[\w.-]+$/.test(a)) ?? null;
}
 
const STALE_DAYS = 365;
let worst = 0;
 
for (const [name, entry] of Object.entries(servers)) {
  const pkg = pickPackage(entry);
  if (!pkg) { console.log(`-  ${name}: npm 配布ではないため判定を省略`); continue; }
 
  const res = await fetch(`https://registry.npmjs.org/${pkg.replace("/", "%2f")}`);
  if (res.status === 404) { console.log(`❌ ${name}: ${pkg} は npm に存在しません`); worst = Math.max(worst, 2); continue; }
  if (!res.ok) { console.log(`?  ${name}: ${pkg} 問い合わせ失敗 (HTTP ${res.status})`); continue; }
 
  const doc = await res.json();
  const latest = doc["dist-tags"]?.latest;
  const published = doc.time?.[latest];
  const deprecated = doc.versions?.[latest]?.deprecated;
  const ageDays = Math.floor((Date.now() - Date.parse(published)) / 86400000);
 
  if (deprecated) {
    console.log(`❌ ${name}: ${pkg}@${latest} は deprecated — ${String(deprecated).slice(0, 60)}`);
    worst = Math.max(worst, 2);
  } else if (ageDays > STALE_DAYS) {
    console.log(`⚠️  ${name}: ${pkg}@${latest} は最終公開から ${ageDays} 日(${published.slice(0, 10)})`);
    worst = Math.max(worst, 1);
  } else {
    console.log(`✅ ${name}: ${pkg}@${latest}(${published.slice(0, 10)} 公開・${ageDays} 日前)`);
  }
}
 
process.exit(worst);

依存はありません。Node 22 の組み込み fetch だけで動きます。当時よく見かけた構成をそのまま食わせた結果が次の通りです。

❌ github: @modelcontextprotocol/server-github@2025.4.8 は deprecated — Package no longer supported.
❌ postgres: @modelcontextprotocol/server-postgres@0.6.2 は deprecated — Package no longer supported.
❌ sqlite: @modelcontextprotocol/server-sqlite は npm に存在しません
❌ notion: @notionhq/client-mcp は npm に存在しません
✅ filesystem: @modelcontextprotocol/server-filesystem@2026.7.10(2026-07-10 公開・42 日前)
✅ playwright: @playwright/mcp@0.0.79(2026-08-06 公開・15 日前)
-  internal: npm 配布ではないため判定を省略
exit=2

終了コードを 0 / 1 / 2 で返しているのは、CI に置くためです。私は月に一度これを回すようにしました。設定ファイルは書いた瞬間から腐り始めるので、腐ったことに気づく仕組みだけは自動にしておきたいところです。

STALE_DAYS を 365 にしているのは、MCP のリファレンス実装が概ね年単位でリリースされているためです。四半期ごとに更新される社内サーバーを採用する場合は、この閾値を短めに倒したほうが実態に合います。

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

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
settings.json の npm パッケージが deprecated か 404 かを判定する監査スクリプト(実行可能・終了コードで CI に組み込み可)
公式リファレンスサーバー4本のツール定義を cl100k_base で実測 — 37ツールで9,426トークンという「並べるだけで消える文脈量」
SDK 2.x(@modelcontextprotocol/server)での書き直しと、handler 内で throw したときに AI が実際に読む文字列の検証結果
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

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

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

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

関連記事

連携・プラグイン2026-04-10
Antigravity × MCP 統合ガイド — Arcade.dev 7,500+ツール・API 活用術
Antigravity と MCP(Model Context Protocol)を統合し、Arcade.dev のエコシステム(7,500+ツール・API)を AI エージェント開発に活かすための完全ガイド。
連携・プラグイン2026-05-06
Antigravity × Stripe カスタムMCPサーバー実装ガイド — AIエージェントが課金処理を自律実行する本番設計
Stripe課金処理をAntigravityのAIエージェントに委ねるカスタムMCPサーバーを実装する。サブスクリプション管理・Webhook・マルチテナント対応まで、TypeScriptで本番品質のMCPサーバーを構築する完全実装ガイド。
連携・プラグイン2026-04-02
Antigravity で Slack Bot を開発する入門ガイド — Bolt.js × MCP 連携まで
AntigravityでSlack Botを開発する方法をゼロから解説。Bolt.jsのセットアップ、スラッシュコマンド・イベント処理、MCP連携による高度なAI応答まで、実践的なコード例とともに丁寧に説明します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →