Neon

公式

NeonのサーバーレスPostgresプラットフォームと連携する

Neon MCPで何ができますか?

  • プロジェクトとブランチの作成 — 新しい Postgres データベースや feature-x という名前のブランチを作成するようアシスタントに依頼し、コンピュートの準備が整うまで待ちます。
  • SQL とトランザクションの実行 — 選択した Neon データベースに対して、単一のクエリまたは一連のステートメントを1つのトランザクション内で実行します。
  • スキーマとテーブルの確認 — データベース内のテーブルを一覧表示したり、テーブルの列と制約を確認したり、ブランチ間でスキーマを比較したりします。
  • マイグレーションの安全なテスト — 一時ブランチでスキーマ変更を準備し、その後、メインブランチにマイグレーションを適用します。
  • 遅いクエリの最適化 — 遅いクエリを見つけ、実行計画を取得し、一時ブランチでインデックスなどの最適化案をテストします。
  • プロジェクトの概要確認 — Neon のプロジェクトと組織を一覧表示したり、プロジェクトやブランチを横断して検索し、ID とコンソールへのリンクを見つけたりします。

ホスト型 MCP サーバー

npx add-mcp 'https://mcp.neon.tech/mcp'

Claude Code、Codex、Cursor などにインストールできます

ドキュメント

Neon Logo fallback

Neon MCP Server

Install MCP Server in Cursor Add to Kiro

Neon MCP Server は、Neon 上の Lakebase Postgres データベースを自然言語で操作できるオープンソースツールです。

License: MIT

Model Context Protocol(MCP)は、大規模言語モデル(LLM)と外部システム間のコンテキストを管理するために設計された標準化プロトコルです。このリポジトリでは、Neon のリモート MCP Server を提供しています。

Neon の MCP server は、自然言語によるリクエストと Neon API の間をつなぐ役割を果たします。MCP を基盤として、リクエストを必要な API 呼び出しに変換するため、プロジェクトやブランチの作成、クエリの実行、データベースのマイグレーションなどのタスクをシームレスに管理できます。

Neon MCP server の主な機能は次のとおりです。

  • 自然言語での操作: 直感的な会話形式のコマンドで Neon データベースを管理できます。
  • データベース管理の簡素化: SQL を記述したり、Neon API を直接操作したりせずに、複雑な操作を実行できます。
  • 非開発者にも使いやすい: 技術的な背景がさまざまなユーザーが Neon データベースを操作できるようにします。
  • データベースのマイグレーションをサポート: Neon のブランチ機能を活用し、自然言語でデータベーススキーマの変更を開始できます。

たとえば、Claude Code や任意の MCP Client で、自然言語を使って Neon に対して次のような操作を実行できます。

  • Let's create a new Postgres database, and call it "my-database". Let's then create a table called users with the following columns: id, name, email, and password.
  • I want to run a migration on my project called "my-project" that alters the users table to add a new column called "created_at".
  • Can you give me a summary of all of my Neon projects and what data is in each one?

[!WARNING]
Neon MCP Server のセキュリティに関する注意事項
Neon MCP Server は、自然言語によるリクエストを通じて強力なデータベース管理機能を提供します。実行する前に、LLM が要求した操作を必ず確認し、承認してください。 Neon MCP Server にアクセスできるユーザーとアプリケーションを、許可されたもののみにしてください。

Neon MCP Server は、ローカル開発と IDE 連携のみを目的としています。Neon MCP Server を本番環境で使用することは推奨しません。 強力な操作を実行できるため、誤操作や不正な変更につながる可能性があります。

詳細については、MCP のセキュリティガイダンス → を参照してください。

Neon MCP Server のセットアップ

Neon MCP Server のセットアップ方法はいくつかあります。

  1. API キーを使ったクイックセットアップ(Cursor、VS Code、Claude Code): neon@latest init を実行すると、Neon MCP Server、agent skills、および VS Code 拡張機能を 1 つのコマンドで自動的に設定できます。
  2. リモート MCP Server(OAuth 認証): OAuth 認証を使って Neon のマネージド MCP server に接続します。API キーを管理する必要がないため、より便利な方法です。また、新機能や改善がリリースされると、自動的に最新のものを利用できます。
  3. リモート MCP Server(API キー認証): API キー認証を使って Neon のマネージド MCP server に接続します。OAuth を利用できない環境で、リモートエージェントを Neon に接続する場合に便利です。また、新機能や改善がリリースされると、自動的に最新のものを利用できます。

