alexleventer/marketo-mcp
If you are the rightful owner of marketo-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol server for interacting with the Marketo API, providing tools for managing Marketo forms.
marketo_get_forms
Retrieve a list of forms with optional parameters for max return, offset, and status.
marketo_get_form_by_id
Fetch a specific form by its ID.
marketo_clone_form
Clone an existing form with options for name, description, and destination folder.
marketo_approve_form
Approve a form with an optional comment.
Marketo MCP Server
A Model Context Protocol server for interacting with the Marketo API. This server provides tools for managing Marketo forms, including listing, cloning, and approving forms.
Prerequisites
- Node.js (v14 or higher)
- Marketo API credentials (Client ID and Client Secret)
- A Marketo instance with API access enabled
- Claude Desktop installed
Getting Started
1. Obtain Marketo API Credentials
- Log into your Marketo admin panel
- Navigate to Admin > Integration > LaunchPoint
- Click New > New Service
- Fill in the service details:
- Service: Custom
- Display Name: (e.g., "MCP Server")
- Save the provided Client ID and Client Secret
2. Configure Environment Variables
- Create a
.env
file in the root directory:
# Your Marketo instance URL (required)
# Example: https://123-ABC-456.mktorest.com/rest
MARKETO_BASE_URL=your-marketo-instance-url
# Your API credentials (required)
MARKETO_CLIENT_ID=your-client-id
MARKETO_CLIENT_SECRET=your-client-secret
3. Installation and Setup
# Install dependencies
npm install
# Build the project
npm run build
# The build process will output configuration settings in your console
# Copy these settings into your Claude Desktop developer configuration
4. Claude Desktop Configuration
- Open Claude Desktop
- Go to Developer Settings
- Paste the configuration settings that were output during the build process
- Save the configuration
- Restart Claude Desktop
Available Tools
Get Forms List
marketo_get_forms({
maxReturn: 200, // optional, default: 200
offset: 0, // optional, default: 0
status: 'draft' // optional, 'draft' or 'approved'
})
Get Form by ID
marketo_get_form_by_id({
formId: 1234
})
Clone Form
marketo_clone_form({
formId: 1234, // ID of form to clone
name: "New Form Name", // Name for the cloned form
description: "Form description", // optional
folderId: 5678 // optional, destination folder ID
})
Approve Form
marketo_approve_form({
formId: 1234,
comment: "Approved by MCP server" // optional
})
Error Handling
Common error scenarios and solutions:
-
Authentication Errors
- Verify your Client ID and Client Secret are correct
- Check that your API access is enabled in Marketo
- Ensure your instance URL is correct
-
Permission Errors
- Verify your API user has sufficient permissions
- Check folder access permissions for form operations
-
Rate Limiting
- The server automatically handles token refresh
- Consider implementing retry logic for rate-limited requests
Best Practices
-
Environment Management
- Never commit
.env
files to version control - Use different credentials for development and production
- Regularly rotate your API credentials
- Never commit
-
Security
- Store credentials securely
- Use environment variables for sensitive data
- Monitor API access logs
-
Performance
- Cache form data when appropriate
- Use pagination for large form lists
- Handle rate limits appropriately
Development
Project Structure
āāā src/
ā āāā index.ts # Server entry point
ā āāā auth.ts # Token management
ā āāā constants.ts # Configuration
āāā .env # Environment variables (not in git)
āāā .env.example # Example environment file
āāā .gitignore # Git ignore rules
You can run MCP inspector against this server with the following command: npx @modelcontextprotocol/inspector node build/index.js
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
Support
For issues and questions:
- Check the Marketo REST API documentation
- Review common error scenarios above
- Submit an issue in the repository