
This tutorial is part of Build an MCP Server, within The MCP Guide. Want it built for you? See MCP development.
Zapier MCP connects AI clients to Zapier's app actions through one endpoint, https://mcp.zapier.com/api/v1/connect. Setup depends on one question: can your client sign in with OAuth? If yes, you add Zapier inside the client and sign in, and Zapier creates the server for you. If not, or if you are writing your own code, you create a server at mcp.zapier.com and use a connection token.
Our Zapier MCP server profile covers what the server can do and its security notes. This guide is the setup walkthrough, including the code path and the server-mode choice that changes which tools your client sees. Steps were checked against Zapier's MCP developer docs on 2 November 2026.
Key Takeaways
- Every client connects to the same endpoint,
https://mcp.zapier.com/api/v1/connect, over Streamable HTTP only; SSE-only clients cannot connect. - Clients on Zapier's supported list use OAuth and get a server created during sign-in; unlisted clients and your own code use a connection token.
- New servers default to agentic mode, which exposes 16 fixed meta-tools; managed mode exposes one tool per action you pick.
- Each successful tool call costs 2 Zapier tasks; failed calls cost nothing; usage comes out of your normal plan allowance.
- Send connection tokens in an
Authorization: Bearerheader, not the URL, and give each user their own server and token.
Step 1: Pick your authentication path
From Zapier's connections overview:
| Path | Who it is for | Who creates the server |
|---|---|---|
| OAuth | Clients on Zapier's supported list, such as Claude, ChatGPT, Cursor, Grok Bot or VS Code | Zapier, during sign-in |
| Connection token | Unlisted clients, and your own Python or TypeScript code | You, at mcp.zapier.com |
Zapier's guidance is explicit: with OAuth, do not create a server at mcp.zapier.com first. Zapier connects the client to your default server and creates one if needed.
Transport
Zapier MCP "supports the Model Context Protocol over Streamable HTTP only." If a client was set up against an old SSE URL, change it to the endpoint above. Our SSE vs Streamable HTTP page explains the switch.
Step 2a: Connect a supported client with OAuth
The quickstart lists each supported client with its own page. Popular ones are Claude, Claude Code, ChatGPT, Cursor and Codex, with a longer list that includes VS Code, Windsurf, Zed, Kiro, Slack and Microsoft Copilot Studio.
For Claude Code, Zapier's page gives this command:
claude mcp add --transport http "Zapier-MCP" https://mcp.zapier.com/api/v1/connect
Restart Claude Code, then sign in when prompted. Zapier also notes that if your organization already added Zapier for a Claude Code session signed in with a Claude account, the connector "is already present, so do not run claude mcp add."
If the connector does not appear in a managed client, an admin or owner may need to approve it first. Admins rolling Zapier out to a whole team should follow Zapier's organization rollout guides instead of sharing tokens.
Step 2b: Connect your own code with a token
Use this path for scripts, backends and agents you write.
- Go to mcp.zapier.com and click Add MCP server.
- Under Choose your AI agent, pick Python or TypeScript.
- Open the Settings tab and, in API token, click Generate token. It is shown once.
- Store it in an environment variable:
export ZAPIER_MCP_TOKEN="YOUR_ZAPIER_MCP_TOKEN"
Python
Zapier's Python page uses the FastMCP client (pip install fastmcp) and requires Python 3.10 or later:
import asyncio
import json
import os
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
server_url = "https://mcp.zapier.com/api/v1/connect"
api_key = os.environ["ZAPIER_MCP_TOKEN"]
transport = StreamableHttpTransport(
server_url,
headers={"Authorization": f"Bearer {api_key}"}
)
client = Client(transport=transport)
async def main():
async with client:
tools = await client.list_tools()
print(json.dumps([t.name for t in tools], indent=2))
if __name__ == "__main__":
asyncio.run(main())
TypeScript
Zapier's TypeScript page uses the official MCP SDK (npm install @modelcontextprotocol/sdk) on Node.js 18 or later:
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const client = new Client(
{ name: "mcp-typescript-client", version: "1.0.0" },
{ capabilities: {} }
);
const transport = new StreamableHTTPClientTransport(
new URL("https://mcp.zapier.com/api/v1/connect"),
{ requestInit: { headers: { Authorization: `Bearer ${process.env.ZAPIER_MCP_TOKEN}` } } }
);
async function main() {
await client.connect(transport);
const tools = await client.listTools();
console.log(tools);
await client.close();
}
main();
Zapier says any MCP SDK that supports Streamable HTTP works, as long as you keep the endpoint, the transport and the Authorization: Bearer header. So the same token works with agent frameworks too: see our OpenAI Agents SDK tutorial for how to pass a URL and header.
Token rules
From Zapier's docs:
- The header form is preferred. The
?token=URL form "is more likely to end up in a log, a shell history, or a committed config file." - The token is long-lived, tied to one server, and lets "whoever holds it" run that server's tools.
- Regenerating ("Rotate token") invalidates the old one immediately, for every client using it.
- "Give each user their own server and token rather than sharing one."
Step 3: Choose a server mode
This is the setting most guides skip. Zapier's tools overview describes two modes:
| Agentic mode | Managed mode | |
|---|---|---|
| Who adds actions | Zapier and your agent | You |
| Where you manage actions | In your client | At mcp.zapier.com |
| Tools the client sees | A fixed set of meta-tools | One tool per action |
| Best for | Open-ended requests across many apps | A fixed, scoped set of actions |
New servers default to agentic mode. A few programmatic clients, such as Vapi and the OpenAI API, start in managed mode.
In agentic mode, the server exposes 16 meta-tools, including discover_zapier_actions, enable_zapier_action, execute_zapier_read_action and execute_zapier_write_action. Zapier auto-provisions actions from the apps you have already connected. Some servers also expose write_code_action, which creates a custom code action when no built-in action fits.
Which mode should you pick?
- Pick agentic for a personal assistant that should handle whatever you ask.
- Pick managed for anything automated or customer-facing. You choose exactly which actions exist, and the agent cannot enable new ones on its own.
Our tool permission planner helps you decide which actions belong on a managed server.
Step 4: Make the first call and check usage
In your client, ask for something small and read-only first, such as finding an email or listing tasks. Then check the History tab at mcp.zapier.com: every tool call runs through your Zapier app connections and is recorded there.
Zapier's usage page sets the cost:
- 2 tasks per successful tool call, at a fixed rate.
- 0 tasks for failed calls.
- No separate MCP billing; tasks come from your plan's allowance.
- Batches count per action: "Add 5 rows to a spreadsheet" is 5 calls, or 10 tasks.
If you hit your task limit without pay-per-task billing, tool calls stop and return a task-limit error until the cycle resets or you upgrade.
Test with the MCP Inspector
For the token path, you can confirm the server answers before writing any agent code:
npx @modelcontextprotocol/inspector --cli https://mcp.zapier.com/api/v1/connect \
--transport http \
--header "Authorization: Bearer $ZAPIER_MCP_TOKEN" \
--method tools/list
In agentic mode you should see the meta-tools; in managed mode, the actions you added. Our MCP Inspector lesson covers more checks.
Pitfalls
- Creating a server by hand for an OAuth client. Not needed. Zapier creates and connects your default server during sign-in.
- Old SSE URLs. Zapier MCP no longer accepts them.
- Shared tokens. Rotating one cuts off everyone using it.
- Agentic mode in automation. An agent can enable new write actions mid-run. Use managed mode where nobody is watching.
- Ignoring task costs. Loops that call tools repeatedly use 2 tasks each time.
Next step
Comparing options? Read Composio vs Zapier MCP. New to MCP? Start the free MCP course. If you need a custom MCP server where Zapier's actions do not fit, see our MCP development service.
More in the MCP Guide
Free tools: server.json Validator · MCP Error Code Lookup
Latest research: State of MCP: October 2026
Frequently asked questions
Do I need to create a server at mcp.zapier.com?
Only for the connection-token path: unlisted clients or your own code. For supported clients, Zapier creates and connects your default server when you sign in with OAuth.
Does Zapier MCP support SSE?
No. Zapier's docs say it supports MCP over Streamable HTTP only, and an MCP client that can only use SSE cannot connect.
How much does a Zapier MCP tool call cost?
Each successful tool call uses 2 tasks from your Zapier plan. Failed calls and listing tools do not count.
Can several AI clients share one Zapier MCP server?
Yes. Zapier supports multi-client servers, so several clients use the same apps, actions and skills. Every client on a server uses that server's mode.











