@zapier/zapier-sdk-mcp
v0.13.25
Published
MCP server for Zapier SDK
Maintainers
Readme
Zapier SDK MCP Server
A MCP (Model Context Protocol) server implementation for the Zapier SDK, allowing AI assistants to interact with Zapier's APIs through a standardized protocol.
What is MCP?
The Model Context Protocol (MCP) is a protocol developed by Anthropic that enables AI assistants like Claude and Cursor to interact with external tools and data sources through a standardized interface. This package creates an MCP server that exposes all Zapier SDK functions as MCP tools.
Installation
This package is part of the Zapier SDK monorepo and is automatically installed when you install the CLI:
npm install -D @zapier/zapier-sdk-cliUsage
Starting the MCP Server
You can start the MCP server using the CLI:
# Start the MCP server
npx zapier-sdk mcp
# Enable debug logging
npx zapier-sdk mcp --debugUsing with Claude Code
To use this MCP server with Claude Code, add it to your MCP configuration:
{
"mcpServers": {
"zapier-sdk": {
"command": "npx",
"args": ["zapier-sdk", "mcp"]
}
}
}Programmatic Usage
You can also use the server programmatically:
import { createZapierMcpServer, startMcpServer } from "@zapier/zapier-sdk-mcp";
// Create and configure the server
const server = createZapierMcpServer({ debug: true });
// Or start it directly
await startMcpServer({ debug: true });How It Works
The MCP server:
- Dynamically discovers all available Zapier SDK functions from the SDK's internal registry
- Converts function schemas from Zod format (used internally by the SDK) to JSON Schema format (required by MCP)
- Exposes functions as MCP tools with kebab-case naming (e.g.,
listAppsbecomeslist-apps) - Handles tool execution by validating inputs, calling the appropriate SDK function, and returning results
Available Tools
All Zapier SDK functions are automatically exposed as MCP tools:
list-apps- List available Zapier appslist-actions- List actions for a specific appget-action- Get details about a specific actionrun-action- Execute a Zapier actionlist-connections- List your connections- And many more...
Error Handling
The server provides comprehensive error handling:
- Validation errors include the expected input schema
- Unknown tools list all available alternatives
- Execution errors provide context about which function failed
- Debug mode provides detailed error logging
Architecture
AI Assistant (Claude)
↓ MCP Protocol
MCP Server (@zapier/zapier-sdk-mcp)
↓ Function Calls
Zapier SDK (@zapier/zapier-sdk)
↓ HTTP Requests
Zapier APIsThe MCP server acts as an adapter, translating between the MCP protocol and the Zapier SDK's function-based interface.
Development
Building
pnpm buildTesting
pnpm testTable of Contents
- Installation
- Usage
- Available Tools
- Accounts
- Actions
- Apps
- Client Credentials
- Code Workflows (Experimental)
- Connections
- HTTP Requests
- Tables
- Triggers (Experimental)
ack-trigger-inbox-messagescreate-trigger-inboxdelete-trigger-inboxensure-trigger-inboxget-trigger-inboxget-trigger-input-fields-schemalease-trigger-inbox-messageslist-trigger-inbox-messageslist-trigger-inboxeslist-trigger-input-field-choiceslist-trigger-input-fieldslist-triggerspause-trigger-inboxrelease-trigger-inbox-messagesresume-trigger-inboxupdate-trigger-inbox
Available Tools
All SDK functions are automatically exposed as MCP tools using kebab-case naming.
Accounts
get-profile
Get current user's profile information
Actions
get-action
Get detailed information about a specific action
get-action-input-fields-schema
Get the JSON Schema representation of input fields for an action. Returns a JSON Schema object describing the structure, types, and validation rules for the action's input parameters.
list-action-input-field-choices
Get the available choices for a dynamic dropdown input field
list-action-input-fields
Get the input fields required for a specific action
list-actions
List all actions for a specific app
run-action
Execute an action with the given inputs
Apps
get-app
Get detailed information about a specific app
list-apps
List all available apps with optional filtering
Client Credentials
create-client-credentials
Create new client credentials for the authenticated user
delete-client-credentials
Delete client credentials by client ID
list-client-credentials
List client credentials for the authenticated user
Code Workflows (Experimental)
ℹ️ Experimental. Start the MCP server via
zapier-sdk-experimental mcp, pass--experimentaltozapier-sdk mcp, or setZAPIER_EXPERIMENTAL=truein the environment. Tools and behavior may change.
cancel-durable-run 🧪 experimental
Cancel a run-once durable run in initialized or started status. Returns 409 if the run is already terminal.
create-workflow 🧪 experimental
Create a durable workflow container. Starts disabled with no version; publish a version to add code.
delete-workflow 🧪 experimental
Delete a durable workflow. Throws ZapierNotFoundError if the workflow doesn't exist; callers wanting idempotency should catch that themselves.
disable-workflow 🧪 experimental
Disable a durable workflow so it stops accepting triggers
enable-workflow 🧪 experimental
Enable a durable workflow so it accepts triggers
get-durable-run 🧪 experimental
Get the full state of a run-once durable run, including its operations journal
get-trigger-run 🧪 experimental
Get the workflow run associated with a deployed workflow's trigger. Useful immediately after firing a trigger, when you have the trigger ID but not yet the run ID.
get-workflow 🧪 experimental
Get a durable workflow with its current version details and trigger claim status
get-workflow-run 🧪 experimental
Get the current state of a workflow run (a triggered execution of a deployed workflow)
get-workflow-version 🧪 experimental
Get full details of a workflow version including source files
list-durable-runs 🧪 experimental
List run-once durable runs for the authenticated account, newest first
list-workflow-runs 🧪 experimental
List workflow runs (triggered executions) for a specific deployed workflow, newest first
list-workflow-versions 🧪 experimental
List published versions for a workflow, newest first
list-workflows 🧪 experimental
List all active durable workflows for the authenticated account
publish-workflow-version 🧪 experimental
Publish a new version of a durable workflow. Enables the workflow by default.
run-durable 🧪 experimental
Run a workflow source file as a run-once durable run on sdkdurableapi (no deployed workflow required). Returns the run ID immediately; poll via getDurableRun for terminal status.
trigger-workflow 🧪 experimental
Look up a workflow's trigger URL and fire it manually. The trigger endpoint is tokenized (the URL contains a secret) and takes no auth header, so the SDK uses a raw fetch rather than the api plugin.
update-workflow 🧪 experimental
Update a durable workflow's name and/or description
Connections
find-first-connection
Find the first connection matching the criteria
find-unique-connection
Find a unique connection matching the criteria
get-connection
Execute getConnection
list-connections
List available connections with optional filtering
HTTP Requests
fetch
Make authenticated HTTP requests to any API through Zapier. Pass a connectionId to automatically inject the user's stored credentials (OAuth tokens, API keys, etc.) into the outgoing request. Mirrors the native fetch(url, init?) signature with additional Zapier-specific options.
Tables
create-table
Create a new table
create-table-fields
Create one or more fields in a table
create-table-records
Create one or more records in a table
delete-table
Delete a table by its ID
delete-table-fields
Delete one or more fields from a table
delete-table-records
Delete one or more records from a table
get-table
Get detailed information about a specific table
get-table-record
Get a single record from a table by ID
list-table-fields
List fields for a table
list-table-records
List records in a table with optional filtering and sorting
list-tables
List tables available to the authenticated user
update-table-records
Update one or more records in a table
Triggers (Experimental)
ℹ️ Experimental. Start the MCP server via
zapier-sdk-experimental mcp, pass--experimentaltozapier-sdk mcp, or setZAPIER_EXPERIMENTAL=truein the environment. Tools and behavior may change.
ack-trigger-inbox-messages 🧪 experimental
Acknowledge messages from a lease. Acked messages are removed from the inbox; unacked ones return to the available pool when the lease expires.
create-trigger-inbox 🧪 experimental
Create a new trigger inbox subscription. Always creates a new inbox; use ensureTriggerInbox for get-or-create on a stable name.
delete-trigger-inbox 🧪 experimental
Mark a trigger inbox for deletion
ensure-trigger-inbox 🧪 experimental
Get-or-create a trigger inbox by name. Idempotent on (user, account, name): returns the existing inbox if a matching subscription is registered, creates a new one otherwise. Throws ZapierConflictError if the name exists with a different subscription.
get-trigger-inbox 🧪 experimental
Get details of a trigger inbox by ID
get-trigger-input-fields-schema 🧪 experimental
Get the JSON Schema representation of input fields for a trigger. Returns a JSON Schema object describing the structure, types, and validation rules for the trigger's input parameters.
lease-trigger-inbox-messages 🧪 experimental
Lease up to N messages from a trigger inbox. Returns messages plus a lease ID; ack within the lease window to remove from the inbox.
list-trigger-inbox-messages 🧪 experimental
List messages in a trigger inbox (no payload, status-only)
list-trigger-inboxes 🧪 experimental
List all trigger inboxes for the authenticated user
list-trigger-input-field-choices 🧪 experimental
Get the available choices for a dynamic dropdown input field on a trigger
list-trigger-input-fields 🧪 experimental
Get the input fields required for a specific trigger
list-triggers 🧪 experimental
List all triggers for a specific app
pause-trigger-inbox 🧪 experimental
Pause a trigger inbox; events stop being collected
release-trigger-inbox-messages 🧪 experimental
Release messages from a lease back to the inbox without acknowledging them. Released messages become immediately available for re-leasing. The lease attempt still counts against the per-message lease limit; releasing does not refund the attempt.
resume-trigger-inbox 🧪 experimental
Resume a paused trigger inbox; events resume being collected
update-trigger-inbox 🧪 experimental
Update settings on an existing trigger inbox
