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) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- 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