Campaign Monitor MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CM_SCOPES | No | Scopes requested during OAuth flow | |
| CM_API_KEY | No | Fallback API key (HTTP Basic auth) used when no OAuth refresh token is available | |
| CM_CLIENT_ID | No | OAuth application client ID from Campaign Monitor | |
| CM_TOKEN_STORE | No | Path to the token store file (default: ~/.campaign-monitor-mcp/tokens.json) | |
| CM_REDIRECT_URI | No | OAuth redirect URI (default: http://127.0.0.1:53682/callback) | http://127.0.0.1:53682/callback |
| CM_CLIENT_SECRET | No | OAuth application client secret from Campaign Monitor | |
| CM_REFRESH_TOKEN | No | OAuth refresh token obtained from npm run auth | |
| CM_ENABLED_CATEGORIES | No | Comma-separated list of categories to limit exposed tools (e.g., campaigns,lists,subscribers) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cm_list_clientsA | List all clients in your Campaign Monitor account. |
| cm_get_billing_detailsA | Get the account's billing details and credit balance. |
| cm_list_countriesA | Get the list of valid country names accepted by the API. |
| cm_list_timezonesA | Get the list of valid timezone names accepted by the API. |
| cm_get_system_dateA | Get the current date and time in the account's timezone. |
| cm_list_adminsA | List all (active or invited) administrators on the account. |
| cm_get_adminA | Get details for a specific administrator by email address. |
| cm_add_adminB | Add a new administrator to the account. |
| cm_update_adminB | Update an administrator's email address and/or name. |
| cm_delete_adminA | ⚠️ Remove an administrator's access from the account. |
| cm_get_account_primary_contactA | Get the account's primary contact email address. |
| cm_set_account_primary_contactA | Set the account's primary contact to an existing administrator. |
| cm_create_external_sessionC | Initiate an external single-sign-on login session for a member, returning a URL to the Campaign Monitor UI. |
| cm_create_clientB | Create a new client in the account. |
| cm_get_clientA | Get full details for a client, including API key and billing settings. |
| cm_delete_clientA | ⚠️ Permanently delete a client from the account. |
| cm_get_client_listsA | Get all subscriber lists belonging to a client. |
| cm_get_lists_for_emailA | Find all of a client's lists that a specific email address is subscribed to. |
| cm_get_client_segmentsA | Get all segments across all of a client's lists. |
| cm_get_client_suppression_listB | Get the client's suppression list (paged). |
| cm_suppress_emailsB | Add one or more email addresses to a client's suppression list. |
| cm_unsuppress_emailA | Remove an email address from a client's suppression list. |
| cm_get_client_templatesA | Get all templates belonging to a client. |
| cm_set_client_basicsA | Update a client's basic details (company name, country, timezone). |
| cm_set_client_payg_billingA | Configure pay-as-you-go (PAYG) billing settings for a client. |
| cm_set_client_monthly_billingC | Configure monthly billing settings for a client. |
| cm_transfer_creditsA | Transfer email credits to or from a client (negative to take credits back). |
| cm_list_peopleA | List all (active or invited) people for a client. |
| cm_get_personA | Get details for a specific person on a client by email. |
| cm_add_personB | Add a new person to a client account. |
| cm_update_personB | Update an existing person on a client account. |
| cm_delete_personB | ⚠️ Delete a person from a client account. |
| cm_get_client_primary_contactA | Get a client's primary contact email address. |
| cm_set_client_primary_contactB | Set a client's primary contact to an existing person. |
| cm_get_client_tagsA | Get all campaign tags for a client with their campaign counts. |
| cm_get_client_sent_campaignsA | Get a client's sent campaigns. |
| cm_get_client_scheduled_campaignsA | Get a client's currently scheduled campaigns. |
| cm_get_client_draftsA | Get a client's draft campaigns. |
| cm_get_sending_domainsA | Get all sending domains for a client and their verification status. |
| cm_add_sending_domainB | Add a new sending domain to a client. |
| cm_delete_sending_domainA | ⚠️ Remove a sending domain from a client. |
| cm_copy_sending_domainB | Copy a verified sending domain from another client to this client. |
| cm_authenticate_sending_domainB | Verify/authenticate the DNS records for a client's sending domain. |
| cm_create_campaignB | Create a draft campaign from HTML/text content for a client. |
| cm_create_campaign_from_templateB | Create a draft campaign from a saved template for a client. |
| cm_send_campaignA | ⚠️ Send a draft campaign immediately or schedule it. SendDate 'Immediately' sends now; otherwise provide a date in the client's timezone (YYYY-MM-DD HH:MM). |
| cm_send_campaign_previewA | Send a preview/test of a draft campaign to specific recipients. |
| cm_unschedule_campaignA | Cancel a scheduled campaign and return it to draft status. |
| cm_delete_campaignA | ⚠️ Permanently delete a campaign (draft, scheduled, or sent) from the account. |
| cm_get_campaign_summaryA | Get a campaign's overall performance summary (opens, clicks, bounces, etc.). |
| cm_get_campaign_email_client_usageA | Get the email clients used to open a campaign. |
| cm_get_campaign_lists_and_segmentsA | Get the lists and segments a campaign was sent to. |
| cm_get_campaign_recipientsA | Get the paged list of recipients a campaign was sent to. |
| cm_get_campaign_opensA | Get paged campaign opens with timestamps and geolocation. |
| cm_get_campaign_clicksA | Get paged campaign link clicks with URLs, timestamps and geolocation. |
| cm_get_campaign_bouncesA | Get paged campaign bounces with bounce type and reason. |
| cm_get_campaign_unsubscribesB | Get paged campaign unsubscribes with timestamps. |
| cm_get_campaign_spam_complaintsB | Get paged spam complaints for a campaign. |
| cm_create_listB | Create a new subscriber list for a client. |
| cm_get_listB | Get a list's details and configuration. |
| cm_update_listB | Update a list's settings. |
| cm_delete_listA | ⚠️ Permanently delete a list and all its subscribers. |
| cm_get_list_statsC | Get subscriber statistics for a list. |
| cm_get_custom_fieldsA | Get all custom fields defined on a list. |
| cm_create_custom_fieldC | Create a new custom field on a list. |
| cm_update_custom_fieldB | Update a custom field's name and preference-center visibility. |
| cm_update_custom_field_optionsA | Update the selectable options of a multi-valued custom field. |
| cm_delete_custom_fieldA | ⚠️ Delete a custom field from a list. |
| cm_get_active_subscribersA | Get a list's active subscribers (paged, optionally since a date). |
| cm_get_unconfirmed_subscribersA | Get a list's unconfirmed subscribers (paged). |
| cm_get_unsubscribed_subscribersB | Get a list's unsubscribed subscribers (paged). |
| cm_get_bounced_subscribersA | Get a list's bounced subscribers (paged). |
| cm_get_deleted_subscribersA | Get a list's deleted subscribers (paged). |
| cm_get_list_segmentsB | Get all segments defined on a list. |
| cm_get_list_webhooksA | Get all webhooks configured on a list. |
| cm_create_webhookB | Create a webhook on a list for subscribe/deactivate/update events. |
| cm_delete_webhookA | ⚠️ Delete a webhook from a list. |
| cm_test_webhookB | Send a test event to a webhook to verify its endpoint. |
| cm_activate_webhookB | Activate (enable) a webhook on a list. |
| cm_deactivate_webhookA | Deactivate (disable) a webhook on a list. |
| cm_create_segmentB | Create a new segment on a list with the given rule groups. |
| cm_update_segmentA | Update a segment's title and replace its rule groups. |
| cm_add_segment_rulegroupA | Add a rule group to an existing segment without removing current rules. |
| cm_get_segmentA | Get a segment's name, list ID, and active subscriber count. |
| cm_get_segment_subscribersA | Get the active subscribers matching a segment's rules (paged). |
| cm_clear_segment_rulesA | ⚠️ Clear all rules and rule groups from a segment. |
| cm_delete_segmentC | ⚠️ Delete a segment from its list. |
| cm_add_subscriberB | Add (or resubscribe) a subscriber to a list. |
| cm_update_subscriberA | Update an existing subscriber's details (identified by current email). |
| cm_import_subscribersC | Bulk-add many subscribers to a list in a single request. |
| cm_get_subscriberA | Get a subscriber's details including state and custom fields. |
| cm_get_subscriber_historyB | Get a subscriber's campaign and workflow email activity history. |
| cm_unsubscribe_subscriberB | Unsubscribe an active subscriber from a list. |
| cm_delete_subscriberB | ⚠️ Mark a subscriber as deleted from a list. |
| cm_get_templateA | Get the basic details of a template (name, preview URLs, screenshot). |
| cm_create_templateB | Create a new template for a client from hosted HTML (and optional ZIP of assets). |
| cm_update_templateA | Update an existing template's name and file URLs. |
| cm_copy_templateA | Copy a template to a nominated destination client. |
| cm_delete_templateB | ⚠️ Delete a template. |
| cm_list_smart_emailsB | List smart transactional emails, optionally filtered by status and client. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kanopi/campaign-monitor-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server