Marketo MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
git clone <repo-url>
cd MarketoMCP
pip install -r requirements.txt
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "MARKETO_CLIENT_ID=${MARKETO_CLIENT_ID}" -e "MARKETO_CLIENT_SECRET=${MARKETO_CLIENT_SECRET}" -e "MARKETO_BASE_URL=${MARKETO_BASE_URL}" marketo-mcp -- python "<FULL_PATH_TO_MARKETO_MCP>/dist/index.js"

Replace <FULL_PATH_TO_MARKETO_MCP>/dist/index.js with the actual folder you prepared in step 1.

Required:MARKETO_CLIENT_IDMARKETO_CLIENT_SECRETMARKETO_BASE_URL+ 1 optional
README.md

Exposes Adobe Marketo REST API operations as tools for AI assistants.

Marketo MCP Server

An MCP (Model Context Protocol) server that exposes Adobe Marketo REST API operations as tools. Built with FastMCP, it allows AI assistants and MCP clients to interact with your Marketo instance.

Prerequisites

  • Python 3.10+
  • A Marketo instance with API access (client ID, client secret, and REST API base URL)

Setup

1. Clone the repository

git clone <repo-url>
cd MarketoMCP

2. Create a virtual environment and install dependencies

python -m venv venv
source venv/bin/activate  # macOS/Linux
# venv\Scripts\activate   # Windows

pip install -r requirements.txt

3. Configure environment variables

Copy the template and fill in your Marketo API credentials:

cp .env_template .env

Edit .env with your values:

MARKETO_CLIENT_ID="your-client-id"
MARKETO_CLIENT_SECRET="your-client-secret"
MARKETO_BASE_URL="https://your-instance.mktorest.com"
MCP_API_KEY="your-secret-api-key"

You can find these in Marketo Admin > LaunchPoint (for client ID/secret) and Admin > Web Services (for the REST API base URL).

4. Start the server

There are two server scripts to choose from:

`mcp_server.py` — No authentication (for Claude Desktop)
python mcp_server.py

Use this when connecting from Claude Desktop, which only supports OAuth 2.0 authentication for custom connectors. This server has no auth layer, so it should only be exposed on trusted networks or behind a reverse proxy that handles authentication.

`mcp_server_auth.py` — Bearer token authentication (for OpenAI and other clients)
python mcp_server_auth.py

Use this when connecting from OpenAI or any MCP client that supports bearer token authentication. Clients must include the MCP_API_KEY value from your .env file in every request:

Authorization: Bearer <your-MCP_API_KEY-value>

Add the key to your .env:

MCP_API_KEY="your-secret-api-key"

Why two servers? Claude Desktop's custom connector only supports OAuth 2.0 (Client ID / Client Secret). It has no way to send a static bearer token, so mcp_server_auth.py cannot be used with Claude Desktop. For Claude Desktop, use mcp_server.py instead.

Both servers start on http://0.0.0.0:8000 using the Streamable HTTP transport. The MCP endpoint is available at http://localhost:8000/mcp.

Available Tools

Activities

Tool Description Parameters
get_activity_types Get all available activity types
get_lead_activities Get recent activities for a lead by ID lead_id, activity_type_ids?, days_back? (default: 7)
get_lead_activities_by_email Get recent activities for a lead by email email, activity_type_ids?, days_back? (default: 7)
get_lead_changes Get data value changes for a lead lead_id, fields?, days_back? (default: 7)

Leads

Tool Description Parameters
get_lead_by_email Look up a lead by email address email
describe_leads Get lead field metadata and schema

Emails

Tool Description Parameters
get_email_by_id Get an email asset by ID email_id
get_email_by_name Get an email asset by name name, folder_id?
browse_emails Browse email assets with filtering max_return?, offset?, status?, folder_id?, earliest_updated_at?, latest_updated_at?
get_email_content Get content sections of an email email_id, status?
get_email_cc_fields Get fields enabled for Email CC
preview_email Get a live preview of an email email_id, status?, content_type?, lead_id?

