mcpField
N
Neon

Neon

おすすめリモート
mcp-server-neon-jet.vercel.appデータベース658今日更新

Neon について

Neonは、自然言語でNeon Postgresデータベースを管理するオープンソースのリモートMCPサーバーです。プロジェクト、ブランチ、クエリ、スキーマ、マイグレーションを扱い、読み取り専用やプロジェクト単位のアクセス制御に対応します。

主な機能

  1. 01プロジェクトとブランチの管理
  2. 02SQLクエリとマイグレーションの実行
  3. 03スキーマとデータの確認
  4. 04プロジェクトやカテゴリによるアクセス制限
  5. 05読み取り専用設定とPostgresロールの指定

活用シーン

  1. 01Neonプロジェクトとデータベースブランチの作成
  2. 02データのクエリやテーブルスキーマの確認
  3. 03ブランチを使ったスキーマ移行
  4. 04エージェントのアクセスを読み取り専用に制限

MCP 対応

このリモートMCPサーバーは、プロジェクトやブランチの管理、クエリ、スキーマ確認、マイグレーションなどのNeon APIおよびデータベース操作をMCPクライアントに公開します。プロジェクト、ツールカテゴリ、読み取り専用モード、Postgresロールでアクセス範囲を制御できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.neon.tech/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.neon.tech/mcp認証が必要

ツール

35
パラメーター型必須説明
cursorstringいいえ次のプロジェクト群を取得するには、前回の応答に含まれるカーソル値を指定します。
limitnumberいいえ応答に含めるプロジェクト数を制限するには、1~400 の値を指定します。
searchstringいいえプロジェクト名または ID で検索します。部分的な名前または ID を指定して結果を絞り込めます。
org_idstringいいえorg_id でプロジェクトを検索します。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

Neon ロゴのフォールバック

Neon MCP サーバー

Install MCP Server in Cursor Add to Kiro

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

License: MIT

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

Neon の MCP サーバーは、自然言語のリクエストとNeon APIの橋渡しをします。MCP を基盤として、リクエストを必要な API 呼び出しに変換し、プロジェクトやブランチの作成、クエリの実行、データベースの移行などのタスクをシームレスに管理できます。

Neon MCP サーバーの主な機能は次のとおりです。

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

たとえば、Claude Code や任意の MCP クライアントで自然言語を使い、次のような操作を 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?

警告


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

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

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

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

Neon MCP サーバーをセットアップする方法はいくつかあります。

  1. API キーを使ったクイックセットアップ(Cursor、VS Code、Claude Code): neon@latest init を実行すると、Neon の MCP サーバー、エージェントスキル、VS Code 拡張機能を 1 つのコマンドで自動的に設定できます。
  2. リモート MCP サーバー(OAuth ベースの認証): OAuth 認証を使って、Neon のマネージド MCP サーバーに接続します。API キーを管理する必要がないため、より便利な方法です。また、新機能や改善がリリースされると、自動的に利用できるようになります。
  3. リモート MCP サーバー(API キーベースの認証): API キー認証を使って、Neon のマネージド MCP サーバーに接続します。OAuth を利用できない環境で、リモートエージェントを Neon に接続する場合に便利です。また、新機能や改善がリリースされると、自動的に利用できるようになります。
前提条件
  • MCP クライアントアプリケーション。
  • 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 を実行すると、Neon の MCP サーバーを 1 つのコマンドで自動的に設定できます。

npx neon@latest init

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

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

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

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

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 サーバーリストに Neon MCP サーバーを追加できます。

