# Neon MCP server

Official Neon MCP server for managing Neon projects and Lakebase Postgres databases.

## At a glance

Neon is an MCP server in the Databases & Storage category. It is hosted remotely and connects over HTTP, and needs Authorization. It exposes 65 tools, including projects, branches and endpoints. It scores A (93/100) on the MCP Skills Hub health score as of Oct 28, 2026.

## Install

### How to install Neon in Claude Code

1. Add the server

```bash
claude mcp add --transport http neon https://mcp.neon.tech/mcp --header 'Authorization: Bearer <YOUR_TOKEN>'
```

2. Fill in your credentials

   Replace Bearer <YOUR_TOKEN> with your real value. Keep secrets out of any config file you commit.

3. Verify it's connected

```bash
claude mcp list
```

4. Sharing it with your team?

   Add `--scope project` to write it to .mcp.json in the repository root, which you can commit (with the secrets left as environment variables).

5. Use it in a session

   Ask Claude to use the tools this server exposes (e.g. projects, branches, endpoints). It discovers them automatically.

### How to install Neon in Claude Desktop

1. Open your MCP config

   macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json

2. Add this server

```json
{
  "mcpServers": {
    "neon": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.neon.tech/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}
```

3. Fill in your credentials

   Replace Bearer <YOUR_TOKEN> with your real value. Keep secrets out of any config file you commit.

4. Why the wrapper?

   This is a remote (HTTP) server and Claude Desktop only launches local processes, so mcp-remote proxies the connection. It will open a browser window if the server needs OAuth.

5. Restart Claude Desktop

   The tools appear under the 🔌 menu once the app reloads.

### How to install Neon in Cursor

1. Create / edit .cursor/mcp.json in your project

```json
{
  "mcpServers": {
    "neon": {
      "url": "https://mcp.neon.tech/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}
```

2. Fill in your credentials

   Replace Bearer <YOUR_TOKEN> with your real value. Keep secrets out of any config file you commit.

3. Enable it

   Cursor Settings → MCP → toggle the server on. Tools become available to the Composer/Agent.

### How to install Neon in Codex CLI

1. Add to ~/.codex/config.toml

```toml
[mcp_servers.neon]
command = "npx"
args = ["-y", "mcp-remote", "https://mcp.neon.tech/mcp", "--header", "Authorization:${AUTH_HEADER}"]
env = { AUTH_HEADER = "Bearer <YOUR_TOKEN>" }
```

2. Fill in your credentials

   Replace Bearer <YOUR_TOKEN> with your real value. Keep secrets out of any config file you commit.

3. Why the wrapper?

   Codex runs MCP servers as local processes, so mcp-remote bridges this HTTP endpoint to stdio.

4. Run Codex

   Codex loads MCP servers from config.toml on startup and exposes their tools to the agent.

### How to install Neon in Windsurf

