Claude Media
Neon MCPサーバーで一時ブランチのマイグレーション検証を回す

Neon MCPサーバーで一時ブランチのマイグレーション検証を回す

Neon MCPサーバーで、一時ブランチにマイグレーションを検証してからメインへ適用する手順と、スキーマ比較・スロークエリ分析、読み取り専用モードの絞り込みをまとめます。

Neon MCPサーバーは、サーバーレスPostgres「Neon」のAPIをMCPツールとして公開し、自然文でプロジェクト・ブランチ・SQLを操作できるようにするサーバーです。MCP経由でDBに接続する一般的な手順はMCPからデータベースに接続する方法にあります。PostgreSQL専用ツールの比較はPostgreSQL MCPサーバーの使い方です。この記事はNeonのサーバーレス基盤に固有の機能に絞ります。一時ブランチでのマイグレーション検証、スキーマ比較、スロークエリ分析、そしてアクセス範囲の絞り込みです。

Neon MCPサーバーのセットアップ方法

Neon MCPサーバーはhttps://mcp.neon.tech/mcpでホストされたリモートサーバーで、Streamable HTTPで接続します。ローカルにインストールするstdio版パッケージ(@neondatabase/mcp-server-neon)は非推奨で、公式ドキュメントはホスト版への移行を求めています。stdioしか対応しないクライアントでは、mcp-remoteパッケージでホスト版へブリッジします。

セットアップ手段は次の4通りです。

手段コマンド向く場面
CLIによる対話設定コマンドnpx neon@latest mcp向く場面書き込み先・対象エージェント・認証方法を選びながら設定したい
プラグインコマンドnpx neon@latest plugins向く場面Claude Codeなどプラグイン対応のエージェントで、MCPサーバーとスキルをまとめて入れたい
OAuth認証コマンドclaude mcp add --transport http neon https://mcp.neon.tech/mcp向く場面APIキーを管理したくない個人利用
APIキー認証コマンド上記コマンドに--headerでトークンを付与向く場面組織のプロジェクトに接続したい、OAuthが使えないリモートエージェント

npx neon@latest initを使うと、MCPサーバーに加えてエージェント用スキルとNeonプロジェクトのリンクまで一括で済みます。Neonのガイドはこの方法を推奨の入口にしています。

Claude Codeで手動追加する場合のコマンドは次の形です。

claude mcp add --transport http neon https://mcp.neon.tech/mcp
claude

claudeを起動するとOAuth認証フローが走り、ブラウザでNeonアカウントへのアクセスを許可します。セッション内で/mcpを実行しても同じ認証を始められます。APIキーで認証するなら、ヘッダーを付けます。

claude mcp add --transport http neon https://mcp.neon.tech/mcp \
  --header "Authorization: Bearer <YOUR_NEON_API_KEY>"

v2.1.289のclaude mcp add --helpでは、--transportの選択肢はstdio・sse・httpで、省略時はstdioになります。--transport httpを付け忘れるとURLがコマンド名として扱われます。--scopeの既定はlocalで、チームで共有する設定ならprojectを選びます。

Claude.aiやClaude Desktopから使う場合、Neonは公式のClaude connectorとして登録されています。Settings → Connectors(画面によってはCustomize → Connectors)を開き、Browse connectorsでNeonを選びます。独自のconnector URLを入力せずに追加できます。

組織のプロジェクトを操作するときの認証の分かれ目

OAuth認証は、既定では個人アカウント配下のプロジェクトだけを対象にします。組織が持つプロジェクトの扱いは、Neonの2つの資料で説明が少し違います。Claude Code向けガイドは「組織のアカウントに接続するにはAPIキーで認証する」と書いています。GitHubのREADMEは、OAuthのままプロンプトにorg_idかproject_idを明示する方法も挙げています。

状況選ぶ認証
個人アカウントのプロジェクトだけ触る選ぶ認証OAuth
組織のプロジェクトを少数だけ触る選ぶ認証OAuth + プロンプトでorg_idかproject_idを指定
特定の組織に常に限定したい選ぶ認証その組織のAPIキー(READMEによると、組織のAPIキーでその組織配下のプロジェクトに限定できる)
ブラウザを開けないリモートエージェント選ぶ認証APIキー

一時ブランチでマイグレーションを検証してからメインへ適用する

Neon MCPサーバーの独自価値は、Postgresのブランチ機能を前提にした2段階のマイグレーションフローです。カラムを1つ足すだけの変更でも、いきなり本番相当のブランチへは適用しません。

手順

マイグレーションが適用されるまで

  1. 1

    prepare_database_migration

    渡したマイグレーションを一時ブランチ上に作成し、そこへ適用します。ツールの戻り値は、一時ブランチでテストするようモデルに促します。

  2. 2

    一時ブランチで run_sql

    モデルがrun_sqlで結果を検証します。ここで失敗してもメインブランチには届いていません。

  3. 3

    complete_database_migration

    メインブランチへ変更をマージし、一時ブランチを削除します。