前提条件

  • MCP Client アプリケーション。
  • Neon アカウント。
  • Node.js (>= v18.0.0): nodejs.org からダウンロードしてください。
  • IP Allow が有効な場合は、34.192.103.46 と 23.22.233.166 を許可リストに追加してください(mcp.neon.tech の静的 IP)。

開発には Node.js 22 以降が必要です(pnpm は Corepack 経由で提供されます。corepack enable を実行して有効にしてください)。

オプション 1. API キーを使ったクイックセットアップ

API キーを手動で作成したくない場合

neon@latest init を実行すると、1 つのコマンドで Neon MCP Server を自動的に設定できます。

npx neon@latest init

Cursor、VS Code(GitHub Copilot)、Claude Code で動作します。OAuth で認証し、Neon API キーを作成して、エディターを自動的に設定します。

オプション 2. リモートホスト型 MCP Server(OAuth 認証)

OAuth 認証を使って Neon のマネージド MCP server に接続します。最も簡単なセットアップ方法で、この server をローカルにインストールする必要はなく、クライアントに Neon API キーを設定する必要もありません。

次のコマンドを実行すると、ワークスペース内で検出されたすべてのエージェントとエディターに Neon MCP Server を追加できます。

npx add-mcp "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema"

この URL では、プロジェクト、ブランチ、コンピュートエンドポイント、クエリ、スキーマが公開されます。/api/list-tools?category=projects&category=branches&category=endpoints&category=querying&category=schema でプレビューできます。フィルターなしの URL では、すべてのカテゴリが公開されます。

npx add-mcp https://mcp.neon.tech/mcp

-g フラグを追加すると、プロジェクト単位ではなく、グローバルな MCP server リストに Neon MCP Server を追加できます。

または、クライアントの MCP server 設定ファイル(例: mcp.json、mcp_config.json)に、次の「Neon」エントリを追加できます。

{
  "mcpServers": {
    "Neon": {
      "type": "http",
      "url": "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema"
    }
  }
}

Kiro: Kiro の MCP 設定ファイル(グローバル設定の場合は ~/.kiro/settings/mcp.json、プロジェクト単位の設定の場合は .kiro/settings/mcp.json)に、次の内容を追加してください。

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema"
    }
  }
}

または、この README の上部にあるワンクリックインストールボタンを使用してください。詳細については、Kiro MCP のドキュメント を参照してください。

  • MCP クライアントを再起動するか、更新してください。
  • ブラウザーで OAuth ウィンドウが開きます。画面の指示に従って、MCP クライアントによる Neon アカウントへのアクセスを許可してください。

OAuth 認証では、MCP server はデフォルトで個人の Neon アカウントに属するプロジェクトを操作します。組織に属するプロジェクトにアクセスまたは管理するには、MCP クライアントへのプロンプトで org_id または project_id のいずれかを明示的に指定する必要があります。

オプション 3. リモートホスト型 MCP Server(API キー認証)

クライアントが対応している場合、リモート MCP Server は Authorization ヘッダーに API キーを指定する認証にも対応しています。

Neon Console でNeon API キーを作成してください。次に、次のコマンドを実行すると、ワークスペース内で検出されたすべてのエージェントとエディターに Neon MCP Server を追加できます。

npx add-mcp "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema" --header "Authorization: Bearer <$NEON_API_KEY>"

または、クライアントの MCP server 設定ファイル(例: mcp.json、mcp_config.json)に、次の「Neon」エントリを追加できます。

{
  "mcpServers": {
    "Neon": {
      "type": "http",
      "url": "https://mcp.neon.tech/mcp?category=projects&category=branches&category=endpoints&category=querying&category=schema",
      "headers": {
        "Authorization": "Bearer <$NEON_API_KEY>"
      }
    }
  }
}

組織の API キーを指定すると、アクセスをその組織に属するプロジェクトのみに制限できます。

スコープと読み取り専用モード

Neon MCP は OAuth スコープ read と write を提示します。MCP クライアントからこれらを要求するか、OAuth の権限設定画面で選択できます。クライアントが引き続き * を送信する場合は、書き込みとして扱われます。

読み取り専用モードでは、利用可能なツールが制限され、プロジェクトやブランチの作成、マイグレーションの実行などの書き込み操作が無効になります。読み取り専用ツールには、プロジェクトの一覧表示、スキーマの説明、データのクエリ、パフォーマンス指標の表示が含まれます。