1. Edit ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "neon": {
      "serverUrl": "https://mcp.neon.tech/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}
```

2. Fill in your credentials

   Replace Bearer <YOUR_TOKEN> with your real value. Keep secrets out of any config file you commit.

3. Reload

   Windsurf → Cascade → refresh MCP servers. Cascade can now call the tools.

### How to install Neon in Cline

1. Open Cline → MCP Servers → Configure

   Adds to cline_mcp_settings.json.

2. Add the server

```json
{
  "mcpServers": {
    "neon": {
      "type": "streamableHttp",
      "url": "https://mcp.neon.tech/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}
```

3. Fill in your credentials

   Replace Bearer <YOUR_TOKEN> with your real value. Keep secrets out of any config file you commit.

### How to install Neon in VS Code

1. Create .vscode/mcp.json

```json
{
  "servers": {
    "neon": {
      "type": "http",
      "url": "https://mcp.neon.tech/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}
```

2. Fill in your credentials

   Replace Bearer <YOUR_TOKEN> with your real value. Keep secrets out of any config file you commit.

3. Start it

   VS Code shows a ▶ Start action above the server entry. Agent mode (Copilot Chat) can then use the tools.

## Tools

- `projects`
- `branches`
- `endpoints`
- `snapshots`
- `schema`
- `querying`
- `neon_auth`
- `data_api`
- `observability`
- `docs`
- `functions`
- `storage`
- `realtime`
- `list_projects` — Lists Neon projects. `limit` caps how many items come back.
- `describe_project` — Fetches a Neon project by id (`{ "project_id": "…" }`).
- `create_project` — Creates a Neon project and waits for the default compute. Does not return a connection string. Arguments are `{ "name": "…", "org_id": "…", "region_id": "…" }`. Call `get_connection_string` after it succeeds.
- `delete_project` — Deletes an existing Neon project. Arguments are `{ "project_id": "…" }`.
- `list_organizations` — Lists all organizations that the current user has access to. Optionally filter by organization name or ID using the search parameter.
- `list_branches` — Lists branches in a project. Use it to resolve a branch name to a `br-…` id.
- `list_credentials` — , `create_credential`, `revoke_credential`, `rotate_credential`: Branch-scoped credentials for Object Storage and the AI Gateway. `reveal` is not a tool; rotation replaces secrets in place and is not idempotent.
- `create_branch` — Creates a branch with a read-write compute and waits until it is ready. Does not return a connection string. Arguments are `{ "project_id": "…", "name": "feature-x" }`. Pass `no_compute: true` to skip the endpoint. Call `get_connection_stri
- `reset_from_parent` — Resets a branch to its parent's current HEAD (`{ "project_id": "…", "branch_id": "br-…" }`). Discards writes since the branch diverged. `preserve_under_name` is required when the branch has children; those children move to the new branch. P
- `delete_branch` — Deletes a branch (`{ "project_id": "…", "branch_id": "br-…" }`).
- `describe_branch` — Retrieves a tree of databases, schemas, tables, views, and functions on a branch.
- `restore_snapshot` — Restores a snapshot. Pass `target_branch_id` to restore onto an existing branch; omit it to create a new one.
- `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`
- `list_snapshots` — , `get_snapshot_schedule`, `set_snapshot_schedule`, `create_snapshot`, `update_snapshot`, `delete_snapshot`, `restore_snapshot`
- `get_database_tables` — , `describe_table_schema`
- `compare_database_schema` — SQL schema diff of one database against another branch. `database_name` is required. Omitting `base_branch_id` compares against the parent. Optional `lsn`, `timestamp`, `base_lsn`, `base_timestamp` are point-in-time only.
- `get_connection_string` — Returns your database connection string.
- `run_sql` — Executes a single SQL query against a specified Neon database. Supports both read and write operations. Optional `role_name` logs in as that Postgres role instead of the database owner, and `compute_id` picks the compute; credentials stay o
- `run_sql_transaction` — Executes a series of SQL queries within a single transaction against a Neon database. Takes the same optional `role_name` and `compute_id` as `run_sql`.
- `describe_table_schema` — Retrieves the schema definition of a specific table, detailing columns, data types, and constraints.
- `prepare_database_migration` — Initiates a database migration process. Critically, it creates a temporary branch to apply and test the migration safely before affecting the main branch.
- `complete_database_migration` — Finalizes and applies a prepared database migration to the main branch. This action merges changes from the temporary migration branch and cleans up temporary resources.
- `inspect_database` — Runs one of 15 predefined read-only Postgres diagnostics against a branch — relation and index sizes, index and sequential-scan usage, active queries and locks, the heaviest and most frequent queries, cache hit rate and working-set size, au
- `list_slow_queries` — Identifies performance bottlenecks by finding the slowest queries in a database. Requires the pg_stat_statements extension.
- `explain_sql_statement` — Provides detailed execution plans for SQL queries to help identify performance bottlenecks.
- `prepare_query_tuning` — Analyzes query performance and suggests optimizations, like index creation. Creates a temporary branch for safely testing these optimizations.
- `complete_query_tuning` — Finalizes query tuning by either applying optimizations to the main branch or discarding them. Cleans up the temporary tuning branch.
- `provision_neon_auth` — , `get_auth`, `disable_auth`, `update_auth_config`
- `get_neon_auth_config` — host tool; secrets redacted. Use generated Auth write tools to change settings.
- `list_auth_oauth_providers` — , `add_auth_oauth_provider`, `update_auth_oauth_provider`, `delete_auth_oauth_provider`
- `get_auth_oauth_server` — , `update_auth_oauth_server`: Configure Neon Auth as an OAuth 2.1 authorization server (including for MCP servers). Separate from the social login providers above.
- `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`: Manage the OAuth clients of that server. `create_auth_oauth_client` and `rotate_auth_oauth_cli
- `list_auth_trusted_domains` — , `add_auth_trusted_domain`, `delete_auth_trusted_domain`
- `create_auth_user` — , `delete_auth_user`, `update_auth_user_role`
- `provision_neon_data_api` — , `get_data_api`, `update_data_api`, `delete_data_api`: Manage the Data API for a branch database.
- `search` — Searches across organizations, projects, and branches matching a query. Returns IDs, titles, and direct links to the Neon Console.
- `fetch` — Fetches detailed information about a specific organization, project, or branch using an ID (typically from the search tool).
- `send_feedback` — Sends anonymous feedback to the Neon team. Only the feedback text is sent, with no account, project, or connection details. Messages are limited to 10,000 characters.
- `query_logs` — Queries OpenTelemetry logs for a branch. POST in the Management API; treated as read-only by this server.
- `list_log_fields` — Lists the log fields you can enumerate values for on a branch.
- `list_log_field_values` — Lists the distinct values of a log field within a branch and time window.
- `search_docs` — Searches neon.com (docs, API reference, PostgreSQL tutorial, guides, FAQs, changelog, and blog) with the same search as the neon.com search box. Takes `query`, optional `categories` (`docs`, `api`, `postgresql`, `guides`, `faqs`, `blog`, `c
- `get_doc` — Fetches one neon.com page as markdown. Takes `slug` from a `search_docs` hit (for example `docs/guides/prisma` or `postgresql/tutorial/inner-join`).
- `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`: Scheduled function triggers (`type: "schedule"`, five-field UTC cron).
- `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`
- `get_realtime` — , `enable_realtime`, `disable_realtime`: Branch Realtime state, enable (optional `allowed_origins`), and disable. Enable and disable wait until the change is applied.
- `get_realtime_secret` — The shared secret the application backend issues Realtime tokens with. Not available in read-only mode.
- `rotate_realtime_secret` — Replaces the shared secret and waits until the change is applied. Not idempotent. Call `get_realtime_secret` afterwards for the new value.

Source repository: https://github.com/neondatabase/mcp-server-neon

---

Source: https://mcp-skills-hub.vercel.app/mcps/com-neon-mcp · MCP Skills Hub · data as of 2026-10-28T12:31:05Z
