100+ integrations are ready to connect to your AI.Connect your first MCP

Netlify MCP server for your AI

Publish files as a preview or to the live site, put back the last good deploy, find out why a build failed, set an environment variable and read new form submissions, all on the team you connect.

PopMCPNetlify

Which of my sites had a failed deploy this week, and what went wrong each time?

Supported Netlify tools

Every operation in Netlify's public API a team member's token can call, from sites, deploys and builds to forms, DNS, split tests, add-ons, databases and agent runs, with the everyday tools loaded by default and the rest one search away.

171 tools in the full catalog: 76 read and 95 write. 35 load by default, and the rest are found with tool search.

netlify_cancel_deploy

Cancel a deploy that is still building or uploading.

netlify_deploy_files

Publish files to a Netlify site in one call: give each file's path and content (text, or base64 for images and other binary files).

netlify_get_deploy

Get a deploy.

netlify_list_site_deploys

List a site's deploys.

netlify_lock_deploy

Lock a deploy: it stays (or becomes) the published deploy, and later deploys still build but are not published until netlify_unlock_deploy (stops auto publishing).

netlify_restore_deploy

Publish an earlier deploy of a site (roll back to that exact deploy).

netlify_rollback_site

Roll the production site back to the deploy before the current one.

netlify_unlock_deploy

Unlock a locked deploy so new deploys publish automatically again.

netlify_wait_for_deploy

Wait until a deploy finishes (ready, error or rejected), checking every few seconds for up to timeout_seconds (default 40, max 50).

netlify_create_dns_record

Create a DNS record.

netlify_delete_dns_record

Delete a DNS record.

netlify_list_dns_records

List a DNS zone's records.

netlify_list_dns_zones

List the connected team's DNS zones (domains whose DNS Netlify hosts).

netlify_create_site

Create a site in the connected team.

netlify_delete_env_var

Delete an environment variable.

netlify_get_site

Get one site: name, urls, custom domain and aliases, the published deploy, build settings and the linked repository.

netlify_list_site_env_vars

List a site's environment variables.

netlify_list_sites

List the connected team's sites (Netlify now calls sites projects).

netlify_reveal_secret

Show a secret value that other Netlify tools hide: an environment variable's values (kind env_var, with key and usually site_id), a site database connection string (kind database, or database_branch with branch_id), or an AI Gateway token.

netlify_set_env_var

Create or update ONE environment variable, the right Netlify call either way.

netlify_site_overview

Everything about one site in one call: its name, URLs, custom domain, linked repository and build settings, the published deploy, the latest deploys (state, branch, time, error) and its forms with submission counts.

netlify_update_site

Update a site.

netlify_create_notification_hook

Create an outgoing hook.

netlify_list_notification_hooks

List a site's outgoing hooks.

netlify_delete_submission

Delete a form submission.

netlify_list_form_submissions

List a form's submissions.

netlify_list_site_submissions

List a site's form submissions.

netlify_create_site_build_hook

Create a build hook.

netlify_list_site_build_hooks

List a site's build hooks.

netlify_list_team_members

List a team's members.

netlify_start_site_build

Start a build of the site from its linked repository (the same as Trigger deploy in the Netlify UI).

netlify_provision_site_tls_certificate

Provision or update a site's TLS certificate.

netlify_list_site_forms

List a site's forms.

netlify_list_site_functions

Search a site's functions.

netlify_purge_cache

Purge Netlify's CDN cache for a site: everything, or only the responses tagged with cache_tags (Cache-Tag headers).

netlify_clear_site_database_compute_settings

Reset database compute settings to defaults.

netlify_create_site_database

Create a site database.

netlify_create_site_database_branch

Create a database branch.

netlify_create_site_database_snapshot

Create a database snapshot.

netlify_delete_site_database

Delete a site database.

netlify_delete_site_database_branch

Delete a database branch.

netlify_delete_site_database_snapshot

Delete a database snapshot.

