Neon

公式

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

Neon MCPで何ができますか?

  • プロジェクトの作成と管理 — 新しいPostgresデータベースの作成、既存プロジェクトの一覧表示、またはcreate_projectlist_projectsによる削除を依頼します。
  • SQLクエリとトランザクションの実行run_sqlまたはrun_sql_transactionを使用して、書き込みを含む単一または複数ステートメントのSQLをデータベースに対して実行します。
  • パフォーマンスの検査と最適化list_slow_queriesexplain_sql_statement、またはinspect_databaseを使用して、低速クエリの特定、実行計画の取得、キャッシュヒット率などの診断を実行します。
  • スキーマの安全な移行 — 一時ブランチで移行を開始し、テストしてから、prepare_database_migrationcomplete_database_migrationを使用してメインブランチにコミットします。
  • データベース構造の探索get_database_tablesdescribe_table_schema、またはcompare_database_schemaを使用して、テーブルの一覧表示、列スキーマの説明、またはブランチ間のスキーマ差分を確認します。

ホスト型 MCP サーバー

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

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

ドキュメント

Neon Logo fallback

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?

[!WARNING]
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 許可 が有効な場合は、34.192.103.4623.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.jsonmcp_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 コンソールで 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.jsonmcp_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 スコープ readwrite をアドバタイズします。MCP クライアントはこれらをリクエストするか、OAuth 権限 UI で選択できます。クライアントがまだ送信する場合、* は書き込みとして扱われます。

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

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

  1. デフォルトの MCP URL (編集可能な同意): https://mcp.neon.tech/mcp で接続し、承認ページで 書き込みを許可 のチェックを外します。そこで 1 つのプロジェクトとツールカテゴリのサブセットを選択することもできます。
  2. パラメータ化された MCP URL (固定された同意): MCP サーバー URL に readonlyprojectId、および/または category を配置します。承認ページはその許可を確認し、エディターを提供しません。許可を変更するには、URL を変更して再度承認します。
{
  "mcpServers": {
    "Neon": {
      "url": "https://mcp.neon.tech/mcp?readonly=true"
    }
  }
}

クエリパラメータの動作:

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

OAuth 登録の場合、x-read-only は編集可能な同意における初期の「書き込みを許可」のデフォルトです。確認をロックしたり、readonly=false を含むパラメータ化された URL を削減したりしません。API キーリクエストは、readonly クエリパラメータの下で、リクエストごとに x-read-only を引き続き尊重します。

注: 読み取り専用モードは、利用可能な_ツール_を制限します。さらに、run_sql ツールは読み取り専用クエリでのみ引き続き利用できます。

アクセス制御のための URL クエリパラメータ

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

パラメータ説明
readonly読み取り専用モードを有効にする (true/false)?readonly=true
category特定のツールカテゴリに制限する (繰り返しまたは CSV)?category=querying&category=schema
projectIdすべての操作を単一のプロジェクトにスコープする?projectId=proj-123

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

{
  "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"
    }
  }
}

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

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

ホストツール: list_organizationsdescribe_branchrun_sqlrun_sql_transactionget_database_tablesdescribe_table_schemalist_slow_queriesexplain_sql_statementinspect_databaseget_neon_auth_configsearchfetchlist_docs_resourcesget_doc_resource

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

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

  • 生成された Management API の書き込み (create_projectcreate_branchdelete_project、…)
  • get_connection_string (接続文字列には特権ロールのパスワードが含まれるため、読み取り専用モードでは提供されません。Neon コンソール からコピーしてください)
  • prepare_database_migrationcomplete_database_migration
  • prepare_query_tuningcomplete_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 サーバーを追加します。

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

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

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

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

コア実装領域:

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

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

各ツール定義には、権限ベースのツールフィルタリングと同意UXに使用されるscopeカテゴリが含まれています。現在のカテゴリは以下のとおりです:

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