読み取り専用モードは、次の 2 つの方法で設定できます。

  1. デフォルトの MCP URL(編集可能な同意): https://mcp.neon.tech/mcp で接続し、認証ページで Allow writes のチェックを外します。この画面では、プロジェクト、SQL 用の Postgres ロール、ツールカテゴリのサブセットも選択できます。
  2. パラメーター付き MCP URL(固定された同意): MCP server URL に readonly、projectId、category、および/または roleName を指定します。認証ページではその権限が確認され、編集項目は表示されません。権限を変更するには、URL を変更して再認証してください。
{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?readonly=true"
    }
  }
}

クエリパラメーターの動作は次のとおりです。

  • API キーのフロー: readonly=true は読み取り専用モードを有効にする方法です(このフローでは OAuth スコープの交換はありません)。URL の変更は次のリクエストから適用されます。
  • OAuth フロー: MCP URL の projectId、category、readonly、roleName は、認証時に確認される固定の権限です。このページで readonly=true を書き込み可能な権限に拡張することはできません。トークンの発行後に URL を変更しても、そのトークンの権限は拡張されません。再認証してください。

OAuth 登録では、x-read-only は編集可能な同意画面における初期の Allow-writes 設定です。確認を固定するものではなく、readonly=false を含むパラメーター付き URL の権限を縮小するものでもありません。API キーのリクエストでは、readonly クエリパラメーターより優先度の低い設定として、リクエストごとに x-read-only が引き続き適用されます。

注: 読み取り専用モードでは、利用可能な ツール が制限されます。run_sql は引き続き利用でき、各クエリを READ ONLY トランザクション内で実行します。run_sql_transaction は利用できません。各ステートメントを run_sql で実行してください。これらの呼び出しは個別に実行され、トランザクションを共有しません。トランザクションのセマンティクスが必要な場合は、書き込みが許可された接続を使用してください。

アクセス制御用 URL クエリパラメーター

権限のコンテキスト(スコープカテゴリ、プロジェクトのスコープ、読み取り専用モード、固定された Postgres ロール)は、MCP server URL の URL クエリパラメーターで設定します。API キーのリクエストでは、これらのパラメーターが各リクエストに適用されます。OAuth トークンには、認証時に確認または編集された権限が保存されます。

パラメーター説明例
readonly読み取り専用モードを有効化(true/false)?readonly=true
category特定のツールカテゴリに制限(複数指定または CSV)?category=querying&category=schema
projectIdすべての操作を単一のプロジェクトに限定?projectId=proj-123
roleNameowner の代わりに、この Postgres ロールとしてすべての SQL を実行?roleName=app_reader

読み取り専用 + プロジェクトスコープの例:

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?readonly=true&projectId=my-project-id"
    }
  }
}

カテゴリでフィルターする例(クエリとスキーマのツールのみ):

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?category=querying&category=schema"
    }
  }
}

Postgres ロールを固定する例(読み取り専用、単一プロジェクト、SQL を app_reader として実行):

{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?readonly=true&projectId=my-project-id&roleName=app_reader"
    }
  }
}