netlify_get_site_database

Get the site's Netlify Database.

netlify_get_site_database_branch

Get one database branch.

netlify_get_site_database_compute_settings

Get database compute settings.

netlify_get_site_database_migration

Get a database migration.

netlify_list_site_database_branches

List database branches.

netlify_list_site_database_migrations

List database migrations.

netlify_list_site_database_snapshots

List database snapshots.

netlify_reset_site_database_branch

Reset a database branch.

netlify_restore_site_database_snapshot

Restore a database snapshot.

netlify_run_site_database_migrations

Run database migrations for a deploy.

netlify_set_site_database_branch_compute_settings

Set a database branch's compute settings.

netlify_set_site_database_compute_settings

Set database compute settings.

netlify_answer_agent_run_session

Answer an agent run session's pending interaction.

netlify_archive_agent_run

Archive an agent run.

netlify_delete_agent_run

Same as netlify_stop_agent_run (Netlify's alias): stops the run's active session.

netlify_delete_agent_run_session

Same as netlify_stop_agent_run_session (Netlify's alias): stops the session.

netlify_get_agent_run

Get an agent run.

netlify_get_agent_run_diff

Get an agent run's diff.

netlify_get_agent_run_session

Get an agent run session.

netlify_list_agent_run_sessions

List an agent run's sessions.

netlify_list_agent_runs

List a site's agent runs.

netlify_start_agent_run

Start an agent run.

netlify_start_agent_run_session

Start a follow-up agent run session.

netlify_start_site_agent_run

Start an agent run on a site.

netlify_stop_agent_run

Stop an agent run.

netlify_stop_agent_run_session

Stop an agent run session.

netlify_update_agent_run

Update an agent run.

netlify_update_agent_run_session

Update an agent run session.

netlify_create_site_deploy

Create a deploy.

netlify_delete_deploy

Delete a deploy.

netlify_delete_site_deploy

Delete a site's deploy.

netlify_get_site_deploy

Get a site's deploy.

netlify_list_site_deployed_branches

List a site's deployed branches.

netlify_update_site_deploy

Update a deploy.

netlify_configure_site_dns

Configure a site's DNS.

netlify_create_dns_zone

Create a DNS zone.

netlify_delete_dns_zone

Delete a DNS zone.

netlify_get_dns_record

Get a DNS record.

netlify_get_dns_zone

Get a DNS zone.

netlify_get_site_dns

Get the DNS zones serving a site's custom domains, with their records and Netlify name servers.

netlify_transfer_dns_zone

Transfer a DNS zone to another team.

netlify_create_env_vars

Create environment variables.

netlify_delete_env_var_value

Delete an environment variable value.

netlify_delete_site

Delete a site with all its deploys, forms and settings.

netlify_disable_site

Disable a site.

netlify_enable_site

Enable a site.

netlify_get_env_var

Get one environment variable by key: scopes, is_secret and its values per context.

netlify_list_accessible_sites

List every site this login can open, filtered to the connected team.

netlify_list_env_vars

List environment variables.

netlify_set_env_var_value

Set a value on an environment variable.

netlify_unlink_site_repo

Unlink a site's repository.

netlify_update_env_var

Update an environment variable.

netlify_create_site_addon

Create an add-on instance.

netlify_delete_site_addon

Delete an add-on instance.

netlify_get_addon_service

Get an add-on service.

netlify_get_addon_service_manifest

Get an add-on service's manifest.

netlify_get_site_addon

Get an add-on instance.

netlify_list_addon_services

List add-on services.

netlify_list_site_addons

List a site's add-on instances.

netlify_update_site_addon

Update an add-on instance.

netlify_delete_notification_hook

Delete an outgoing hook.

netlify_enable_notification_hook

Re-enable an outgoing hook.

netlify_get_notification_hook

Get an outgoing hook.

netlify_list_notification_hook_types

List outgoing hook types.

netlify_update_notification_hook

Update an outgoing hook.

netlify_cancel_team

Cancel (delete) the connected team.

netlify_create_site_asset

Create a site asset.

netlify_create_split_test

Create a split test.

netlify_create_team

Create a new Netlify team.

netlify_delete_site_asset

Delete a site asset.

netlify_get_site_asset

Get a site asset.

netlify_get_site_asset_url

Get a site asset's URL.

netlify_get_split_test

Get a split test.

netlify_get_submission

Get one form submission by id (Netlify answers with an one-item list).

netlify_get_team

Get the connected team: name, slug, plan (type_name), billing details, capabilities and owners.

netlify_list_site_assets

List a site's assets.

netlify_list_split_tests

List a site's split tests.

netlify_list_team_plans

List plans available for new teams.

netlify_list_teams

The connected team (this connection is pinned to one Netlify team; other teams of the same login are not shown).

netlify_mark_submission_spam

Mark a form submission as spam.

netlify_mark_submission_verified

Mark a form submission as verified (not spam).

netlify_publish_split_test

Publish a split test.

netlify_unpublish_split_test

Unpublish a split test.

netlify_update_site_asset

Update a site asset's state.

netlify_update_split_test

Update a split test.

netlify_update_team

Update the connected team's name, slug, billing details or plan.

netlify_add_team_member

Add a member to a team.

netlify_create_site_dev_server_hook

Create a dev server hook.

netlify_create_site_snippet

Create a snippet.

netlify_delete_site_build_hook

Delete a build hook.

netlify_delete_site_dev_server_hook

Delete a dev server hook.

netlify_delete_site_snippet

Delete a snippet.

netlify_get_site_build_hook

Get a build hook.

netlify_get_site_dev_server

Get a dev server.

netlify_get_site_dev_server_hook

Get a dev server hook.

netlify_get_site_snippet

Get a snippet.

netlify_get_team_member

Get a team member.

netlify_list_site_dev_server_hooks

List a site's dev server hooks.

netlify_list_site_dev_servers

List a site's dev servers.

netlify_list_site_snippets

List a site's snippets.

netlify_remove_team_member

Remove a team member.

netlify_start_site_dev_server

Start a dev server.

netlify_stop_site_dev_servers

Stop a branch's dev servers.

netlify_update_site_build_hook

Update a build hook.

netlify_update_site_dev_server_hook

Update a dev server hook.

netlify_update_site_dev_server_state

Update a dev server's state.

netlify_update_site_snippet

Update a snippet.

netlify_update_team_member

Update a team member.

netlify_create_deploy_key

Create a deploy key.

netlify_delete_deploy_key

Delete a deploy key.

netlify_get_build

Get a build.

netlify_get_deploy_key

Get a deploy key.

netlify_get_team_build_status

Get a team's build status.

netlify_list_deploy_keys

List deploy keys.

netlify_list_site_builds

List a site's builds.

netlify_get_site_ai_gateway_token

Get a site's AI Gateway token.

netlify_get_site_file

Get one file of the site's current deploy by its path.

netlify_get_site_tls_certificate

Get a site's TLS certificate.

netlify_get_team_ai_gateway_token

Get the team's AI Gateway token.

netlify_list_ai_gateway_providers

List AI Gateway providers and models.

netlify_list_site_files

List the files of the site's current deploy.

netlify_list_site_tls_certificates

List TLS certificates for a site's domain.

netlify_upload_deploy_file

Upload one file of a deploy created with netlify_create_site_deploy (only the files its required list asks for).

netlify_delete_site_form

Delete a form.

netlify_get_site_metadata

Get a site's metadata.

netlify_update_site_metadata

Update a site's metadata.

netlify_get_current_user

Get the current user.

netlify_list_payment_methods

List the payment methods on file for this login (card brand, last four digits, expiry).

netlify_list_team_audit_log

List a team's audit log events.

Connect Netlify to Claude, ChatGPT and Claude Code

Credentials off one Netlify screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.

In Netlify open User settings, Applications, Personal access tokens and choose New access token. Name it, pick an expiry and copy it into PopMCP. If your login belongs to several teams, you pick the team each connection is for, and PopMCP locks the connection to it.

Personal access token••••••••••••3f7a
ConnectionVerified

Then just ask for the work

  • “Which of my sites had a failed deploy this week, and what went wrong each time?”

    • list_sites
    • list_site_deploys
  • “Publish this landing page as a preview on my marketing site and give me the link”

    • deploy_files
  • “The last deploy of shop.example.com broke checkout: put the previous one back live”

    • list_site_deploys
    • restore_deploy
  • “Set STRIPE_PUBLIC_KEY for production on my storefront site, rebuild it and tell me when it is live”

    • set_env_var
    • start_site_build
    • wait_for_deploy
  • “Show this week's contact form submissions on my agency site and delete the spam ones”

    • list_site_forms
    • list_form_submissions
    • delete_submission
  • “Point docs.example.com at my docs site with a CNAME record”

    • list_dns_zones
    • create_dns_record

Use Netlify from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Netlify MCP server questions

What teams ask before putting Netlify behind an AI client.

What does PopMCP need to connect Netlify?

A Netlify personal access token. In Netlify click your avatar, then User settings, Applications, Personal access tokens, New access token. Give it a name, choose when it expires and select Generate token. Netlify shows the token once, so copy it straight into PopMCP. If your team uses SAML single sign-on, tick Allow access to my SAML-based Netlify team when you create it. Resetting your Netlify password cancels every token, so you would connect again with a new one.

Can I connect more than one Netlify team?

Yes. After the token is checked PopMCP lists every team your login belongs to and you choose which ones to connect, each into its own PopMCP workspace. A connection stays bound to the team you picked: the AI never has to name it, and a site, deploy, form or DNS zone that belongs to another team is refused before anything is sent.

Can the AI see my environment variable values?

Not by default. Every answer shows the variable names, contexts and scopes but hides the values, along with database connection strings, AI Gateway tokens and the site password. reveal_secret shows one value when you ask, and only on a connection allowed to make changes. Variables you mark secret in Netlify are write-only for everyone, so only their local development value can be read back.

Can the AI publish a site for me?

Yes. deploy_files takes the files' paths and contents (text, or base64 for images), uploads only the ones Netlify does not already have and waits until the deploy is ready. It makes a preview at its own URL unless you ask for production, which replaces the live site. A deploy holds up to 500 files and 25 MB. Sites linked to a Git repository rebuild with start_site_build, and restore_deploy puts any earlier deploy back live.

Which Netlify events can PopMCP watch?

14 of them. Through a notification hook PopMCP registers with the connection's own token: a deploy started, succeeded or failed, a deploy locked or unlocked, a deploy request pending, approved or rejected, and a new form submission. By comparing snapshots: a new site, a new form, a new DNS zone, a new team member and a new audit log event.

How many Netlify tools load into my AI client?

35 load by default, five of them one-call tools for publishing files, waiting for a deploy, a site overview, setting an environment variable and revealing a secret. The rest of the 166 operations stay searchable, from split tests, snippets and add-ons to dev servers, databases, agent runs and deploy keys: 74 read and 92 write. A read-only connection keeps every write tool from running.

Do I have to run or host the Netlify MCP server myself?

No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.

How do I connect Netlify to Claude Code?

Connect Netlify in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Netlify on the consent screen. The Netlify tools are then available in that session, and no Netlify credential is stored on your machine.

Why do only 35 of the 171 tools load by default?

Loading 171 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 35-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.

What is the difference between a tool and a trigger?

A tool is something your AI calls, and there are 171 here. A trigger is something PopMCP watches for you: 14 Netlify events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Netlify.

Connect Netlify to your AI in minutes

Launch a hosted MCP endpoint for Netlify, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP