Neon MCP for AI agents
Agents read Neon MCP at once. Changes and sends are held for a person's approval by default.
About Neon MCP
Manage Neon projects, branches, databases, and development workflows.
What an agent can do in Neon MCP
Every Neon MCP action is classed by the platform as a read, a change or a send. Reads run at once. Changes and sends are held for a person by default.
Runs at once (reads)
Looks things up in Neon MCP without asking first. 48 actions.
- Compare database schemaCompare one database's SQL schema on a branch to another. `database_name` is required. Omit `base_branch_id` to compare against the parent; it is a branch id (`br-...`), not a name. Pass `lsn`, `times
- Describe branchGet a tree view of all objects in a branch, including databases, schemas, tables, views, and functions. Do not use when you only need table names (use `get_database_tables` instead) or column detail (
- Describe projectRetrieves the project record (settings, compute, usage). Call `list_branches` for branches.
- Describe table schemaGet column definitions, data types, and constraints for a specific table. Do not use when you need all tables in a database (use `get_database_tables` instead).
- Explain sql statementAnalyze the query execution plan for a SQL statement using EXPLAIN ANALYZE. Do not use when you need to execute the query for results (use `run_sql` instead).
- FetchFetch detailed information about a specific organization, project, or branch using the ID returned by the `search` tool.
- Get ai gatewayReturns the AI Gateway endpoint host for the specified branch, used to render code-snippet base URLs. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Get authRetrieves the Neon Auth integration details for the specified branch, including the auth provider type and integration status. branch_id is a branch id (br-...), not a branch name. Call list_branches
- Get branchRetrieves information about the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Get connection stringGet a PostgreSQL connection string for a Neon database. The branch must have a compute endpoint. `create_project` and `create_branch` do not return one; call this after they succeed. All parameters ar
- Get data apiRetrieves the Neon Data API configuration for the specified branch, including endpoint URL, enabled state, and database settings. branch_id is a branch id (br-...), not a branch name. Call list_branch
- Get database tablesList all tables in a Neon database. Do not use when you need column-level detail for a specific table (use `describe_table_schema` instead).
Show all 48
- Get default branchResolve the project's default branch by the default flag, not by name.
- Get doc resourceFetch one Neon documentation page as markdown. Pass a slug from list_docs_resources (for example docs/guides/prisma.md).
- Get functionReturns the function identified by its slug. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Get neon auth configRead Neon Auth config for a branch with OAuth and SMTP secrets redacted as "***redacted***". Requires provision_neon_auth first.
- Get operationRetrieves details for the specified operation.
- Get postgres databaseRetrieves information about the specified database. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Get postgres endpointRetrieves information about the specified compute endpoint.
- Get postgres roleRetrieves details about the specified role. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Get snapshot scheduleReturns the backup schedule for the specified branch, including the configured snapshot frequencies. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Get storageReturns whether branchable object storage is usable for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Inspect databaseRun one read-only neon inspect db check (pick `check` from the input schema). Not for arbitrary SQL (`run_sql`), one statement's plan (`explain_sql_statement`), or applying indexes (`prepare_query_tun
- List auth oauth providersLists the OAuth providers configured for the specified branch's Neon Auth integration. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- List auth trusted domainsLists the trusted domains in the redirect URI whitelist for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- List branch computesRetrieves a list of compute endpoints for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- List branchesRetrieves a list of branches for the specified project. Returns every page. Pass limit to cap how many.
- List docs resourcesList Neon documentation page slugs from neon.com/docs/llms.txt. Call this before get_doc_resource; do not guess slugs.
- List functionsLists functions on the specified branch. Returns every page. Pass limit to cap how many. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- List functions custom domainsLists all custom domains registered on the branch, across every target entity. Returns every page. Pass limit to cap how many. branch_id is a branch id (br-...), not a branch name. Call list_branches
- List log fieldsLists the low-cardinality log fields observed on this branch. Call `list_log_field_values` with `field_name` to list distinct values. branch_id is a branch id (br-...), not a branch name. Call list_br
- List log field valuesLists distinct values for a low-cardinality log field. Call `list_log_fields` first for `field_name`; a field the branch has never emitted returns `unknown_field`. Pass `since` or `start_time`, not bo
- List operationsLists operations for a project. Omitting `limit` returns every remaining page. There is no `cursor` argument.
- List organizationsList all organizations the current user belongs to. Supports optional `search` parameter to filter by name or ID.
- List postgres databasesRetrieves a list of databases for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- List postgres endpointsRetrieves a list of compute endpoints for the specified project.
- List postgres rolesRetrieves a list of Postgres roles from the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- List project membersLists organization members and their per-project roles for an org-owned project. Returns every page. Pass limit to cap how many.
- List project permissionsRetrieves details about users who have access to the project, including the permission `id`, the granted-to email address, and the date project access was granted.
- List projectsList Neon projects you own. Returns every page. Pass limit to cap how many. There is no `cursor` argument. Pass `org_id` with a personal API key to list that org's projects.
- List regionsLists Neon regions available to the authenticated account.
- List slow queriesList queries from pg_stat_statements by execution time, slowest first. For sizes, indexes, locks, cache, bloat, or replication use inspect_database.
- List snapshotsLists the snapshots for the specified project.
- List storage bucketsLists branchable object storage buckets visible on the specified branch, including those inherited from ancestor branches. branch_id is a branch id (br-...), not a branch name. Call list_branches to r
- List storage objectsLists objects visible in the named bucket on the specified branch, including those inherited from ancestor branches. Returns every page. Pass limit to cap how many. branch_id is a branch id (br-...),
- Prepare query tuningAnalyze a slow query on a temporary branch and return a tuning_id. Apply suggested SQL with run_sql on that branch, re-run explain_sql_statement there, then complete_query_tuning with the tuning_id (n
- Query logsReturns logs for a branch. Pass `limit` to cap how many. There is no `cursor` argument. Filters combine with AND. Pass `logql` instead of structured filters, not with them. Give the window as `since`
- SearchSearch across all organizations, projects, and branches by keyword. Returns matching items with id, title, and URL. Query must be at least 3 characters. Do not use when you need all projects (use `lis
Held for approval by default (changes and sends)
Held for a person's approval by default. The approval is recorded and the action is sent once, never twice, with 10 seconds to undo. 56 actions.
- Add auth oauth providerAdds an OAuth provider configuration to the specified branch's Neon Auth integration. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Add auth trusted domainAdds a domain to the redirect URI whitelist for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Complete database migrationApply or discard a prepared migration and delete the temporary branch. NEVER run autonomously; always ask the user first. Pass migration_id, migration_sql, database_name, project_id, temporary_branch_
- Complete query tuningApply or discard query-tuning changes and delete the temporary branch. NEVER run autonomously. Before calling, apply suggested SQL with run_sql on the temporary branch and re-run explain_sql_statement
- Create auth userCreates a new user in the Neon Auth user directory for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Create branchCreates a branch with a read-write compute and waits until it is ready. Pass `no_compute: true` to skip the endpoint. Does not return a connection string; call `get_connection_string` with the project
- Create postgres databaseCreates a database in the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Create postgres endpointCreates a compute endpoint on a branch. Does not return a connection string; call `get_connection_string`.
- Create postgres roleCreates a Postgres role in the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Create projectCreates a Neon project and waits until the default compute is ready. Pass `org_id` with a personal API key. Does not return a connection string; call `get_connection_string` with the project id.
- Create snapshotCreates a snapshot from the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Create storage bucketCreates a new branchable object storage bucket on the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
Show all 56
- Delete auth oauth providerDeletes an OAuth provider from the specified project. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete auth trusted domainRemoves a domain from the redirect URI whitelist for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete auth userDeletes the specified user from the Neon Auth user directory for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete branchDelete a branch and all its data. NEVER run autonomously; always ask the user first. For the whole project, use `delete_project`. branch_id is a branch id (br-...), not a branch name. Call list_branch
- Delete data apiDeletes the Neon Data API for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete functionDeletes the function identified by its slug. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete functions custom domainRemoves a custom domain registered on the branch and stops routing it. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete postgres databaseDeletes the specified database from the branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete postgres endpointDeletes the specified compute endpoint.
- Delete postgres roleDeletes the specified Postgres role from the branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete projectDelete a Neon project and all its data. NEVER run autonomously; always ask the user first. For a single branch, use `delete_branch`.
- Delete snapshotDeletes the specified snapshot.
- Delete storage bucketDeletes the named bucket from the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete storage objectDeletes the named object from the bucket on the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Delete storage objects by prefixSoft-deletes every object on the specified branch whose key starts with `prefix`, in a single call. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Deploy functionCreates a deployment for the function. Supply at least one of `zip`, `environment`, or `runtime`; omitted fields inherit the latest version. The first deployment must include `zip`. branch_id is a bra
- Disable authDisables the Neon Auth integration for the specified branch, removing the connection to the authentication provider. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve
- Finalize branch restoreFinalize a branch created with `restore_snapshot` and `finalize: false`: reassign computes (this restarts them) and swap names so it replaces the original branch. branch_id is a branch id (br-...), no
- Prepare database migrationApply a schema change on a temporary branch and return a migration_id. Test with run_sql on that branch, ask the user, then complete_database_migration — even if they reject, so the temporary branch i
- Presign storage objectReturns a presigned URL that transfers bytes directly to or from the object's bucket on the specified branch, without the caller ever handling S3 credentials. branch_id is a branch id (br-...), not a
- Provision neon authEnables Neon Auth for the specified branch by connecting it to an authentication provider. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Provision neon data apiCreates a new instance of Neon Data API in the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Recover projectRecovers a deleted project within the 7-day deletion recovery period.
- Register functions custom domainRegisters a hostname on the branch and routes it to a function. Pass `entity_type: "function"` and `entity_id` as the slug from `list_functions`. Point a CNAME at the returned `cname_target`. branch_i
- Reset from parentReset a branch to its parent's current HEAD. Discards every change the branch has written since it diverged. NEVER run autonomously; always ask the user first. `preserve_under_name` saves the current
- Reset postgres role passwordResets the password for the specified Postgres role. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Restart postgres endpointRestarts the specified compute endpoint by immediately suspending it and then starting it again.
- Restore snapshotRestore a snapshot onto a new or existing branch. The call waits until the branch is ready. Pass `target_branch_id` to restore onto an existing branch; omit it to create one. Pass `finalize: false` th
- Run sqlExecute one SQL statement on a Neon database. If a prior step created a temporary branch, pass that branch_id. NEVER run destructive SQL autonomously; always ask the user first.
- Run sql transactionExecute multiple SQL statements as one transaction. If a prior step created a temporary branch, pass that branch_id. NEVER run destructive SQL autonomously; always ask the user first.
- Set default branchSets the specified branch as the project's default branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Set snapshot scheduleReplace a branch's automatic snapshot schedule. Frequency must be daily, weekly, or monthly. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Start postgres endpointStarts a compute endpoint.
- Suspend postgres endpointSuspends the specified compute endpoint.
- Update auth configUpdates the auth configuration for the branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Update auth oauth providerUpdates an OAuth provider for the specified project. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Update auth user roleUpdates the role of a user in the Neon Auth user directory for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Update branchUpdates the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Update data apiUpdates the Neon Data API configuration for the specified branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Update functionUpdates the function's mutable metadata — currently only the display `name`. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Update postgres databaseUpdates the specified database in the branch. branch_id is a branch id (br-...), not a branch name. Call list_branches to resolve a name.
- Update postgres endpointUpdates the specified compute endpoint.
- Update projectUpdates the specified project.
- Update snapshotUpdates the specified snapshot.
Changes wait in Needs you
Changes and sends in Neon MCP are held for a person's approval by default. The approval is recorded, and the action is sent once, never twice, with 10 seconds to undo.
Neon MCP questions
Can an agent change data in Neon MCP on its own?
Not by default. Changes and sends in Neon MCP are held for a person's approval. The approval is recorded, and the action is sent once, never twice, with 10 seconds to undo.
What can an agent read in Neon MCP?
This connector lists 48 read actions. Reads run at once, without waiting for approval.
How does Neon MCP connect?
It connects with dcr oauth. Connectors are built and maintained by third-party developers; availability is confirmed during scoping.