自然文の指示だけでこの流れが動きます。Neonのガイドの例では、Claude Codeに「created_atカラムを追加して」と頼みます。するとprepare_database_migrationが呼ばれ、br-silent-cherry-a1eqrl6iのような名前の一時ブランチができ、「本番ブランチへコミットしますか」と尋ねられます。「やって」と返すとcomplete_database_migrationが走り、一時ブランチは片付けられます。

人間の判断を挟めるのは、検証後に承認を求める1点です。一時ブランチを見ずに続けて指示すれば、1回の依頼で完結します。ただ、run_sqlで一時ブランチ側の状態を見てから進めてこそ、このフローの意味が出ます。ブランチを持たない一般的なPostgres MCPサーバーとの最大の違いはここで、失敗がメインブランチに触れる前に見つかります。

似た名前のreset_from_parentは別の用途のツールです。指定したブランチを親ブランチの現在のHEADへ巻き戻し、分岐後の書き込みを破棄します。子ブランチを持つブランチをリセットするときは、preserve_under_nameで退避先の名前を指定します。

スキーマ比較とスロークエリ分析でパフォーマンスを診断する

マイグレーションの前後でスキーマがどう変わったかを見るツールがcompare_database_schemaです。database_nameは必須で、比較対象のbase_branch_idを省略すると親ブランチとの差分になります。過去時点のスキーマと比べたいときは、lsnやtimestampをオプションで渡します。

パフォーマンス診断の中心はinspect_databaseです。15種類の読み取り専用診断を、ひとつのツールで実行できます。対象は、テーブル・インデックスのサイズ、未使用インデックス、シーケンシャルスキャン、実行中クエリとロック、重いクエリと頻出クエリ、キャッシュヒット率、autovacuumとbloat、レプリケーション状態です。30秒を超えて動き続けているクエリはstalled-queriesチェックが拾います。CLIのneon inspect dbと同じ内容で、checkパラメータにtable-sizesやunused-indexesを渡すと個別に走ります。database_nameを省くとブランチ上の全データベースが対象です。

実行は読み取り専用トランザクション内で行われるため、読み取り専用モードでも使えます。READMEによると、4つのチェックはpg_stat_statementsかneon拡張を必要とします。未導入ならツールがその旨を伝え、CREATE EXTENSIONを提案する前に確認を挟みます。

遅いクエリだけを見たいならlist_slow_queriesで、こちらもpg_stat_statementsが前提です。実行計画はexplain_sql_statementで見ます。インデックス追加のような変更を伴うチューニングには、マイグレーションと同じ2段階のprepare_query_tuningとcomplete_query_tuningがあります。一時ブランチで最適化を試し、適用か破棄かを選んでから本ブランチへ反映します。

読み取り専用モード・プロジェクト範囲・カテゴリでアクセスを絞る

アクセス範囲はMCPサーバーのURLにクエリパラメータを付けて制御します。

パラメータ効果
readonly=true効果ブランチ作成・マイグレーション実行・認証設定変更などの書き込み系ツールを無効化する
projectId=<id>効果操作対象を単一プロジェクトに限定し、プロジェクト横断の検索・ナビゲーションを無効化する
category=<name>効果カテゴリ単位で有効なツールを絞り込む(繰り返し指定可)

Claude Codeで付けるときは、URLを引用符で囲みます。&をそのまま書くとシェルが解釈してしまうためです。

claude mcp add --transport http neon \
  "https://mcp.neon.tech/mcp?readonly=true&projectId=<your-project-id>"

絞り込みの効果は、認証方式によって反映のされ方が変わります。READMEの説明を並べると次のとおりです。

くらべる

URLパラメータの反映のされ方

リクエストごとに反映

APIキー認証

OAuthのスコープ交換がないので、URLを変えれば次のリクエストから変わります。再認証は要りません。

認可時に固定

OAuth認証

URLのreadonly・projectId・categoryは、認可画面で承認する権限として固定されます。発行済みのトークンはURLを変えても広がらず、変えたいときは認可し直します。パラメータなしのhttps://mcp.neon.tech/mcpに接続すると、認可画面で「Allow writes」を外す、プロジェクトを1つ選ぶ、カテゴリを絞る、といった設定ができます。

URLパラメータの効き方は、/api/list-toolsで実際に確かめられます。認証なしで呼べるエンドポイントで、設定ごとに有効なツールの一覧がJSONで返ります。

curl -s "https://mcp.neon.tech/api/list-tools?readonly=true&category=querying"

同じエンドポイントが返すツール数を、設定を変えて並べると絞り込みの粒度が分かります。

数字

/api/list-tools が返すツール数

  • フィルタなし

    114

    全カテゴリ・書き込み可

  • readonly=true

    51

    書き込み系を除外

  • readonly + projectId

    46

    プロジェクト横断系の5本が消える

  • category=querying + schema

    15

    書き込み可のまま

Neonがツールを追加・変更すれば数は変わります

