Table of Contents
How to Connect Zapier MCP to Cursor, Claude Code, and Windsurf (May 2026)
One JSON config entry. That's the entire setup cost to put Zapier's 30,000+ actions inside your AI coding client. Drop the right block into .cursor/mcp.json, .claude/settings.json, or ~/.codeium/windsurf/mcp_config.json, paste your server URL, and Cursor or Windsurf can create a Jira issue the moment you ask it to. This guide covers the exact JSON for each client, the five actions worth enabling on day one, and the per-call pricing so you don't burn through your task quota by accident.
If you're new to the Model Context Protocol, start there first. The rest of this guide assumes you know what an MCP server is and you just want it running.
What Zapier MCP does and why it belongs in your AI coding client
MCP turns Zapier's 30,000+ actions into callable tools inside your AI
Zapier MCP exposes your configured Zapier actions as discrete tools that any MCP-compatible client can call. Each tool maps to one Zapier action: "Create Slack Message," "Create Jira Issue," "Update Google Sheets Row." Prompt Cursor with "log this bug as a Jira issue," and the issue appears in your board seconds later.
Nine thousand apps in scope. Pick five to ten your team uses every sprint and scope the server to those. Everything else stays off.
What an AI tool call through Zapier actually looks like
The flow is three hops: you type a prompt, Cursor calls the Zapier MCP tool via SSE, and Zapier executes the action in the connected app. Round-trip is roughly 2-5 seconds. The SSE transport keeps the connection open so repeated calls in the same session don't re-handshake.
API Key auth vs. OAuth: which path applies to you
For solo developers and small teams, use API Key auth. You generate a server URL at mcp.zapier.com, paste it into your config file, and done. The URL is the credential. Keep it out of version control.
OAuth is for products where end users connect their own Zapier accounts. That's an integration-builder use case. For personal Cursor or Windsurf setup, API Key is the right path.
Step 1 - Create your Zapier MCP server and get the URL
Generate your API Key server at mcp.zapier.com
Go to mcp.zapier.com, create a new MCP server, and select "API Key" as the auth method. Zapier generates a unique SSE endpoint:
https://actions.zapier.com/mcp/YOUR_MCP_KEY/sse
Copy that URL. The YOUR_MCP_KEY segment is your credential. Don't commit it to a repo; rotate it from mcp.zapier.com if it leaks.
Select your client to get client-specific setup instructions
Zapier's docs cover Cursor, Windsurf, and Claude Desktop separately because Windsurf uses "serverUrl" where every other client uses "url". That one-word difference causes a silent failure where the server shows as connected but tools never load. The next three sections have the exact JSON for each client.
Step 2 - Add the Zapier MCP config to Cursor
Where Cursor stores MCP config (.cursor/mcp.json)
Cursor reads MCP configuration from .cursor/mcp.json in your project root. If the file doesn't exist, create it. One config file covers all MCP servers for that project. You can also add servers globally via the Cursor settings UI: press Shift+Cmd+J, navigate to the MCP tab, and click "Add MCP Server." Both paths write to the same JSON structure.
Cursor v0.46 or newer is required for MCP support. Check your version under Cursor > About Cursor before proceeding.
The exact JSON to paste for API Key auth
{
"mcpServers": {
"Zapier MCP": {
"url": "https://actions.zapier.com/mcp/YOUR_MCP_KEY/sse"
}
}
}
Config format per Zapier's Cursor docs (May 2026). Replace YOUR_MCP_KEY with the key from your mcp.zapier.com dashboard.
If you already have other MCP servers configured, add the "Zapier MCP" block inside the existing "mcpServers" object rather than creating a new top-level key.
How to verify the connection inside Cursor chat
After saving the config file, restart Cursor or reload the window with Cmd+Shift+P > Developer: Reload Window. Open a new chat and type:
List the available MCP tools
Cursor should return a list that includes the Zapier actions you've enabled. If it returns nothing, check that the JSON is valid (no trailing commas), the URL is correct, and Cursor is version 0.46 or newer.
Tested scenario: Create a Slack message from Cursor chat
Input: "Send a Slack message to #dev-alerts saying deployment started"
Command path: Cursor chat calls Zapier MCP > Create Slack Message tool
Expected output:
Tool call: Create Slack Message
Status: success
Message sent to #dev-alerts
The message appears in the channel within 2-3 seconds. Zapier logs the task under your account at zapier.com/app/history.
Step 3 - Add the Zapier MCP config to Claude Code
Which config file Claude Code reads
Claude Code supports two config locations. The standard path is claude_desktop_config.json (same format as Claude Desktop). Claude Code also reads .claude/settings.json in the project root if you prefer a project-scoped config. Both use the same "mcpServers" key structure.
For a team setup where everyone on the project should have access to the same MCP servers, .claude/settings.json committed to the repo (with the actual key stored in an env variable or secrets manager, not hard-coded) is the cleaner approach.
The exact JSON to paste
{
"mcpServers": {
"Zapier MCP": {
"url": "https://actions.zapier.com/mcp/YOUR_MCP_KEY/sse"
}
}
}
Config format per Zapier's Claude Code docs (May 2026). Same "url" key as Cursor.
For a project-scoped config in .claude/settings.json, the full file structure looks like this:
{
"mcpServers": {
"Zapier MCP": {
"url": "https://actions.zapier.com/mcp/<YOUR_MCP_KEY>/sse"
}
}
}
Keep <YOUR_MCP_KEY> as a placeholder in any version-controlled file. The actual key goes in an environment variable that the config references, or you load it at runtime.
How to test the connection
In a Claude Code session, run:
/mcp
The MCP panel lists all connected servers and their available tools. Zapier MCP should appear with a green status indicator and the tool names you enabled at mcp.zapier.com. If the server shows as disconnected, double-check the URL (no trailing slash, correct key segment) and confirm your Zapier account has at least one action enabled.
Tested scenario: Log a HubSpot contact note from Claude Code
Input: "Add a HubSpot note on contact john@example.com saying onboarding call completed"
Command path: Claude Code calls Zapier MCP > Log HubSpot Contact Note tool
Expected output:
Tool call: Log HubSpot Contact Note
Contact: john@example.com
Note: onboarding call completed
Status: success
The note appears on the contact record in HubSpot within 3-4 seconds.
Step 4 - Add the Zapier MCP config to Windsurf
Where Windsurf stores MCP config (~/.codeium/windsurf/mcp_config.json)
Windsurf stores its MCP configuration at ~/.codeium/windsurf/mcp_config.json. This is a global config file, not project-scoped. All MCP servers you add here are available across every Windsurf project.
The exact JSON to paste (uses "serverUrl" not "url")
{
"mcpServers": {
"Zapier Actions MCP": {
"serverUrl": "https://actions.zapier.com/mcp/YOUR_MCP_KEY/sse"
}
}
}
Config format per Zapier's Windsurf docs (May 2026). The key name is "serverUrl", not "url". That single character difference is the most common mistake when copy-pasting from Cursor or Claude Code configs.
Zapier's Windsurf documentation also notes an RFC 9728 OAuth issue that affects some OAuth-based flows. API Key auth avoids that entirely, which is another reason to use API Key for your own developer setup.
How to verify in Cascade
After saving the config file, open Windsurf Settings and navigate to Advanced Settings. In the Cascade section, press the refresh button next to MCP Servers. Windsurf reloads the config and shows the Zapier server with a connected status.
In a Cascade chat window, type:
Show me the available MCP tools
Cascade returns the list of enabled Zapier actions. If nothing appears after the refresh, validate the JSON at ~/.codeium/windsurf/mcp_config.json and confirm the "serverUrl" key is spelled correctly.
Tested scenario: Create a GitHub Issue from Windsurf
Input: "Create a GitHub Issue on jonnybiz/pondero.ai: title 'Fix MCP config docs'"
Command path: Cascade calls Zapier Actions MCP > Create GitHub Issue
Expected output:
Status: success
Issue URL: https://github.com/jonnybiz/pondero.ai/issues/...
Step 5 - Enable your first five actions and set safe defaults
At mcp.zapier.com you control exactly which Zapier actions appear as tools. Start narrow. Five actions is enough to deliver real value without exposing operations you don't want an AI touching autonomously.
Here are the five we'd enable on day one for an engineering team:
1. Create Slack Message. Lowest risk, highest daily use. Good for deployment notifications and anything the AI generates that needs a human to see it fast.
2. Create Jira Issue. Bug reports and tech debt tickets written directly from code context. The AI already has the function name, file, and stack trace.
3. Update Google Sheets Row. Covers test run logs, release checklists, and status boards without a full SaaS integration.
4. Log HubSpot Contact Note. Useful for engineering teams that own part of the customer lifecycle. One tool call, note logged.
5. Create GitHub Issue. For teams that live in GitHub rather than Jira. Same value as #2, native context.
Leave unchecked: send email, delete records, archive contacts, close tickets. Irreversible actions don't belong in autonomous AI hands. Scope the MCP server to create and update only. If your gut hesitates on an action, leave it off.
The pricing math
Each Zapier MCP tool call costs 2 Zapier tasks. That's a fixed rate across all actions and all plan tiers. Per Zapier's pricing page (May 2026), here's what that looks like at each tier:
| Plan | Price | Tasks/month | MCP tool calls/month |
|---|---|---|---|
| Free | $0 | 100 | 50 |
| Starter | $20/month | 750 | 375 |
| Professional | $50/month | 2,000 | 1,000 |
| Enterprise | Custom | Custom | Custom |
For solo developers, the Zapier Starter plan at $20/month is the practical floor. You get 375 MCP calls plus 750 tasks for non-MCP automation. At one to five MCP calls per coding session, most developers won't hit the cap.
Teams need to run the math. Ten engineers at 20 tool calls per day each = 6,000 calls/month, well past the Professional tier's 1,000. Either upgrade or scope tools tighter so fewer calls fire per session.
Free tier covers evaluation. Fifty calls is about one week of light use.
Zapier MCP vs. n8n MCP vs. Make: which automation server fits your setup
Zapier, n8n, and Make all offer MCP connectivity now. The right choice depends on your team's setup, not on feature sheets.
If you're already on Zapier: stay there. No migration needed. The setup here takes under ten minutes and your existing zaps keep running. The 2-tasks-per-call rate is the friction; if you're on a paid plan, you probably have headroom.
If you run self-hosted infrastructure: n8n is the better path. n8n's MCP server runs on your own hardware, no per-call SaaS quota, all data on-premise. That matters in regulated industries. Developers already using the Cline SDK agent runtime often find n8n's self-hosted path integrates more cleanly with their local toolchain.
If your team's automations live in Make: Make doesn't have a native MCP server at Zapier's scale yet. The practical path is to run Make scenarios via Zapier's Make integration, treating Make as a downstream execution layer while Zapier handles the MCP-facing surface. That adds a hop, but your existing Make scenarios stay intact.
Short version: Zapier if you need to ship today. n8n if self-hosted control matters. Make if you're already deep in it. The cloud agent environment setup guide has more context on the infrastructure side.
FAQ
Does Zapier MCP work with VS Code Agent Mode?
Yes, but with a prerequisite: GitHub Copilot must be active and set to Agent mode. VS Code doesn't have a standalone MCP config tab like Cursor. Once Copilot is in Agent mode, you can add the same "mcpServers" JSON block Cursor uses. Zapier's docs cover the VS Code path, though the per-step configuration is more buried than Cursor or Claude Code.
Does Zapier MCP work with Cursor's AI agent mode, not just chat?
Yes. Agent mode calls MCP tools the same way as chat. Scoping matters more in agent mode because you're not approving each call manually. Keep the server limited to create/update actions before running anything autonomous.
What happens if I exceed my Zapier task limit mid-month?
Zapier pauses task execution. Tool calls will return an error until the next billing cycle or until you upgrade. Plan for headroom if you're running MCP on a team. Check your task usage at zapier.com/app/usage before adding MCP to shared workflows.
Is the MCP server URL the same as a Zapier API key?
No. The MCP server URL is a separate credential generated at mcp.zapier.com. Your Zapier REST API key is different. The MCP URL embeds your auth token in the path segment. Treat it like a bearer token and don't mix the two up.
Can I scope the Zapier MCP server to specific Zap steps, or is it all-or-nothing?
You can uncheck individual actions at mcp.zapier.com. You can't scope to a specific Zap trigger condition from the MCP server settings. Build any conditional logic inside the Zap itself.
My Windsurf Cascade panel shows the server as connected but no tools appear. What's wrong?
Two common causes. First: the JSON key is "url" instead of "serverUrl". Open ~/.codeium/windsurf/mcp_config.json, confirm the key name, save, and press the refresh button in Cascade settings. Second: no actions are enabled at mcp.zapier.com. The server connects successfully even with zero actions enabled, but Cascade has nothing to show. Go to mcp.zapier.com, enable at least one action, and refresh Cascade again.
Does this setup work with Cursor's cloud sync? Will my MCP key leak to Cursor's servers?
The .cursor/mcp.json file is local by default and not synced to Cursor's cloud. Add it to .gitignore if you work in a shared repo. The key never appears in prompts or completions. It's used only for the outbound SSE connection to Zapier.