Netlify MCP Server

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Provides comprehensive tools for working with Netlify through their CLI, enabling deploying sites, managing deployments, handling environment variables, DNS settings, serverless functions, forms, plugins, and webhooks.

Netlify MCP 服务器

模型上下文协议 (MCP) 服务器,提供通过 Netlify CLI 与 Netlify 交互的工具和资源。该服务器支持部署站点、管理环境变量、构建等功能,并与 Netlify CLI v19.1.5 兼容。

最近更改(2025 年 4 月 8 日)

  • **兼容性更新:**已验证工具与 Netlify CLI v19.1.5 的兼容性。
  • **移除了不支持的工具/资源:**移除了与不可用的 CLI 命令组相关的功能: dnsformspluginshooksdeploys 。诸如functions:deletefunctions:invokesites:get特定命令也被移除,因为它们不可用或与通过 MCP 服务器进行非交互式使用不兼容。
  • **站点上下文解决方法:**更新需要站点上下文的工具(如env:*logs:functionbuildtrigger-build )以通过NETLIFY_SITE_ID环境变量传递siteId ,因为此 CLI 版本中的这些命令不支持--site标志。

功能(兼容 Netlify CLI v19.1.5)

  • 部署和管理站点( deploy-sitebuild-sitetrigger-buildlink-siteunlink-siteget-statuscreate-sitedelete-site
  • 管理环境变量( set-env-varsget-env-varunset-env-varimport-envclone-env-vars
  • 获取函数日志( get-logs
  • 通过资源访问站点数据( list-siteslist-functionslist-env-vars
  • 全面的错误处理
  • 使用 Zod 进行类型安全参数验证

安装

通过 Smithery 安装

要通过Smithery自动为 Claude Desktop 安装 Netlify MCP 服务器:

npx -y @smithery/cli install @DynamicEndpoints/Netlify-MCP-Server --client claude

手动安装

  1. 克隆存储库(如果尚未完成)。
  2. 安装依赖项:
    npm install
  3. 构建服务器:
    npm run build
  4. 确保已安装 Netlify CLI(v19.1.5 或兼容):
    # Example global install: npm install -g netlify-cli@19.1.5

验证

此 MCP 服务器与 Netlify CLI 交互,需要使用您的 Netlify 帐户进行身份验证。由于服务器以非交互方式运行,因此您必须使用个人访问令牌 (PAT)

  1. 生成 PAT:
    • 转到您的 Netlify 用户设置 > 应用程序 > 个人访问令牌(直接链接)。
    • 选择**“新建访问令牌”**
    • 给出其描述(例如“MCP 服务器令牌”)。
    • 设置到期日期。
    • 选择生成令牌
    • 立即复制令牌并安全存储。
  2. **配置令牌:**您需要将此令牌作为NETLIFY_AUTH_TOKEN环境变量提供给 MCP 服务器。请将其添加到 MCP 设置文件中服务器配置的env部分(见下文)。

**注意:**使用netlify login适合此服务器,因为它需要交互式浏览器身份验证。

配置

将以下配置添加到您的 MCP 设置文件(位置因平台而异),将"YOUR_NETLIFY_PAT_HERE"替换为您的实际个人访问令牌:

{ "mcpServers": { "netlify": { "command": "node", "args": ["/path/to/Netlify-MCP-Server/build/index.js"], // Adjust path if needed "env": { "NETLIFY_AUTH_TOKEN": "YOUR_NETLIFY_PAT_HERE" }, "disabled": false, "autoApprove": [] } } }

/path/to/Netlify-MCP-Server替换为您克隆/安装服务器的实际路径。

设置文件位置:

  • Claude 桌面(macOS): ~/Library/Application Support/Claude/claude_desktop_config.json
  • Cline Dev 扩展(VS 代码): /home/user/.codeoss-cloudworkstations/data/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json /.codeoss-cloudworkstations/data/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json(或基于 OS/设置的类似文件)
  • 请参阅您的特定 MCP 客户端文档以了解其他潜在位置。

可用工具(兼容 Netlify CLI v19.1.5)

(参数基于src/index.ts中定义的 Zod 模式)

站点和部署管理

部署站点

将站点目录部署到 Netlify。

{ "path": "string", // Required: Path to the site directory "prod": "boolean?", // Optional: Deploy to production "message": "string?" // Optional: Deploy message }

例子:

{ "path": "./dist", "prod": true, "message": "Deploying latest changes" }

列表站点

列出链接到您帐户的所有 Netlify 网站。

{} // No parameters

例子:

{}

触发构建

触发站点的新构建/部署。站点上下文通过NETLIFY_SITE_ID环境变量传递。

{ "siteId": "string", // Required: Site ID or name "message": "string?" // Optional: Deploy message }

例子:

{ "siteId": "your-site-id-here", "message": "Triggering rebuild" }

构建站点

在本地运行 Netlify 构建(模拟 Netlify 构建环境)。如果提供了siteId ,则站点上下文通过NETLIFY_SITE_ID环境变量传递。

{ "siteId": "string?", // Optional: Site ID (if project dir not linked) "context": "string?", // Optional: Build context (e.g., 'production', 'deploy-preview') "dry": "boolean?" // Optional: Run a dry build (list steps without executing) }

例子:

{ "siteId": "your-site-id-here", "context": "production" }

链接站点

将当前项目目录链接到 Netlify 站点(非交互式使用需要站点 ID)。

{ "siteId": "string" // Required: Site ID to link to. }

例子:

{ "siteId": "your-site-id-here" }

取消链接网站

取消当前项目目录与关联的 Netlify 站点的链接。

{} // No parameters

例子:

{}

获取状态

显示链接站点/目录的 Netlify 状态。(如果通过 MCP 服务器运行,可能会失败,除非服务器目录本身已链接)。

{} // No parameters

例子:

{}

创建站点

在 Netlify 上创建一个新站点(非交互式)。

{ "name": "string?", // Optional: Site name (subdomain) "accountSlug": "string?" // Optional: Account slug for the team (defaults to 'playhousehosting' if omitted) }

例子:

{ "name": "my-awesome-new-site" }

删除站点

从 Netlify 中删除一个站点。

{ "siteId": "string", // Required: Site ID to delete "force": "boolean?" // Optional: Force deletion without confirmation (default: true) }

例子:

{ "siteId": "site-id-to-delete", "force": true }

环境变量管理

设置环境变量

为站点设置一个或多个环境变量。站点上下文通过NETLIFY_SITE_ID环境变量传递。

{ "siteId": "string", // Required: Site ID or name "envVars": { // Required: Object of key-value pairs "KEY": "value" } }

例子:

{ "siteId": "your-site-id-here", "envVars": { "API_KEY": "secret123", "NODE_ENV": "production" } }

获取环境变量

获取特定环境变量的值。如果提供了siteId ,则站点上下文通过NETLIFY_SITE_ID环境变量传递。

{ "siteId": "string?", // Optional: Site ID (if not linked) "key": "string", // Required: The environment variable key "context": "string?", // Optional: Specific context (e.g., 'production') "scope": "string?" // Optional: Specific scope (e.g., 'builds', 'functions') }

例子:

{ "siteId": "your-site-id-here", "key": "API_KEY" }

取消设置环境变量

取消设置(删除)环境变量。如果提供了siteId ,则站点上下文通过NETLIFY_SITE_ID环境变量传递。

{ "siteId": "string?", // Optional: Site ID (if not linked) "key": "string", // Required: The environment variable key "context": "string?" // Optional: Specific context to unset from (otherwise all) }

例子:

{ "siteId": "your-site-id-here", "key": "OLD_VAR" }

导入环境

.env文件导入环境变量。站点上下文通过NETLIFY_SITE_ID环境变量传递。

{ "siteId": "string", // Required: Site ID or name "filePath": "string", // Required: Path to the .env file "replace": "boolean?" // Optional: Replace existing variables instead of merging }

例子:

{ "siteId": "your-site-id-here", "filePath": ".env.production", "replace": true }

克隆环境变量

将环境变量从一个站点克隆到另一个站点。需要链接或通过NETLIFY_SITE_ID指定源站点。

{ "fromSiteId": "string", // Required: Source Site ID "toSiteId": "string" // Required: Destination Site ID }

例子:

{ "fromSiteId": "source-site-id", "toSiteId": "destination-site-id" }

无服务器函数

获取日志

查看函数日志。站点上下文通过NETLIFY_SITE_ID环境变量传递。

{ "siteId": "string", // Required: Site ID or name "function": "string?" // Optional: Specific function name to filter logs }

例子:

{ "siteId": "your-site-id-here", "function": "my-serverless-func" }

可用资源(兼容 Netlify CLI v19.1.5)

使用这些资源 URI 直接访问 Netlify 数据:

  • netlify://sites :列出所有站点( sites:list --json的 JSON 输出)
  • netlify://sites/{siteId}/functions :列出站点的功能( functions:list --json的 JSON 输出,需要NETLIFY_SITE_ID={siteId}环境变量)
  • netlify://sites/{siteId}/env :列出站点的环境变量( env:list --json的 JSON 输出,需要NETLIFY_SITE_ID={siteId}环境变量)

限制(Netlify CLI v19.1.5)

  • **交互式命令:**此服务器不支持需要交互式提示的命令(例如netlify loginnetlify initnetlify dev )。请使用个人访问令牌进行身份验证。
  • **站点上下文:**许多命令( env:*logs:functionbuildtrigger-buildfunctions:list )都需要站点上下文。执行这些命令时,此服务器会通过NETLIFY_SITE_ID环境变量传递所需的siteIdunlinkstatus会作用于服务器的当前工作目录,而该目录通常未链接,因此通过 MCP 服务器调用时可能无法按预期运行。
  • **不支持的命令:**由于与 CLI v19.1.5 不兼容,与 DNS、表单、插件、钩子和部署(列出特定部署、获取部署状态)相关的功能已被删除。

发展

修改服务器:

  1. 更新src/index.ts中的源代码。
  2. 使用npm run build进行构建。
  3. 在客户端应用程序中重新启动 MCP 服务器以加载更改。
  4. 测试您的更改。

资源

ID: rmzusviqom