@zapier/mcp-integration
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

@zapier/mcp-integration

SDK for integrating with Model Context Protocol (MCP) servers, designed for use in Zapier integrations.

npm version License: MIT

Table of Contents

Installation

Install the package via npm:

npm install @zapier/mcp-integration

Migration Guide

If you're migrating from the embedded MCP SDK in mcp-client-integration, this package is a drop-in replacement. Simply update your import statement:

Before:

import { Proxy } from '../sdk/index.js';

After:

import { Proxy } from '@zapier/mcp-integration';

All other code remains unchanged. The API is identical, and all functionality is preserved.

Setup

You can use @zapier/mcp-integration in two ways:

As Foundation

In this mode, you use @zapier/mcp-integration to handle authentication and all or most actions.

Create e.g. src/mcp.ts with the following content:

import { Proxy } from '@zapier/mcp-integration';

import packageJson from '../package.json' with { type: 'json' };

export const mcp = new Proxy({
  name: packageJson.name,
  version: packageJson.version,
  serverUrl: process.env.SERVER_URL,
  transport: process.env.TRANSPORT,
});

Update src/index.ts to use the singleton:

import { mcp } from './mcp.js';

export default defineApp({
  ...mcp.app(),

  // .. (your actions)

  // If you need additional `beforeRequest` middleware:
  // beforeRequest: [mcp.beforeRequest(), yourMiddleware],
});

For Actions only

In this mode, you handle authentication yourself, and use @zapier/mcp-integration for some of the actions.

Create e.g. src/mcp.ts with the following content:

import { Proxy } from '@zapier/mcp-integration';

import packageJson from '../package.json' with { type: 'json' };

export const mcp = new Proxy({
  name: packageJson.name,
  version: packageJson.version,
  serverUrl: process.env.SERVER_URL,
  transport: process.env.TRANSPORT,
  auth: {
    type: 'oauth',
  },
});

Update src/index.ts to use the singleton:

import { mcp } from './mcp.js';

export default defineApp({
  ...mcp.app({ handleAuth: false }),

  authentication: yourAuthConfig,

  // .. (your actions)
});

MCP Actions

Use the singleton to call a tool:

import { mcp } from './mcp.js';

const perform = async (z: ZObject, bundle: Bundle) => {
  const result = await mcp.callTool({
    name: 'my_tool',
    arguments: {
      hello: 'world',
    },
    // Override these default options as needed:
    // parse: true,
    // error: true,
    // filter: "content[0].json",
  });

  return result;
};

// Action configuration, leveraging perform

API Actions

Use z.request() as normally, as unless you have called mcp.app with { handleAuth: false }, it will have injected beforeRequest middleware to inject tokens into requests.

Configuration

Authentication Options

The Proxy class supports multiple authentication methods:

OAuth 2.0 Authentication

import { Proxy } from '@zapier/mcp-integration';

const mcp = new Proxy({
  name: 'my-integration',
  version: '1.0.0',
  serverUrl: process.env.SERVER_URL,
  transport: process.env.TRANSPORT,
  auth: {
    type: 'oauth',
    // OAuth configuration handled automatically
  },
});

Bearer Token Authentication

import { Proxy } from '@zapier/mcp-integration';

const mcp = new Proxy({
  name: 'my-integration',
  version: '1.0.0',
  serverUrl: process.env.SERVER_URL,
  transport: process.env.TRANSPORT,
  auth: {
    type: 'bearer',
    // Bearer token configuration handled automatically
  },
});

Tool Call Configuration

Configure how MCP tools are called:

const result = await mcp.callTool({
  name: 'my_tool',
  arguments: { param: 'value' },
  parse: true, // Parse JSON responses (default: true)
  error: true, // Throw on MCP errors (default: true)
  filter: 'data.items', // JSONata filter expression (optional)
});

API Reference

Proxy Class

The main class for interacting with MCP servers.

Constructor

new Proxy(config: ProxyConfig)

ProxyConfig:

  • name: string - Integration name
  • version: string - Integration version
  • serverUrl: string - MCP server URL
  • transport: string - Transport protocol
  • auth?: AuthConfig - Authentication configuration

Methods

app(options?: AppOptions): Partial<App>

Returns Zapier app configuration with MCP integration.

AppOptions:

  • handleAuth?: boolean - Whether to handle authentication (default: true)
callTool(options: CallToolOptions): Promise<any>

Calls an MCP tool with the specified arguments.

CallToolOptions:

  • name: string - Tool name
  • arguments: Record<string, any> - Tool arguments
  • parse?: boolean - Parse JSON responses (default: true)
  • error?: boolean - Throw on errors (default: true)
  • filter?: string - JSONata filter expression
beforeRequest(): BeforeRequestMiddleware

Returns middleware for handling authentication in API requests.

Authentication Providers

BearerTokenAuthProvider

Handles Bearer token authentication for API requests.