categoryで絞っても、search・fetch・send_feedbackの3本はカテゴリに属さないため残ります。projectIdを付けると、プロジェクトをまたぐlist_projects・list_organizations・list_regions・search・fetchが消えます。読み取り専用でもrun_sqlは残りますが、読み取りクエリだけが通る扱いです。マイグレーションとチューニングのprepare_系・complete_系の4本は書き込み系なので、読み取り専用の一覧には出ません。

読み取り専用モードで取得できないのはget_connection_stringも同じです。接続文字列には特権ロールのパスワードが含まれるため、意図的に外されています。必要なときはNeon Consoleから直接コピーします。

12カテゴリの中身と、地域で変わるツール

categoryで指定できるカテゴリは、公式ドキュメントでは12あります。マイグレーションとスキーマ以外にも、用途の広いものが揃っています。

カテゴリ主な内容
projects / branches / endpoints主な内容プロジェクト・ブランチ・ロール・データベース・コンピュートの管理
snapshots主な内容スナップショットの作成・復元・スケジュール
schema / querying主な内容スキーマの参照と比較、SQL実行、一時ブランチでのスキーマ変更、診断
neon_auth主な内容マネージドのBetter Authのプロビジョニング、OAuthプロバイダー・信頼済みドメイン・ユーザーの管理
data_api主な内容ブランチ上のデータベースでData APIを有効化・更新・無効化
docs主な内容Neon公式ドキュメントの索引取得とMarkdown取得(OAuth不要)
functions / storage主な内容Neon Functionsのデプロイ・更新・削除、オブジェクトストレージのバケットとオブジェクトの管理
observability主な内容Functionsとストレージのログ検索、AI Gatewayの可用性の参照

docsカテゴリは、マイグレーション中に構文を調べたいときにブラウザを開かずに済みます。

observabilityはNeon Platform Betaに属し、対応リージョンの書き方が資料によって違います。公式ドキュメントのページは4つを挙げます。aws-us-east-2・aws-us-east-1・aws-eu-central-1・aws-ap-southeast-1です。READMEはaws-us-east-2のみとしています。ログにアクセスできないブランチでログ系ツールを呼ぶと、telemetry_not_enabledという理由付きの404が返ります。対応リージョンのプロジェクトかどうかを、まず確かめます。

利用状況の送信とネットワーク側の前提

READMEのTelemetry節によると、ホスト版のNeon MCPサーバーはプロダクト分析とエラー報告を収集します。認証済みアカウントで接続すると、Neonアカウントのid・名前・メールアドレスを含むidentifyイベントが送られます。ツール呼び出しごとのイベントに入るのは、ツール名・認証方式・クライアントで、ツールの引数やクエリ結果は含まれません。送信先はtrack.neon.techです。予期しないサーバーエラーは、スタックトレースとリクエストの文脈つきでSentryに報告されます。

READMEが挙げる無効化の手段は、自分でサーバーを動かす場合の環境変数NEON_MCP_DISABLE_ANALYTICS=1だけです。この変数でもSentryへのエラー報告は止まりません。社内の持ち出し規則で分析の送信が問題になる環境かどうかを、接続前に見ておく項目になります。

IP Allowを有効にしているNeonプロジェクトでは、ホスト版MCPサーバーの接続元IP(34.192.103.46と23.22.233.166)を許可リストへ追加します。追加していないと、MCPサーバーからデータベースへ接続できません。

よくあるつまずき

  • ローカルstdio版を使い続けている: @neondatabase/mcp-server-neonは非推奨です。新しく設定するならホスト版URLを使い、既存のstdio設定はmcp-remote経由のホスト版接続に切り替えます
  • SSEエンドポイントに接続している: https://mcp.neon.tech/sseは2026年10月1日以降に使えなくなる扱いで、廃止後は410 Goneを返します。/mcpのStreamable HTTPへ切り替えます。SSEはAPIキー認証に対応していません
  • claude mcp addでURLがコマンドとして扱われる: --transport httpが抜けています。省略時の既定はstdioです
  • &を含むURLを追加すると途中で切れる: シェルが&以降を別のコマンドとして解釈しています。URL全体を引用符で囲みます
  • 組織のプロジェクトが一覧に出ない: OAuthの既定は個人アカウント配下だけです。プロンプトにorg_idかproject_idを明示するか、APIキー認証に切り替えます
  • list_slow_queriesや一部のinspect_databaseチェックが拡張未導入の旨を返す: pg_stat_statements(またはneon)拡張が前提です。先に拡張を有効にします

まとめ

Neon MCPサーバーを使う価値は、一時ブランチ経由のマイグレーション検証にあります。ただし公式が本番接続を推奨していないため、接続先は開発用のプロジェクトにして、readonly=trueやprojectIdで書き込みと範囲を絞ってから始める構成が堅実です。claude mcp addの構文全般はClaude Code MCP設定ガイドにあります。

この記事を共有:XはてブLinkedIn