Neon MCP Server について
Neon MCP Serverは、自然言語でNeon Postgresデータベースを管理するオープンソースのリモートMCPサーバーです。プロジェクト、ブランチ、クエリ、スキーマ、マイグレーションを扱い、読み取り専用やプロジェクト単位のアクセス制御に対応します。
主な機能
- 01プロジェクトとブランチの管理
- 02SQLクエリとマイグレーションの実行
- 03スキーマとデータの確認
- 04プロジェクトやカテゴリによるアクセス制限
- 05読み取り専用設定とPostgresロールの指定
活用シーン
- 01Neonプロジェクトとデータベースブランチの作成
- 02データのクエリやテーブルスキーマの確認
- 03ブランチを使ったスキーマ移行
- 04エージェントのアクセスを読み取り専用に制限
MCP 対応
このリモートMCPサーバーは、プロジェクトやブランチの管理、クエリ、スキーマ確認、マイグレーションなどのNeon APIおよびデータベース操作をMCPクライアントに公開します。プロジェクト、ツールカテゴリ、読み取り専用モード、Postgresロールでアクセス範囲を制御できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
16掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| params | object | はい |
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
Neon MCP サーバー
Neon MCP サーバーは、Neon 上の Lakebase Postgres データベースを自然言語で操作できるオープンソースのツールです。
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 サーバーをセットアップする方法はいくつかあります。
- API キーを使ったクイックセットアップ(Cursor、VS Code、Claude Code):
neon@latest initを実行すると、Neon の MCP サーバー、エージェントスキル、VS Code 拡張機能を 1 つのコマンドで自動的に設定できます。 - リモート MCP サーバー(OAuth ベースの認証): OAuth 認証を使って、Neon のマネージド MCP サーバーに接続します。API キーを管理する必要がないため、より便利な方法です。また、新機能や改善がリリースされると、自動的に利用できるようになります。
- リモート 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 つの方法で設定できます。
- デフォルトの MCP URL(編集可能な同意):
https://mcp.neon.tech/mcpに接続し、認証ページで 書き込みを許可 のチェックを外します。このページでは、プロジェクトを 1 つ選択したり、SQL 用の Postgres ロールを指定したり、ツールカテゴリーを絞り込んだりすることもできます。 - パラメーター付き 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_migrationprepare_query_tuning、complete_query_tuning
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 に接続する
- Neon MCP Server を Cursor で使用する
- Neon MCP Server を Claude Code で使用する
- Neon MCP Server を Claude Desktop で使用する
- Neon MCP Server を Cline で使用する
- Neon MCP Server を Windsurf で使用する
- Neon MCP Server を Zed で使用する
機能
サポートされているツール
Neon MCP Server は、MCP クライアントに「ツール」として公開される次のアクションを提供します。これらのツールを使用して、自然言語のコマンドで Neon のプロジェクトやデータベースを操作できます。
ツールのスコープメタデータ
各ツールの定義には、権限付与に基づくツールのフィルタリングと同意 UX に使用される scope カテゴリーが含まれています。現在のカテゴリーは次のとおりです。
projectsbranchesendpointssnapshotsschemaqueryingneon_authdata_apiobservabilitydocsfunctionsstoragerealtimenull(スコープカテゴリーのないツール: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_schemacompare_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 dbCLI コマンドと同じチェックを行います。ブランチ上のすべてのデータベースを対象にするには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_configget_neon_auth_config:ホストツールです。シークレットはマスキングされます。設定を変更するには、生成された Auth 書き込みツールを使用してください。list_auth_oauth_providers、add_auth_oauth_provider、update_auth_oauth_provider、delete_auth_oauth_providerlist_auth_trusted_domains、add_auth_trusted_domain、delete_auth_trusted_domaincreate_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_functionlist_functions_custom_domains、register_functions_custom_domain、delete_functions_custom_domainlist_triggers、get_trigger、create_trigger、update_trigger、delete_trigger:スケジュール済み関数のトリガー(type: "schedule"、UTC の 5 フィールド cron)。
ストレージ(?category=storage):
list_storage_buckets、create_storage_bucket、delete_storage_bucketlist_storage_objects、delete_storage_object、delete_storage_objects_by_prefixpresign_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_HOST | Neon OAuth プロバイダーの URL |
CLIENT_ID | OAuth クライアント ID |
CLIENT_SECRET | OAuth クライアントシークレット |
KV_URL | Vercel KV(Upstash Redis)の URL |
OAUTH_DATABASE_URL | トークン保存用の Postgres URL |
任意です:
| 変数 | 説明 |
|---|---|
LOG_LEVEL | Winston のログレベル:error、warn、info(デフォルト)、debug、verbose、silly |
NEON_MCP_DISABLE_ANALYTICS | 1 に設定すると、製品分析を無効にします |
テストピラミッド
すべてのテストはリポジトリのルートから実行します。
# 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は無効になりません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。