または、クライアントの MCP サーバー設定ファイル(例: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 サーバーはデフォルトで、個人の Neon アカウント内のプロジェクトを対象に動作します。組織に属するプロジェクトにアクセスまたは管理するには、MCP クライアントへのプロンプトで org_id または project_id のいずれかを明示的に指定する必要があります。

オプション 3. リモートホスト型 MCP サーバー(API キーによる認証)

リモート MCP サーバーは、クライアントが対応している場合、Authorization ヘッダーの API キーを使った認証もサポートしています。

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

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 サーバー設定ファイル(例: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 権限 UI で選択できます。クライアントが引き続き * を送信する場合、これは書き込みとして扱われます。

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

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

  1. デフォルトの MCP URL(編集可能な同意): https://mcp.neon.tech/mcp に接続し、認証ページで 書き込みを許可 のチェックを外します。このページでは、プロジェクトを 1 つ選択したり、SQL 用の Postgres ロールを指定したり、ツールカテゴリーを絞り込んだりすることもできます。
  2. パラメーター付き MCP URL(固定された同意): MCP サーバーの 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 は編集可能な同意画面での「書き込みを許可」の初期値です。確認内容を固定するものではなく、readonly=false を含むパラメーター付き URL の設定を制限するものでもありません。API キーのリクエストでは、後述のとおり、readonly クエリパラメーターより優先度の低い設定として x-read-only がリクエストごとに適用されます。

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

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

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

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

読み取り専用+プロジェクト限定の例:

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

カテゴリーで絞り込む例(querying と schema のツールのみ):

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

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

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

roleName は、接続全体で使用する Postgres のログインロールを固定します。サーバーがお客様に代わって実行するすべての 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 はデータベース所有者として実行されます。読み取り専用モードでは、クエリは引き続き READ ONLY トランザクション内で実行されます。ロールを固定することで、Postgres がログイン自体に適用する制限も加わるため、SQL がトランザクションの外に出ても、そのロールの権限しか持ちません。

  • サーバーはロールの認証情報を内部で解決し、返すことはありません。固定された接続では get_connection_string を利用できません。
  • ツール引数の role_name が固定されたロールと異なる場合、拒否されます。省略すると、所有者ではなく固定されたロールが使用されます。
  • ロールが存在しない場合、またはログインできない場合(たとえば ALTER ROLE … NOLOGIN)、SQL が実行される前に呼び出しが失敗します。別のロールで再試行することはありません。
  • 値には、正確な Postgres ロール名を指定する必要があります。使用できる文字は英字、数字、_、$ で、先頭は英字または _、最大 63 文字です。それ以外(空、文字の繰り返し、引用符付き、ハイフン入り)は無視されず、400 エラーで拒否されます。
  • ロールにはログイン権限(LOGIN)が必要であり、クエリを実行する各ブランチに存在する必要があります。SQL で作成したロール(CREATE ROLE app_reader LOGIN PASSWORD '…')も、Neon Console または API で作成したロールも使用できます。必要な権限のみを持ち、それ以上の権限を持たないロールにすることで、固定する効果が得られます。読み取り専用エージェントの場合は、表示させるテーブルに対して SELECT を付与し、neon_superuser には追加しないでください。
  • OAuth: MCP URL に roleName を指定すると、固定された権限付与になります。認証画面にロールが表示され、発行されたトークンは更新後もそのロールを保持します。後から URL を変更してもトークンには反映されないため、再度認証してください。デフォルト URL(編集可能な同意画面)の場合は、代わりに任意項目の Postgres role フィールドにロールを入力してください。空欄にするとデータベース所有者が使用されます。このオプションが導入される前に発行されたトークンにはロールが固定されておらず、従来どおり動作します。
  • API キー: ロールはリクエストごとに 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、list_docs_resources、get_doc_resource、send_feedback。

GET リクエストでシークレットを返さない、生成された Management API ツールに加え、query_logs(POST、読み取り専用)。正確な一覧は /api/list-tools?readonly=true で確認できます。

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

  • 生成された Management 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
### Server-Sent Events(SSE)トランスポート(非推奨)

MCP は、リモートサーバー向けに 2 つのトランスポートをサポートしています。非推奨の Server-Sent Events(SSE)と、新しく推奨されている Streamable HTTP です。LLM クライアントがまだ Streamable HTTP をサポートしていない場合は、エンドポイントを https://mcp.neon.tech/mcp から https://mcp.neon.tech/sse に切り替えると、代わりに SSE を使用できます。

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

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

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

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

メモ

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

主な実装領域:

  • app/api/[transport]/route.ts:Streamable HTTP(/mcp)と SSE(/sse)用の 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、create_project、list_organizations、list_regions、search、fetch、…)は非表示になります。delete_project も非表示になります。

プロジェクト管理:

  • list_projects:Neon プロジェクトの一覧を取得します。limit で取得する項目数の上限を設定します。
  • describe_project:ID({ "project_id": "…" })を指定して Neon プロジェクトを取得します。
  • 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:オブジェクトストレージと 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:ブランチ内のデータベース、スキーマ、テーブル、ビュー、関数のツリーを取得します。
  • 生成されるブランチツールでは、branch_id にブランチ名ではなくブランチ ID(br-...)を指定します。
  • 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 診断のうち 1 つを実行します。対象は、リレーションとインデックスのサイズ、インデックスとシーケンシャルスキャンの使用状況、実行中のクエリとロック、最も負荷の高いクエリと実行頻度の高いクエリ、キャッシュヒット率とワーキングセットサイズ、自動バキュームと肥大化の推定値、レプリケーションの状態です。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:ホストツールです。シークレットはマスキングされます。設定を変更するには、生成された Auth 書き込みツールを使用してください。
  • list_auth_oauth_providers、add_auth_oauth_provider、update_auth_oauth_provider、delete_auth_oauth_provider
  • 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):

  • list_docs_resources:https://neon.com/docs/llms.txt からインデックスを取得し、利用可能なすべての Neon ドキュメントページを一覧表示します。ページの URL とタイトルが返され、get_doc_resource ツールで個別に取得できます。
  • get_doc_resource:特定の Neon ドキュメントページを Markdown コンテンツとして取得します。まず list_docs_resources ツールで利用可能なページスラッグを確認し、そのスラッグをこのツールに渡してください。

関数(?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)。

ストレージ(?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

リアルタイム(?category=realtime):

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

マイグレーションは、データベーススキーマの変更を時系列で管理する方法です。Neon MCP サーバーを使うと、LLM は「開始」(prepare_database_migration)コマンドと「コミット」(complete_database_migration)コマンドを分けて、安全にマイグレーションを実行できます。

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

開発

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

プロジェクト構成

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

corepack enable
pnpm install

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

ローカル開発
# Start the Next.js dev server (for the remote MCP server)
pnpm dev
リントと型チェック
pnpm lint
pnpm typecheck
環境変数

リモートサーバーの実行時に必要です:

変数説明
SERVER_HOSTサーバーの URL(デフォルトは VERCEL_URL)
UPSTREAM_OAUTH_HOSTNeon OAuth プロバイダーの URL
CLIENT_IDOAuth クライアント ID
CLIENT_SECRETOAuth クライアントシークレット
KV_URLVercel KV(Upstash 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 を優先してください。
  • 決定的なツールの契約とワークフローの動作には、統合テストを使用してください。
  • 純粋なロジックとエッジケースには、ユニットテストを使用してください。
  • マージをブロックするテストでは、サードパーティの稼働状況に依存しないでください。統合/ユニットテストの段階では、外部依存関係をモックしてください。
デプロイ

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は無効になりません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。