roleName は、接続全体で使用する Postgres ログインロールを固定します。server が実行するすべての SQL(run_sql、run_sql_transaction、explain_sql_statement、get_database_tables、describe_table_schema、describe_branch、list_slow_queries、inspect_database、およびマイグレーションやクエリチューニング内の SQL)は、そのロールでログインして実行されるため、エージェントが読み取りまたは変更できる内容は Postgres の権限によって決まります。この設定がない場合、SQL はデータベースの owner として実行されます。読み取り専用モードでは、クエリは引き続き READ ONLY トランザクション内で実行されます。固定されたロールを指定すると、Postgres がログイン自体に適用する制限が加わるため、SQL がトランザクションの外に出ても、そのロールの権限しか持ちません。

  • サーバーはロールの認証情報を内部で解決し、返却することはありません。get_connection_string はピン留めされた接続では利用できません。
  • role_name ツール引数がピン留めされたロールと異なる場合、拒否されます。省略すると、オーナーではなくピン留めされたロールが使用されます。
  • ロールが存在しない場合、またはログインできない場合(例: ALTER ROLE … NOLOGIN)、SQLが実行される前に呼び出しは失敗します。別のロールで再試行することはありません。
  • 値には、Postgresのロール名を正確に1つ指定する必要があります。使用できるのは、英字、数字、_ または $ で、英字または _ で始まり、長さは最大63文字です。それ以外(空、繰り返し、引用符付き、ハイフン付き)は無視されず、400 で拒否されます。
  • ロールはログイン可能(LOGIN)であり、クエリ対象の各ブランチに存在する必要があります。SQLで作成したロール(CREATE ROLE app_reader LOGIN PASSWORD '…')も、Neon ConsoleまたはAPIで作成したロールも使用できます。必要な権限だけを持つロールを使うことで、ピン留めが有効になります。読み取り専用エージェントの場合は、参照させるテーブルに対して SELECT を付与し、neon_superuser には追加しないでください。create_postgres_role を access: "read_only" とともに使うと、roleName のない接続からそのようなロールを作成できます。access なしで作成されたロールは neon_superuser に参加します。
  • OAuth: MCP URLに roleName を指定すると、固定の許可が設定されます。認可ページにはロールが表示され、発行されたトークンは更新後もそのロールを保持します。後からURLを変更してもトークンには反映されません。再度認可してください。デフォルトURL(同意画面で編集可能)の場合は、代わりに任意の Postgres role フィールドにロールを入力します。データベースオーナーを維持するには空欄にします。このオプションが導入される前に発行されたトークンにはロールがピン留めされておらず、従来どおり動作します。
  • API key: ロールはリクエストごとにURLから読み取られます。接続URLを編集でき、APIキーを持つ人は誰でもロールを変更または削除できるため、エージェントが制御できない設定にURLを保存してください。
  • ピン留めが適用されるのはSQL接続のみです。管理APIツールは引き続きAPIキーまたはOAuthトークン自体のアクセス権で動作します。たとえば、compare_database_schema はNeon APIによって計算され、ロールの権限による制限を受けません。これらのツールも制限するには、roleName を readonly=true および category と組み合わせてください。

/api/list-tools エンドポイントを使うと、認証なしで、任意の設定で表示されるツールをプレビューできます。

curl "https://mcp.neon.tech/api/list-tools?readonly=true&category=querying"
読み取り専用モードで利用できるツール

ホストツール: list_organizations, describe_branch, run_sql, get_database_tables, describe_table_schema, list_slow_queries, explain_sql_statement, inspect_database, get_neon_auth_config, search, fetch, search_docs, get_doc, send_feedback。

生成された管理APIツールのうち、GETでシークレットを返さないもの、および query_logs(POST、読み取り専用)。正確な一覧は /api/list-tools?readonly=true でプレビューできます。

書き込みアクセスが必要なツール:

  • 生成された管理APIの書き込み操作(create_project, create_branch, delete_project, …)
  • get_connection_string(接続文字列には特権ロールのパスワードが含まれるため、読み取り専用モードでは表示されません。代わりにNeon Consoleからコピーしてください)
  • run_sql_transaction(各ステートメントが同一セッションで実行されるため、COMMIT または SET TRANSACTION READ WRITE ステートメントを実行すると読み取り専用トランザクションが終了します)
  • prepare_database_migration, complete_database_migration
  • prepare_query_tuning, complete_query_tuning

トランスポートの互換性

https://mcp.neon.tech/mcp はステートレスなStreamable HTTPを使用します。MCP 2026-07-28プロトコルと、2025年頃のクライアント向けステートレスフォールバックをサポートしています。非推奨のHTTP+SSE /sse および /message エンドポイントは 410 Gone を返します。

Streamable HTTPクライアントは https://mcp.neon.tech/mcp に接続してください。 ローカルstdioサーバーのみをサポートするクライアントでは、クライアント設定に以下を追加すると、 mcp-remote がStreamable HTTPへのブリッジとして動作します。

{
  "mcpServers": {
    "Neon": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.neon.tech/mcp"]
    }
  }
}

不正な形式の Origin ヘッダーを含むリクエストには 403 Forbidden が返されます。Webページ、ブラウザー拡張機能、デスクトップWebView、null など、シリアライズ可能なすべてのオリジンが受け入れられるため、ブラウザーベースのクライアントも接続できます。Origin を含まないリクエストには影響しません。

リモートサーバーのアーキテクチャ

リモートサーバーは、Vercel上のNext.js App Routerアプリケーションとして mcp.neon.tech で実行されます。

[!NOTE] ルートの / パスはNeon MCP Serverのドキュメントにリダイレクトされます。ランディングページはありません。

主な実装領域:

  • app/api/[transport]/route.ts: ステートレスなStreamable HTTPエンドポイント(/mcp)
  • app/api/authorize/, app/callback/, app/api/token/, app/api/revoke/: OAuthフローのエンドポイント
  • app/.well-known/: OAuthディスカバリメタデータのエンドポイント
  • mcp/: MCPサーバー、ツール、ハンドラー、分析、Sentry統合
  • lib/: Next.js互換のヘルパー(OAuth、設定、エラー処理)
  • mcp/utils/read-only.ts: 読み取り専用モードとスコープ処理