注記:

  • Management APIツールは@neon/toolsから提供されます。セレクタはSDKパス(projects.list)です。公開されているMCP名は動詞優先です(list_projectsdelete_projectquery_logs)。既存の履歴名はそのまま維持されます(describe_projectcreate_branchreset_from_parentcompare_database_schemaprovision_neon_authprovision_neon_data_apilist_branch_computes)。
  • ?category=branchesには、ブランチ、ロール、データベースのツールが含まれます(list_postgres_rolescreate_postgres_database、…)。branchesに対して発行済みのトークンは、これらの書き込み権限を取得します。コンピュートの一覧表示は?category=endpointsです。スナップショットの復元は?category=snapshotsです。
  • プロジェクトメンバーと権限の書き込みは公開されていません。list_project_memberslist_project_permissionsは読み取り専用です。
  • スキーマツール(?category=schema)は、ホストツールのget_database_tablesdescribe_table_schema、および生成されたcompare_database_schemaです。
  • 読み取り専用の強制は、依然としてreadOnlySafeとサーバー側の読み取り専用ロジックに依存しています。scopeはカテゴリのメタデータであり、独立した読み取り/書き込みスイッチではありません。
  • プロジェクトスコープモード(?projectId=...)では、プロジェクトパスのないツール(list_projectscreate_projectlist_organizationslist_regionssearchfetch、…)は非表示になります。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_credentialscreate_credentialrevoke_credentialrotate_credential:オブジェクトストレージとAIゲートウェイ用のブランチスコープの認証情報。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_endpointslist_branch_computesget_postgres_endpointcreate_postgres_endpointupdate_postgres_endpointdelete_postgres_endpointstart_postgres_endpointsuspend_postgres_endpointrestart_postgres_endpoint

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

  • list_snapshotsget_snapshot_scheduleset_snapshot_schedulecreate_snapshotupdate_snapshotdelete_snapshotrestore_snapshot

スキーマ?category=schema):

  • get_database_tablesdescribe_table_schema
  • compare_database_schema:あるデータベースと別のブランチを比較したSQLスキーマ差分。database_nameは必須です。base_branch_idを省略すると親と比較します。オプションのlsntimestampbase_lsnbase_timestampはポイントインタイムのみです。

SQLクエリ実行:

  • get_connection_string:データベースの接続文字列を返します。
  • run_sql:指定されたNeonデータベースに対して単一のSQLクエリを実行します。読み取りと書き込みの両方の操作をサポートします。
  • run_sql_transaction:Neonデータベースに対して単一のトランザクション内で一連のSQLクエリを実行します。
  • 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を省略するとブランチ上のすべてのデータベースを対象にします。名前を渡すと1つを検査します。そのうち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_authget_authdisable_authupdate_auth_config
  • get_neon_auth_config:ホストツール。シークレットは編集されます。設定を変更するには、生成されたAuth書き込みツールを使用します。
  • list_auth_oauth_providersadd_auth_oauth_providerupdate_auth_oauth_providerdelete_auth_oauth_provider
  • list_auth_trusted_domainsadd_auth_trusted_domaindelete_auth_trusted_domain
  • create_auth_userdelete_auth_userupdate_auth_user_role

Neon Data API?category=data_api):

  • provision_neon_data_apiget_data_apiupdate_data_apidelete_data_api:ブランチデータベースのData APIを管理します。

検索と発見:

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

可観測性?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_resourceshttps://neon.com/docs/llms.txtからインデックスを取得して、利用可能なすべてのNeonドキュメントページを一覧表示します。get_doc_resourceツールを使用して個別に取得できるページURLとタイトルを返します。
  • get_doc_resource:特定のNeonドキュメントページをマークダウンコンテンツとして取得します。最初にlist_docs_resourcesツールを使用して利用可能なページスラッグを発見し、次にこのツールにスラッグを渡します。

関数?category=functions):

  • list_functionsget_functionupdate_functiondelete_functiondeploy_function
  • list_functions_custom_domainsregister_functions_custom_domaindelete_functions_custom_domain
  • list_triggersget_triggercreate_triggerupdate_triggerdelete_trigger:スケジュールされた関数トリガー(type: "schedule"、5フィールドのUTC cron)。

ストレージ?category=storage):

  • list_storage_bucketscreate_storage_bucketdelete_storage_bucket
  • list_storage_objectsdelete_storage_objectdelete_storage_objects_by_prefix
  • presign_storage_objectget_storage

マイグレーション

マイグレーションは、データベーススキーマの変更を時間の経過とともに管理する方法です。Neon MCPサーバーを使用すると、LLMは個別の「開始」(prepare_database_migration)および「コミット」(complete_database_migration)コマンドを使用して、マイグレーションを安全に実行できます。

「開始」コマンドはマイグレーションを受け入れ、新しい一時ブランチで実行します。戻ると、このコマンドはLLMにこのブランチでマイグレーションをテストするようにヒントを与えます。LLMは「コミット」コマンドを実行して、マイグレーションを元のブランチに適用できます。

開発

このプロジェクトは、Corepackを介して固定されたパッケージマネージャーとしてpnpmを使用します。

プロジェクト構造

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

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ログレベル: errorwarninfo(デフォルト)、debugverbosesilly
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を無効にしません。