Skip to main content

Python port of the official Netlify MCP server: manage Netlify projects, deploys, teams, extensions, and env vars from an MCP-compatible agent.

Project description

netlify-mcp (Python)

A Python port of the official Netlify MCP server, built to behave identically to the TypeScript original for the local stdio use case: same tool names, same input schemas, same response text.

This port targets the local stdio server only. Two things in the original are intentionally out of scope:

  • The remote proxy deploy mode (--proxy-path / JWE flow), used when the MCP server runs behind Netlify's hosted remote endpoint.
  • The full remote OAuth/OIDC hosting server.

Everything else is ported: the user, team, project, deploy, and extension domain tool groups, the netlify-coding-rules context tool, and the Claude Design "Send to Netlify" import tools (import-claude-design-from-url, get-design-import-job-status).


Requirements

  • Python 3.12+
  • A Netlify account, authenticated via one of:
    • netlify login (using the Netlify CLI) — this server reads the same config.json the CLI writes.
    • The NETLIFY_PERSONAL_ACCESS_TOKEN environment variable, which overrides the CLI-managed token when set.

Install and run

uv sync
uv run netlify-mcp

Or, for one tool per operation instead of the grouped read/write selector tools:

uv run netlify-mcp --verbose

MCP client configuration

{
  "mcpServers": {
    "netlify": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/python-netlify-mcp", "netlify-mcp"]
    }
  }
}

Tools

By default, each domain exposes two selector tools: netlify-<domain>-services-reader (read-only operations) and netlify-<domain>-services-updater (write operations). Each selector takes a selectSchema of {operation, params} covering every operation listed below for that domain. Pass --verbose to instead register one tool per operation, named netlify-<domain>-<operation>.

user

Operation Read-only Description
get-user Yes Get the current authenticated Netlify user's account details.

team

Operation Read-only Description
get-teams Yes List the Netlify teams (accounts) the user belongs to.
get-team Yes Get details for a specific Netlify team.

project

Operation Read-only Description
get-project Yes Get details for a specific Netlify project.
get-projects Yes List Netlify projects, optionally filtered by team or name.
get-forms-for-project Yes List (or fetch one) Netlify Forms form(s) configured for a project.
update-visitor-access-controls No Configure SSO or password-based visitor access control for a project.
update-forms No Enable or disable Netlify Forms processing for a project.
manage-form-submissions No Get or delete form submissions for a project.
update-project-name No Rename a Netlify project.
manage-env-vars No Get, create/update, or delete environment variables for a project.
create-new-project No Create a new Netlify project.

deploy

Operation Read-only Description
get-deploy Yes Get a deploy by id.
get-deploy-for-site Yes Get a specific deploy for a given project.
deploy-site No Zip up a local directory and deploy it to a Netlify project.

extension

Operation Read-only Description
get-extensions Yes List extensions available to any Netlify team.
get-full-extension-details Yes Get full details for a specific extension on a team.
change-extension-installation No Install or uninstall an extension for a team (and optionally a site).
initialize-database No Return setup instructions for the @netlify/database package.

Standalone tools

These are registered individually, not as part of a domain's reader/updater selector, and are unaffected by --verbose.

Tool Read-only Description
netlify-coding-rules Yes Context tool that must be called before writing any serverless or Netlify SDK/library code.
import-claude-design-from-url No Deploy a Claude Design export to Netlify as a new project ("Send to Netlify").
get-design-import-job-status Yes Check the status of an in-progress Claude Design import deploy job.

Configuration

Environment variables (see .env.example):

Variable Description
NETLIFY_PERSONAL_ACCESS_TOKEN Optional. Skips the CLI-managed token lookup when set.
LOG_LEVEL Logging level (default INFO).

Development

uv sync --group dev
uv run pytest
uv run ruff check .
uv run mypy src

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netlify_mcp-1.0.0.tar.gz (32.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

netlify_mcp-1.0.0-py3-none-any.whl (52.4 kB view details)

Uploaded Python 3

File details

Details for the file netlify_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: netlify_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 32.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for netlify_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d2013d7a6624d21fa6f8531c94770a013423f8790c9290be54ac0d3beaf9f11b
MD5 2dd512ac1808bb617a6478c7cdd3036f
BLAKE2b-256 40c1bb1646855cc40e982550cc4c06259a68ed2b128e671cd4a13c2ab3bef927

See more details on using hashes here.

Provenance

The following attestation bundles were made for netlify_mcp-1.0.0.tar.gz:

Publisher: pypi-publish.yml on locomotive-agency/netlify-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file netlify_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: netlify_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 52.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for netlify_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24ce309b01937c40bef80f1ca14337996d6ad01883ad47aa81b0f130a2bd03f5
MD5 502b04e38d6dedfb94f8268c04954cc8
BLAKE2b-256 c4bb1ea9147415fd77d5a8c15451da37f7e630cf1003c5ea8058ea7f0692238a

See more details on using hashes here.

Provenance

The following attestation bundles were made for netlify_mcp-1.0.0-py3-none-any.whl:

Publisher: pypi-publish.yml on locomotive-agency/netlify-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page