ガイド

機能

サポートされているツール

Neon MCP Serverは、MCPクライアントに「ツール」として公開される以下のアクションを提供します。これらのツールを使うと、自然言語コマンドでNeonのプロジェクトやデータベースを操作できます。

ツールのスコープメタデータ

各ツール定義には、権限付与に基づくツールのフィルタリングと同意画面のUXに使用される scope カテゴリが含まれます。現在のカテゴリは次のとおりです。

  • projects
  • branches
  • endpoints
  • snapshots
  • schema
  • querying
  • neon_auth
  • data_api
  • observability
  • docs
  • functions
  • storage
  • realtime
  • null(スコープカテゴリのないツール: search, fetch, send_feedback)

注:

  • 管理APIツールは @neon/tools から生成されます。セレクターはSDKパス(projects.list)で、公開されるMCP名は動詞から始まります(list_projects, delete_project, query_logs)。既存の履歴的な名前はそのまま維持されます(describe_project, create_branch, reset_from_parent, compare_database_schema, provision_neon_auth, provision_neon_data_api, list_branch_computes)。
  • ?category=branches にはブランチ、ロール、データベースのツールが含まれます(list_postgres_roles, create_postgres_database, …)。branches 用にすでに発行されたトークンでは、これらの書き込み操作も利用できるようになります。コンピュートの一覧表示は ?category=endpoints です。スナップショットの復元は ?category=snapshots です。
  • プロジェクトメンバーと権限の書き込み操作は公開されていません。list_project_members と list_project_permissions は読み取り操作です。
  • スキーマツール(?category=schema)は、ホストツールの get_database_tables と describe_table_schema に、生成された compare_database_schema を加えたものです。
  • 読み取り専用の適用は引き続き readOnlySafe とサーバー側の読み取り専用ロジックに依存します。scope はカテゴリのメタデータであり、単独で読み取り/書き込みを切り替えるものではありません。
  • プロジェクトスコープモード(?projectId=...)では、プロジェクトパスのないツール(list_projects, count_projects, create_project, get_project_consumption, get_branch_consumption, list_organizations, list_regions, search, fetch, …)は非表示になります。delete_project も非表示になります。

プロジェクト管理:

  • list_projects: Neonプロジェクトの一覧を取得します。limit で返される項目数を制限できます。
  • count_projects: 組織内のアクティブなプロジェクト数を返します。org_id は任意で、list_projects と同じ方法で解決されます。
  • describe_project: ID({ "project_id": "…" })でNeonプロジェクトを取得します。
  • get_project_consumption, get_branch_consumption: プロジェクトまたはブランチごとの使用量メトリクスを、請求期間ごとにグループ化して取得します。org_id, metrics, from, to, granularity を受け取り、Launch、Scale、Agent、Business、またはEnterpriseプランが必要です。get_branch_consumption には project_ids も必要です。また、extra_branches_month と snapshot_storage_bytes_month のメトリクスは拒否され、Businessプランでは利用できません。旧プラン向けのエンドポイント /consumption_history/projects は公開されていません。
  • create_project: Neonプロジェクトを作成し、デフォルトのコンピュートが起動するまで待機します。接続文字列は返しません。引数は { "name": "…", "org_id": "…", "region_id": "…" } です。成功後に get_connection_string を呼び出してください。
  • delete_project: 既存のNeonプロジェクトを削除します。引数は { "project_id": "…" } です。
  • list_organizations: 現在のユーザーがアクセスできるすべての組織を一覧表示します。検索パラメーターを使って、組織名またはIDで絞り込むこともできます。

ブランチ管理:

  • list_branches: プロジェクト内のブランチを一覧表示します。ブランチ名から br-… IDを特定するために使用します。
  • list_credentials, create_credential, revoke_credential, rotate_credential: Object StorageとAI Gatewayのブランチスコープの認証情報です。reveal はツールではありません。ローテーションではシークレットがその場で置き換えられ、冪等ではありません。
  • create_branch: 読み書き可能なコンピュートを備えたブランチを作成し、準備が整うまで待機します。接続文字列は返しません。引数は { "project_id": "…", "name": "feature-x" } です。エンドポイントを省略するには no_compute: true を渡します。成功後に get_connection_string を呼び出してください。
  • reset_from_parent: ブランチを親の現在のHEAD({ "project_id": "…", "branch_id": "br-…" })にリセットします。ブランチが分岐してからの書き込みは破棄されます。ブランチに子ブランチがある場合は preserve_under_name が必須です。子ブランチは新しいブランチに移動します。対象は親のHEADのみです。特定時点への復元には restore_snapshot を使用してください。
  • delete_branch: ブランチ({ "project_id": "…", "branch_id": "br-…" })を削除します。
  • describe_branch: ブランチ上のデータベース、スキーマ、テーブル、ビュー、関数のツリーを取得します。
  • 生成されたブランチツールでは、ブランチ名ではなくブランチID(br-...)として branch_id を指定します。
  • restore_snapshot: スナップショットを復元します。既存のブランチに復元するには target_branch_id を渡します。省略すると新しいブランチが作成されます。

コンピュートエンドポイント(?category=endpoints):

  • list_postgres_endpoints, list_branch_computes, get_postgres_endpoint, create_postgres_endpoint, update_postgres_endpoint, delete_postgres_endpoint, start_postgres_endpoint, suspend_postgres_endpoint, restart_postgres_endpoint

スナップショット(?category=snapshots):

  • list_snapshots, get_snapshot_schedule, set_snapshot_schedule, create_snapshot, update_snapshot, delete_snapshot, restore_snapshot

スキーマ(?category=schema):

  • get_database_tables, describe_table_schema
  • compare_database_schema: あるデータベースのSQLスキーマを別のブランチと比較します。database_name は必須です。base_branch_id を省略すると、親ブランチと比較します。任意の lsn, timestamp, base_lsn, base_timestamp は、特定時点を指定する場合にのみ使用できます。

SQLクエリの実行:

  • get_connection_string: データベースの接続文字列を返します。
  • run_sql: 指定したNeonデータベースに対して単一のSQLクエリを実行します。読み取り操作と書き込み操作の両方をサポートします。任意の role_name を指定すると、データベースオーナーではなくそのPostgresロールでログインし、compute_id でコンピュートを選択します。認証情報はサーバー上に保持されます。?roleName= を含む接続では、role_name を省略するか、同じ値にする必要があります。
  • run_sql_transaction: Neonデータベースに対して、単一のトランザクション内で一連のSQLクエリを実行します。run_sql と同じ任意の role_name および compute_id を受け取ります。
  • get_database_tables: 指定したNeonデータベース内のすべてのテーブルを一覧表示します。
  • describe_table_schema: 特定のテーブルのスキーマ定義を取得し、列、データ型、制約の詳細を示します。

データベースのマイグレーション(スキーマ変更):

  • prepare_database_migration: データベースのマイグレーションプロセスを開始します。重要な点として、メインブランチに影響を与える前にマイグレーションを安全に適用してテストできるよう、一時ブランチを作成します。
  • complete_database_migration: 準備済みのデータベースマイグレーションを確定し、メインブランチに適用します。この操作では、一時マイグレーションブランチの変更をマージし、一時リソースをクリーンアップします。

SQL クエリと最適化:

  • inspect_database: ブランチに対して、事前定義された15種類の読み取り専用 Postgres 診断のいずれかを実行します。対象は、リレーションとインデックスのサイズ、インデックスとシーケンシャルスキャンの使用状況、実行中のクエリとロック、最も負荷の高いクエリと最も頻繁に実行されるクエリ、キャッシュヒット率とワーキングセットサイズ、autovacuum と肥大化の推定値、レプリケーションの状態です。neon inspect db CLI コマンドと同じチェックを実行します。ブランチ上のすべてのデータベースを対象にするには database_name を省略し、特定のデータベースを調べるには名前を指定します。このうち4つには pg_stat_statements または neon 拡張機能が必要です。
  • list_slow_queries: データベース内の最も遅いクエリを特定して、パフォーマンスのボトルネックを見つけます。pg_stat_statements 拡張機能が必要です。
  • explain_sql_statement: SQL クエリの詳細な実行計画を提供し、パフォーマンスのボトルネックの特定に役立ちます。
  • prepare_query_tuning: クエリのパフォーマンスを分析し、インデックスの作成などの最適化を提案します。これらの最適化を安全にテストするため、一時ブランチを作成します。
  • complete_query_tuning: 最適化をメインブランチに適用するか破棄して、クエリのチューニングを確定します。一時チューニングブランチをクリーンアップします。

