Menu

AI

Zapier MCP Setup Guide: OAuth, Connection Tokens, Server Modes and Code

Set up Zapier MCP: pick OAuth or a connection token, choose agentic or managed mode, connect from Python or TypeScript, and budget 2 tasks per tool call.

By: Irina ShvayaNovember 2, 2026

Zapier MCP Setup Guide: OAuth, Connection Tokens, Server Modes and Code

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: Bearer header, not the URL, and give each user their own server and token.

Step 1: Pick your authentication path

From Zapier's connections overview:

PathWho it is forWho creates the server
OAuthClients on Zapier's supported list, such as Claude, ChatGPT, Cursor, Grok Bot or VS CodeZapier, during sign-in
Connection tokenUnlisted clients, and your own Python or TypeScript codeYou, 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.

  1. Go to mcp.zapier.com and click Add MCP server.
  2. Under Choose your AI agent, pick Python or TypeScript.
  3. Open the Settings tab and, in API token, click Generate token. It is shown once.
  4. 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 modeManaged mode
Who adds actionsZapier and your agentYou
Where you manage actionsIn your clientAt mcp.zapier.com
Tools the client seesA fixed set of meta-toolsOne tool per action
Best forOpen-ended requests across many appsA 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.

You Might Also like to Read

Get a FREE Website Audit

Enter your website and get a 20–30 page SEO, GEO, AEO & CRO audit within 24 hours. Completely free.

Don't have a site yet? Get in touch →

Ready to speak with a marketing expert?
Give us a call! (916) 866-7893

Websites Launched
1407
Websites Launched
Marketing Experts
29
Marketing Experts
Hours of Dedicated Work
204533
Hours of Dedicated Work
Irina S.Benjamin G.Jeanette M.David G.