OAuthClientProvider

Handles OAuth 2.0 authentication flow and token management.

Utility Functions

convertInputSchemaToFields(schema: any): PlainInputField[]

Converts MCP tool input schemas to Zapier input field format.

isTextContentItem(item: any): boolean

Type guard to check if content item is text-based.

TypeScript Support

This package is written in TypeScript and includes comprehensive type definitions. All types are automatically available when using TypeScript:

import {
  Proxy,
  type ProxyConfig,
  type CallToolOptions,
} from '@zapier/mcp-integration';

const config: ProxyConfig = {
  name: 'my-integration',
  version: '1.0.0',
  serverUrl: process.env.SERVER_URL!,
  transport: process.env.TRANSPORT!,
};

const mcp = new Proxy(config);

Available Types

  • ProxyConfig - Configuration for Proxy constructor
  • CallToolOptions - Options for calling MCP tools
  • AuthConfig - Authentication configuration
  • BeforeRequestMiddleware - Middleware function type
  • Bundle - Zapier bundle type (internalized)
  • ZObject - Zapier z object type (internalized)
  • App - Zapier app configuration type (internalized)
  • PlainInputField - Zapier input field type (internalized)

Contributing

This package is part of the Zapier MCP integration project. For issues and contributions, please visit the GitLab repository.

License

MIT © Zapier

Package Sidebar

Install

npm i @zapier/mcp-integration

Weekly Downloads

47

Version

2.0.0

License

MIT

Unpacked Size

71.3 kB

Total Files

34

Last publish