Neon Auth (?category=neon_auth):

  • provision_neon_auth、get_auth、disable_auth、update_auth_config
  • get_neon_auth_config: ホストツール。シークレットは秘匿されます。信頼済みオリジン、localhost アクセス、メールアドレスとパスワード、OAuth プロバイダー、メールプロバイダー、組織、マジックリンクと電話番号のプラグイン、および webhook を読み取ります。
  • update_auth_allow_localhost、update_auth_email_and_password、update_auth_email_provider、send_auth_test_email、update_auth_plugins_organization、update_auth_plugins_magic_link、update_auth_plugins_phone_number、update_auth_webhooks: これらの設定を変更します。update_auth_webhooks は webhook の設定全体を置き換えます。
  • list_auth_oauth_providers、add_auth_oauth_provider、update_auth_oauth_provider、delete_auth_oauth_provider
  • get_auth_oauth_server、update_auth_oauth_server: Neon Auth を OAuth 2.1 認可サーバーとして構成します(MCP サーバー向けを含む)。上記のソーシャルログインプロバイダーとは別のものです。
  • list_auth_oauth_clients、get_auth_oauth_client、create_auth_oauth_client、update_auth_oauth_client、delete_auth_oauth_client、rotate_auth_oauth_client_secret: そのサーバーの OAuth クライアントを管理します。create_auth_oauth_client と rotate_auth_oauth_client_secret は client_secret を一度だけ返します。
  • list_auth_trusted_domains、add_auth_trusted_domain、delete_auth_trusted_domain
  • create_auth_user、delete_auth_user、update_auth_user_role

Neon Data API (?category=data_api):

  • provision_neon_data_api、get_data_api、update_data_api、delete_data_api: ブランチのデータベースに対する Data API を管理します。

検索と探索:

  • search: クエリに一致する組織、プロジェクト、ブランチを検索します。ID、タイトル、Neon Console への直接リンクを返します。
  • fetch: ID(通常は検索ツールから取得)を使って、特定の組織、プロジェクト、ブランチの詳細情報を取得します。

フィードバック(ログイン不要の ?category=docs エンドポイントを含め、常に利用可能):

  • send_feedback: 匿名のフィードバックを Neon チームに送信します。送信されるのはフィードバックのテキストのみで、アカウント、プロジェクト、接続の詳細は含まれません。メッセージは10,000文字までです。

オブザーバビリティ (?category=observability): これらのツールには Neon Platform Beta が必要で、現在は aws-us-east-2 リージョンのプロジェクトでのみ利用できます。ログへのアクセス権がないブランチでは、理由が telemetry_not_enabled の HTTP 404 が返されます。

  • query_logs: ブランチの OpenTelemetry ログをクエリします。Management API では POST を使用しますが、このサーバーでは読み取り専用として扱われます。
  • list_log_fields: ブランチ上で値を列挙できるログフィールドを一覧表示します。
  • list_log_field_values: ブランチと時間範囲を指定して、ログフィールドの個別の値を一覧表示します。

ドキュメントとリソース (?category=docs):

  • search_docs: neon.com(ドキュメント、API リファレンス、PostgreSQL チュートリアル、ガイド、FAQ、変更履歴、ブログ)を、neon.com の検索ボックスと同じ方法で検索します。query、省略可能な categories(docs、api、postgresql、guides、faqs、blog、changelog)、および省略可能な limit(1~40、デフォルトは10)を受け取ります。title、url、slug、category、breadcrumb、heading、excerpt を含む、関連度順のページを返します。ページを読むには、slug を get_doc に渡します。
  • get_doc: neon.com のページを1つ、Markdown として取得します。search_docs の検索結果(たとえば docs/guides/prisma または postgresql/tutorial/inner-join)から取得した slug を受け取ります。

Functions (?category=functions):

  • list_functions、get_function、update_function、delete_function、deploy_function
  • list_functions_custom_domains、register_functions_custom_domain、delete_functions_custom_domain
  • list_triggers、get_trigger、create_trigger、update_trigger、delete_trigger: スケジュールされた関数トリガー(type: "schedule"、UTC の5フィールド cron)。

Storage (?category=storage):

  • list_storage_buckets、create_storage_bucket、delete_storage_bucket
  • list_storage_objects、delete_storage_object、delete_storage_objects_by_prefix
  • presign_storage_object、get_storage