Channels

Tool Description Parameters
get_channels Get available program channels max_return?, offset?

Folders

Tool Description Parameters
get_folder_by_name Get a folder by name name
browse_folders Browse folders max_return?, offset?, folder_type?

Smart Campaigns

Tool Description Parameters
get_smart_campaign_by_id Get a smart campaign by ID campaign_id
get_smart_campaign_by_name Get a smart campaign by name name
browse_smart_campaigns Browse smart campaigns with filtering max_return?, offset?, is_active?, folder_id?, earliest_updated_at?, latest_updated_at?
create_smart_campaign Create a new smart campaign name, folder_id, description?
update_smart_campaign Update an existing smart campaign campaign_id, name?, description?, folder_id?
clone_smart_campaign Clone a smart campaign campaign_id, name, folder_id, description?
schedule_batch_campaign Schedule a batch campaign to run

Tools (22)

get_activity_typesGet all available activity types
get_lead_activitiesGet recent activities for a lead by ID
get_lead_activities_by_emailGet recent activities for a lead by email
get_lead_changesGet data value changes for a lead
get_lead_by_emailLook up a lead by email address
describe_leadsGet lead field metadata and schema
get_email_by_idGet an email asset by ID
get_email_by_nameGet an email asset by name
browse_emailsBrowse email assets with filtering
get_email_contentGet content sections of an email
get_email_cc_fieldsGet fields enabled for Email CC
preview_emailGet a live preview of an email
get_channelsGet available program channels
get_folder_by_nameGet a folder by name
browse_foldersBrowse folders
get_smart_campaign_by_idGet a smart campaign by ID
get_smart_campaign_by_nameGet a smart campaign by name
browse_smart_campaignsBrowse smart campaigns with filtering
create_smart_campaignCreate a new smart campaign
update_smart_campaignUpdate an existing smart campaign
clone_smart_campaignClone a smart campaign
schedule_batch_campaignSchedule a batch campaign to run

Environment Variables

MARKETO_CLIENT_IDrequiredMarketo API Client ID from LaunchPoint
MARKETO_CLIENT_SECRETrequiredMarketo API Client Secret from LaunchPoint
MARKETO_BASE_URLrequiredMarketo REST API base URL
MCP_API_KEYSecret API key for bearer token authentication

Configuration

claude_desktop_config.json
{"mcpServers": {"marketo": {"command": "python", "args": ["/path/to/MarketoMCP/mcp_server.py"], "env": {"MARKETO_CLIENT_ID": "your-client-id", "MARKETO_CLIENT_SECRET": "your-client-secret", "MARKETO_BASE_URL": "https://your-instance.mktorest.com"}}}}

Try it

Find the lead details for user@example.com and list their recent activities from the last 30 days.
Browse the smart campaigns in the folder named 'Q4 Campaigns' and tell me which ones are currently active.
Get the content sections for the email with ID 12345.
Clone the smart campaign named 'Welcome Series' and name the new one 'Welcome Series - V2'.

Frequently Asked Questions

What are the key features of Marketo MCP Server?

Comprehensive management of Marketo assets including leads, activities, and emails.. Support for browsing and managing smart campaigns.. Integration with Claude Desktop and other MCP-compliant clients.. Flexible authentication options for different client types..

What can I use Marketo MCP Server for?

Automating lead activity reporting for marketing teams.. Streamlining the creation and cloning of smart campaigns via natural language.. Quickly retrieving email asset metadata and content for review.. Integrating Marketo data directly into AI-powered marketing workflows..

How do I install Marketo MCP Server?

Install Marketo MCP Server by running: git clone <repo-url> && cd MarketoMCP && pip install -r requirements.txt

What MCP clients work with Marketo MCP Server?

Marketo MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Marketo MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare