◀ ガイドTOP MCP連携ガイド
対象中級者
達成目標MCP設定と外部サービス接続
前提知識Ch.1-4完了
所要時間20分

MCP連携ガイド

Model Context Protocol(MCP)でデータベース、クラウドサービス、内部ツールとAntigravityを直接接続するガイド。

MCPとは

Model Context Protocol(MCP)は、AIエージェントが外部のデータソースやツールに直接アクセスするためのオープンプロトコルです。従来は開発者が手動でデータをコピー&ペーストしてAIに渡す必要がありましたが、MCPを使えばエージェントが自律的にデータベースのスキーマを取得したり、APIを呼び出したりできます。

MCPの基本構造は以下の3要素で構成されます。

📝 Note

MCPはAnthropicが2024年末に公開したオープン標準であり、Google AntigravityだけでなくClaude Code、Cursor、VS Codeなど多くのAIツールがサポートしています。一度設定すれば、どのホストからでも同じMCPサーバーを利用できます。

MCPの最大の利点は、手動コピペの排除です。例えばデータベースのテーブル構造を確認したい場合、従来はSQL Clientでスキーマを取得し、その結果をプロンプトに貼り付けていました。MCP経由であれば、エージェントが直接データベースに接続し、必要な情報を自分で取得します。

MCPアーキテクチャ概要
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ MCP Host │────▶│ MCP Server │────▶│ External │ │ (Antigravity)│◀────│ (ローカル/ │◀────│ Service │ │ │ │ リモート) │ │ (DB/API/CLI) │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ JSON-RPC 2.0 │ Native Protocol │ │ (stdio/HTTP) │ (SQL/REST/gRPC) │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────┐ │ Data Flow: │ │ 1. ユーザー: 「テーブル構造を確認して」 │ │ 2. Host → Server: tools/call (query_schema) │ │ 3. Server → DB: SELECT * FROM information_schema │ │ 4. DB → Server → Host: スキーマ情報を返却 │ │ 5. エージェント: スキーマに基づいたコード生成 │ └─────────────────────────────────────────────────────────┘

MCP設定方法

AntigravityでMCPサーバーを設定するには、主に3つの方法があります。

MCP Storeからのワンクリック導入

AntigravityにはMCP Storeが組み込まれており、Firebase、Power BI、Slack、GitHubなどの人気サービスはワンクリックで導入できます。

  1. MCP Storeを開く
    Agent panelの「...」メニュー → 「Browse MCP Store」を選択します。
  2. サービスを検索・インストール
    使いたいサービス(例: Firebase, PostgreSQL)を検索し、「Install」をクリックします。必要な認証情報の入力画面が自動表示されます。
✅ Tip

MCP Storeで導入したサーバーは mcp_config.json に自動追記されます。手動で設定を微調整したい場合は、ファイルを直接編集してください。

GUIからの手動設定

  1. Agent panelを開く
    Antigravityのメイン画面でAgent panelを展開し、右上の「...」メニューをクリックします。
  2. Manage MCP Serversを選択
    ドロップダウンから「Manage MCP Servers」を選択すると、設定画面が開きます。
  3. サーバーを追加
    「Add Server」をクリックし、サーバー名、コマンド、引数を入力します。NPXで起動するサーバーの場合は、コマンドに npx、引数にパッケージ名を指定します。
  4. 接続を確認
    追加後、サーバーのステータスが「Connected」になることを確認します。ツール一覧が表示されれば正常です。

設定ファイルからの設定

プロジェクトルートに .mcp.json ファイルを作成して、MCPサーバーを宣言的に管理できます。チーム共有やバージョン管理に適した方法です。

.mcp.json
{ "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://user:pass@localhost:5432/mydb" ] }, "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/directory" ] }, "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}" } } } }
✅ Tip

.mcp.json をGitにコミットする場合は、パスワードや認証情報を直接記述せず、環境変数(${ENV_VAR} 形式)で参照してください。.env ファイルと組み合わせるのが安全です。

データベース接続

MCPの最も一般的なユースケースがデータベース接続です。エージェントがテーブルスキーマを自動取得し、SQLクエリの生成・実行まで行えます。

PostgreSQL

公式のPostgreSQL MCPサーバーを使用します。接続後、エージェントは自動的に全テーブルのスキーマ、カラム型、インデックス情報を取得できます。