Realtime (?category=realtime):

  • get_realtime、enable_realtime、disable_realtime: ブランチの Realtime の状態確認、有効化(省略可能な allowed_origins)、無効化を行います。有効化と無効化では、変更が適用されるまで待機します。
  • get_realtime_secret: アプリケーションのバックエンドが Realtime トークンの発行に使用する共有シークレットです。読み取り専用モードでは利用できません。
  • rotate_realtime_secret: 共有シークレットを置き換え、変更が適用されるまで待機します。冪等ではありません。新しい値を取得するには、その後 get_realtime_secret を呼び出してください。

マイグレーション

マイグレーションは、データベーススキーマの変更を時間の経過に沿って管理する方法です。Neon MCP サーバーを使うと、LLM は「Start」(prepare_database_migration) コマンドと「Commit」(complete_database_migration) コマンドを分けて、安全にマイグレーションを実行できます。

「Start」コマンドはマイグレーションを受け取り、新しい一時ブランチで実行します。このコマンドは、実行後にそのブランチでマイグレーションをテストするよう LLM に促します。その後、LLM は「Commit」コマンドを実行して、元のブランチにマイグレーションを適用できます。

開発

このプロジェクトでは、Corepack 経由でバージョンを固定したパッケージマネージャーとして pnpm を使用します。

プロジェクト構成

MCP サーバーのコードはリポジトリのルートにあります。これは Next.js アプリケーションで、Vercel の mcp.neon.tech にデプロイされています。

corepack enable
pnpm install

ツールの追加方法については、CONTRIBUTING.md を参照してください。ツールの引数は snake_case です。

ローカル開発

# Start the Next.js dev server (for the remote MCP server)
pnpm dev

Lint と型チェック

pnpm lint
pnpm typecheck

環境変数

リモートサーバーの実行に必須:

変数説明
SERVER_HOSTサーバー URL(デフォルトは VERCEL_URL)
UPSTREAM_OAUTH_HOSTNeon OAuth プロバイダーの URL
CLIENT_IDOAuth クライアント ID
CLIENT_SECRETOAuth クライアントシークレット
KV_URLUpstash Redis URL(一時ロック)
OAUTH_DATABASE_URLトークンストレージ用の Postgres URL

省略可能:

変数説明
LOG_LEVELWinston のログレベル: error、warn、info(デフォルト)、debug、verbose、silly
NEON_MCP_DISABLE_ANALYTICS1 に設定すると、プロダクト分析を無効化します

テストピラミッド

すべてのテストはリポジトリのルートから実行します。

# Unit tests
pnpm test:unit

# Integration tests
pnpm test:integration

# MCP protocol end-to-end tests (real MCP client/server tool calls)
pnpm test:e2e:mcp

# Website end-to-end tests (Playwright; provisions/validates ephemeral DB first)
pnpm test:e2e:web

# Full end-to-end suite
pnpm test:e2e

# Full test pyramid (unit + integration + e2e; used in CI)
pnpm test

テスト戦略:

  • トランスポート/プロトコルとユーザーに見える動作には、E2E を優先します。
  • 決定論的なツールの契約とワークフローの動作には、integration テストを使用します。
  • 純粋なロジックとエッジケースには、unit テストを使用します。
  • マージをブロックするテストでは、サードパーティの稼働状況に依存しないでください。integration/unit テスト層では外部依存関係をモックしてください。

デプロイ

Vercel は、リポジトリのブランチ設定に基づいてリモートサーバーを自動的にデプロイします。プルリクエストではプレビュー環境を利用できます。

テレメトリー

Neon MCP サーバーは、利用状況の把握と信頼性の向上を目的として、プロダクト分析データとエラーレポートを収集します。

  • プロダクト分析(Segment): 認証済みアカウントで接続すると、サーバーは Neon アカウント ID、名前、メールアドレスを含む identify イベントを送信します。また、セッション開始(server_init)、各ツール呼び出し(tool_call)、予期しないサーバーエラー(server_error)も追跡します。ツール呼び出しイベントには、ツール名、認証方法、クライアントが含まれますが、ツールの引数やクエリ結果は含まれません。アカウントなしで行われたドキュメント専用ツールの呼び出しは、匿名で追跡されます。イベントは、Neon 独自の分析エンドポイントである track.neon.tech に送信されます。
  • エラーレポート(Sentry): 予期しないサーバーエラーは、スタックトレースとリクエストコンテキストとともに報告されます。

このデータ収集は Neon プライバシーポリシー の対象です。サーバーを自分で実行する際に分析を無効にするには、NEON_MCP_DISABLE_ANALYTICS=1 を設定してください。このフラグを設定しても Sentry は無効になりません。