Collaborators

  • tims256
  • philip.ng-zapier
  • zapetc
  • chaodonghu
  • jc.coto-zapier
  • andrew.gosnell-zapier
  • djeebus
  • emma-hays
  • michaelann
  • nickaccuardizapier
  • jdaudier
  • joaopimentel
  • rghazali
  • rsiemens
  • noahmanger
  • kola-er
  • codebycaleb
  • calebpeterson
  • lukecjohnson
  • zapier-engineering
  • jdeal
  • bryanhelmig
  • pwhamman
  • amber.diehl-zapier
  • percy_at_zapier
  • omar.raza
  • lijenni
  • katestamzap
  • fokkezb
  • zoeykim-zapier
  • jhk2020
  • nik.danilov-zapier
  • michal.wysocki-zapier
  • jonathan.harrell-zapier
  • dilan-zapier
  • sandy.brydon-zapier
  • emily.harris-zapier
  • matthew.kiernander-zapier
  • michaelgilley
  • corbin.schwartz-zapier
  • mikekuchera
  • andrew.kordampalos-zapier
  • jasonkotenko
  • nate.moore-zapier
  • josuezap
  • muyiwa.olurin
  • mikeknoop
  • larryt
  • rhubbard
  • tomasz.piechota-zapier
  • service-account-appsec
  • mary.rising-zapier
  • nolan.little-zapier
  • stacietaylorcima
  • nkroeker_zap
  • hitchcockwill
  • chelsea.weber
  • season.huang
  • chris.vanderkolk.zapier
  • erin.williams-zapier
  • brian.corbin
  • darko.ronic.zapier
  • kredlear
  • chelschubb
  • skylershaw
  • maggie.cody-zapier
  • andya-zapier
  • iansco
  • will.wiggins
  • rondiege
  • annaulyanova
  • bskaurud
  • kaitrin.cox
  • chasehamby
  • milkram
  • mburni
  • peterbritnell
  • carolinezapier
  • chris.lee-zapier
  • emmaielle
  • jeanetteu
  • jordanraleigh
  • robertscl
  • dayne-taitt
  • laurenmbeatty
  • ihor.horak
  • maxwellgbrown
  • hanz.cortes
  • alejandro-lagos
  • tom.leung-zapier
  • robert.lewis
  • lizzyzap
  • colemaclean
  • rchinerman
  • sdelosrios95
  • joseph-corona-zapier
  • pedro.louro-zapier
  • brandon.parker-zapier
  • poterekm
  • greg-zapier
  • loveena.vattenky
  • msholty
  • plorry
  • joel.taddei
  • standielpls
  • fgrafa
  • aparkin
  • adampie
  • ilari.scheinin
  • annader-zapier
  • amickael-zap
  • kalenwessel
  • kat.nestor
  • matthewwalters
  • xavierh-zapier
  • james.hong-zapier
  • service-account-renovate
  • cortega_zp
  • jelani.jackson-zapier
  • wernertc
  • brandon.myers.zapier
  • ben.clapp.zapier
  • rebecca.davis.zapier
  • davidwin-zap
  • mason.geloso-zapier
  • valeriia.shpiner
  • zac.jones-zapier
  • manasseh_zapier
  • lisa.orr
  • aaclarker-zap
  • fernando.velascosalazar
  • normanroa
  • daniel.vagg-zapier
  • alec.hinh-zapier
  • scott.woodend-zapier
  • cody.landry
  • schlickmann
  • jacquelynmccray
  • wojciech.matuszewski-zapier
  • alex.black
  • danielheidornzap
  • raquel.zapier
  • sarahstory
  • matthew.hockenbury-zapier
  • jonathan.wise-zapier
  • dewayne-zapier
  • tupelo8
  • chrys.swingler-zapier
  • mahsa.khoshab-zapier
  • anna.hadnagy-zapier
  • jake.talgard-zapier
  • benjamin.kempe-zapier
  • ryan.vennell-zapier
  • zackary.higgins-zapier
  • bryce.seagervandyk-zapier
  • kit.burgess-zapier
  • vitor.balocco-zapier
  • zapier-interfaces
  • brody-zapier
  • aaron.kosel-zapier
  • diomer
  • cameron.barnes-zapier
  • sarah.hernandez-zapier
  • david.jardine-zapier
  • ryan.detzel-zapier
  • jacob.blakely-zapier
  • kasey.cowley-zapier
  • jessica.winters-zapier
  • abraham.duran-zapier
  • aleks.ozolins-zapier
  • nicholas.civili-zapier
  • aubry.stewart-zapier
  • jake.moghtader-zapier
  • kristen.keller-zapier
  • ryan.laxson-zapier
  • shanan.holm-zapier
  • omar.delossantos-zapier
  • osarhomiyeke.iyere-zapier
  • mike.lambert-zapier
  • catherine.murray-zapier
  • ken.ng-zapier
  • lukas.toma-zapier
  • marina.hand
  • vivian.lau-zapier
  • dan.middleton-zapier
  • james.miltenberger-zapier
  • charan.mahesan-zapier
  • olajide.ayinla-zapier
  • sara.gomez-zapier
  • ismail.latona-zapier
  • tazrafiq
  • service-account-catalog
  • ashley.isles-zapier
  • ryan.dunnewold-zapier
  • rval-zapier
  • jenna.macdonald-zapier
  • sharvari.desai-zapier
  • daniel.shepard-zapier
  • lstensager
  • kunal.mahajan-zapier
  • ben.mcadams-zapier
  • jason.brandt-zapier
  • mark.auburn-zapier
  • james-zapier
  • natay.aberra-zapier
  • peter.lord-zapier
  • stephanie.coates-zapier
  • seth.duncan-zapier
  • nick.fredman-zapier
  • matt.lukso
  • erik.aybar-zapier
  • chris.taylor-zapier
  • noe.camacho-zapier
  • farid.hajnal-zapier
  • chris.haferl-zapier
  • jason.poole-zapier
  • amy.steen-zapier
  • mojtaba.hosseini-zapier
  • andy.spezzatti-zapier
  • seth.etter-zapier
  • sage-zapier
  • blakek-zapier
  • kelly.vaughn-zapier
  • danielle.weisz-zapier
  • enrique.maytorena-zapier
  • hgascoigne_zapier
  • andrew-scala-zapier
  • zach.rochler-zapier
  • juan-vazquez-zapier
  • andyzapier
  • daniel-frazier
  • jase.hackman-zapier
  • rahul.es-zapier
  • rob.golding-day-zapier
  • cass.hill-zapier
  • numichuu
  • jay.reddy-zapier
  • cameron.phillips-zapier
  • erikamontani
  • ajdlp
  • alvaro.martin-zapier
  • simon.charette-zapier
  • reid.robinson-zapier
  • christopher.mclachlan-lee-zapier
  • bailey.griswold-zapier
  • christopher.mckay-zapier
  • thomas.cranny-zapier
  • renae.corcoran-zapier
  • josh.newman-zapier
  • john.wick-test-zapier
  • chang-hung.liang-zapier
  • rocio.aramberri-zapier
  • cooksey-zapier
  • krishna.chaitanya-zapier
  • justin.zapier
  • sugatmahanti
  • anthony.torres-zapier
  • maria.bances-zapier
  • nick.james-zapier
  • claire.mcnelis-zapier
  • chris.weaver
  • james.carr-zapier
  • brodenzapier
  • gabebravo
  • rebecca-ghazali
  • bradley.bohen-zapier
  • stevemolitor
  • rafal.wilinski-zapier
  • sammons.zapier
  • christophe.coutzoukis-zapier
  • ana.krivokapic-zapier
  • saraelizabeth.horning-zapier
  • victor.avasiloaei-zapier
  • jordy.vandomselaar-zapier
  • juancarlos.prida-zapier
  • jdeal_zapier
  • mike.pirnat-zapier
  • keerthana.mohan-zapier
  • nicole.thomas
  • ahsanhassan
  • chris.johns-zapier
  • alden.aikele-zapier
  • ryan.fitzgerald-zapier
  • miklossimon
  • dave.kolas-zapier
  • brodie.kurczynski_zapier