.mcp.json(PostgreSQL)
{ "mcpServers": { "postgres": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-postgres", "postgresql://dev_user:dev_pass@localhost:5432/app_dev" ] } } }

接続後にエージェントに使えるツール:

MySQL

.mcp.json(MySQL)
{ "mcpServers": { "mysql": { "command": "npx", "args": [ "-y", "@benborla29/mcp-server-mysql" ], "env": { "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_USER": "dev_user", "MYSQL_PASSWORD": "${MYSQL_DEV_PASSWORD}", "MYSQL_DATABASE": "app_dev" } } } }

SQLite

ローカル開発やプロトタイピングに最適なSQLite接続です。ファイルパスを指定するだけで即座に利用開始できます。

.mcp.json(SQLite)
{ "mcpServers": { "sqlite": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-sqlite", "./data/app.db" ] } } }
⚠️ Warning

データベースMCPサーバーはデフォルトで読み書き両方の権限を持ちます。開発環境以外では必ず読み取り専用ユーザーで接続してください。詳細は「セキュリティ考慮」セクションを参照してください。

クラウドサービス連携

MCPを通じて主要なクラウドサービスと連携し、エージェントがクラウドリソースを直接操作できます。

Firebase / Firestore

Firebase MCPサーバーを使うと、Firestoreのドキュメント操作、Authentication情報の確認、Cloud Functionsのデプロイ状況確認などが可能です。

.mcp.json(Firebase)
{ "mcpServers": { "firebase": { "command": "npx", "args": [ "-y", "firebase-mcp-server", "--project", "my-project-id" ], "env": { "GOOGLE_APPLICATION_CREDENTIALS": "${FIREBASE_SERVICE_ACCOUNT_PATH}" } } } }

Google Cloud Platform

GCPのMCPサーバーはCloud Storage、BigQuery、Cloud Run等の主要サービスにアクセスできます。サービスアカウントのJSON鍵ファイルで認証します。

.mcp.json(GCP)
{ "mcpServers": { "gcp": { "command": "npx", "args": [ "-y", "@anthropic/mcp-server-gcp", "--project", "my-gcp-project" ], "env": { "GOOGLE_APPLICATION_CREDENTIALS": "${GCP_KEY_PATH}" } } } }

利用可能な主要ツール:

AWS

AWSのMCPサーバーはS3、DynamoDB、Lambda、CloudWatch等と連携します。IAMロールまたはアクセスキーで認証します。

.mcp.json(AWS)
{ "mcpServers": { "aws": { "command": "npx", "args": [ "-y", "@anthropic/mcp-server-aws", "--region", "ap-northeast-1" ], "env": { "AWS_ACCESS_KEY_ID": "${AWS_ACCESS_KEY}", "AWS_SECRET_ACCESS_KEY": "${AWS_SECRET_KEY}" } } } }
📝 Note

クラウドサービスのMCPサーバーはコミュニティ製も多く、品質にばらつきがあります。公式またはAnthropicが認定したサーバーを優先的に選択し、事前にGitHubリポジトリのスター数やメンテナンス状況を確認してください。

カスタムMCPサーバー

社内ツールや独自APIに対応するMCPサーバーを自分で構築できます。MCP SDKを使えば、数十行のコードでサーバーを作成可能です。

TypeScriptでの構築例

以下は社内のプロジェクト管理ツールにアクセスするカスタムMCPサーバーの実装例です。

src/mcp-server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; const server = new McpServer({ name: "internal-project-api", version: "1.0.0" }); // ツールの定義: プロジェクト一覧取得 server.tool( "list_projects", "社内プロジェクト一覧を取得する", { status: z.enum(["active", "archived", "all"]).optional() }, async ({ status }) => { const res = await fetch( `https://internal-api.company.com/projects?status=${status || "active"}`, { headers: { "Authorization": `Bearer ${process.env.INTERNAL_API_TOKEN}` } } ); const data = await res.json(); return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; } ); // ツールの定義: タスク作成 server.tool( "create_task", "プロジェクトに新しいタスクを作成する", { project_id: z.string(), title: z.string(), description: z.string().optional(), assignee: z.string().optional(), priority: z.enum(["low", "medium", "high", "critical"]).optional() }, async ({ project_id, title, description, assignee, priority }) => { const res = await fetch( `https://internal-api.company.com/projects/${project_id}/tasks`, { method: "POST", headers: { "Authorization": `Bearer ${process.env.INTERNAL_API_TOKEN}`, "Content-Type": "application/json" }, body: JSON.stringify({ title, description, assignee, priority }) } ); const data = await res.json(); return { content: [{ type: "text", text: `Task created: ${data.id}` }] }; } ); // サーバー起動 const transport = new StdioServerTransport(); await server.connect(transport);

サーバーの登録

ビルド後、.mcp.json に追加します。

.mcp.json(カスタムサーバー)
{ "mcpServers": { "internal-projects": { "command": "node", "args": ["./mcp-servers/dist/mcp-server.js"], "env": { "INTERNAL_API_TOKEN": "${INTERNAL_API_TOKEN}" } } } }

Pythonでの構築

Python SDKも利用可能です。FastMCPを使えばデコレータベースでシンプルに定義できます。

mcp_server.py
from mcp.server.fastmcp import FastMCP mcp = FastMCP("internal-inventory") @mcp.tool() def search_inventory(query: str, category: str = "all") -> str: """社内在庫システムで商品を検索する""" # 社内APIへのリクエスト results = internal_api.search(query=query, category=category) return json.dumps(results, ensure_ascii=False, indent=2) @mcp.tool() def get_stock_level(product_id: str) -> str: """指定商品の在庫レベルを取得する""" stock = internal_api.get_stock(product_id) return f"Product {product_id}: {stock['quantity']} units ({stock['status']})" mcp.run()
✅ Tip

カスタムMCPサーバーのツール説明文は、AIエージェントがツール選択の判断材料にします。具体的かつ正確な説明を書くことで、エージェントが適切なタイミングでツールを呼び出せるようになります。

根拠のあるコード生成

MCPの最も価値あるユースケースは、一次情報(公式ドキュメント、実際のDBスキーマ)を直接参照した根拠のあるコード生成です。

従来のAIコーディングでは、学習データに基づく「推測」でコードを生成していました。MCP経由で実際のデータソースを参照させることで、以下が実現できます。

✅ Tip

「このテーブルのCRUD APIを作って」と指示する前に、MCPでDBに接続しておくと、エージェントが実際のスキーマを参照して正確な型定義を生成します。推測に基づくコードと比べて、修正の手間が大幅に減ります。

セキュリティ考慮

MCPは非常に強力な機能ですが、外部リソースへのアクセスを伴うため、セキュリティには細心の注意が必要です。

読み取り専用アクセスの原則

本番環境のデータベースやクラウドサービスには、必ず読み取り専用の認証情報で接続してください。

PostgreSQL 読み取り専用ユーザーの作成
-- 読み取り専用ユーザーの作成 CREATE USER mcp_readonly WITH PASSWORD 'secure_password'; GRANT CONNECT ON DATABASE app_prod TO mcp_readonly; GRANT USAGE ON SCHEMA public TO mcp_readonly; GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO mcp_readonly;

環境分離

環境 推奨設定 リスクレベル
ローカル開発 読み書き可(テストデータ)
ステージング 読み取り専用
本番 読み取り専用 + 行レベルセキュリティ
本番(書き込み) 原則禁止。使う場合はApproval必須 最高

認証情報の管理

ネットワーク制限

MCPサーバーが外部ネットワークにアクセスする場合、ファイアウォールルールやVPC設定で接続先を制限することを推奨します。特に社内APIに接続するカスタムMCPサーバーは、許可されたIPアドレスからのみアクセスできるようにしてください。

SSHトンネリングによるリモートDB接続

リモートのデータベースに安全に接続するには、SSHトンネルを使用します。MCPサーバーはローカルポートに接続し、SSH経由でリモートDBに到達します。

SSHトンネルの作成
# ローカルの5433ポートをリモートDBの5432ポートに転送 ssh -L 5433:db-internal.example.com:5432 bastion@bastion.example.com -N -f # .mcp.json ではローカルポートを指定 # "connectionString": "postgresql://mcp_readonly:pass@localhost:5433/app_prod"

VPC内サービスへの接続

クラウド環境のVPC内にあるサービスへは、プロキシ経由で接続します。Google Cloud SQL Proxy、AWS RDS Proxyなどを利用することで、VPN不要で安全な接続が可能です。

Cloud SQL Proxy の例
# Cloud SQL Proxyを起動(バックグラウンド) cloud-sql-proxy --port 5433 my-project:asia-northeast1:my-instance & # MCPサーバーはlocalhost:5433に接続 # IAM認証により、パスワード管理が不要になる

ファイアウォール推奨設定

MCPサーバーのアウトバウンド通信を制限し、意図しない外部通信を防止します。

⚠️ Warning

MCPサーバーはプロンプトインジェクションの経路になり得ます。信頼できないデータソースからの応答をそのまま使用しないよう注意してください。特に、ユーザー入力が含まれるデータベースの値をエージェントが処理する際は、出力のサニタイズが重要です。

✅ Tip

MCP接続のトラブルシューティングには、Antigravityの「MCP Inspector」が便利です。接続状態、利用可能なツール一覧、各ツールの入出力ログをリアルタイムで確認できます。問題が発生した場合は、まずInspectorでサーバーの応答を確認しましょう。