mcp-sfmc
v1.1.2
Published
MCP Server for Salesforce Marketing Cloud REST and SOAP APIs
Maintainers
Readme
mcp-sfmc
An MCP (Model Context Protocol) server for Salesforce Marketing Cloud REST and SOAP APIs.
Features
- 90+ tools covering all major SFMC API areas
- Automatic token management with refresh (tokens expire after 20 min)
- REST API support: Auth, Assets, Contacts, Data Events, Journeys, Transactional Messaging, Push, SMS, ENS, Audit
- SOAP API support: Data Extensions, Automations, Subscribers, Users, Admin
Installation
npm install -g mcp-sfmcConfiguration
Create a JSON config file (e.g. ~/.config/sfmc-accounts.json) with an array of business unit credentials:
[
{
"business_unit_name": "Primary",
"subdomain": "your-subdomain",
"grant_type": "client_credentials",
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"account_id": "your-mid"
},
{
"business_unit_name": "Sales",
"subdomain": "sales-subdomain",
"grant_type": "client_credentials",
"client_id": "sales-client-id",
"client_secret": "sales-client-secret",
"account_id": "sales-mid"
}
]| Field | Required | Description |
|---|---|---|
| business_unit_name | Yes | Display name used to identify this BU in tool calls |
| subdomain | Yes | Your tenant subdomain (e.g. abc123def456) |
| grant_type | Yes | Always client_credentials |
| client_id | Yes | OAuth client ID |
| client_secret | Yes | OAuth client secret |
| account_id | No | MID of the business unit |
Then set the SFMC_CONFIG_PATH environment variable to point to this file.
Multiple business units
Every tool accepts an optional business_unit parameter. If omitted, the first account in the config file is used.
"List journeys for the Sales business unit"
Usage with Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"sfmc": {
"command": "mcp-sfmc",
"env": {
"SFMC_CONFIG_PATH": "/Users/you/.config/sfmc-accounts.json"
}
}
}
}Usage with npx (no install)
{
"mcpServers": {
"sfmc": {
"command": "npx",
"args": ["mcp-sfmc"],
"env": {
"SFMC_CONFIG_PATH": "/Users/you/.config/sfmc-accounts.json"
}
}
}
}Available Tools
Authentication
sfmc_get_token— Request a new access tokensfmc_get_user_info— Get current user infosfmc_discovery— Discover available API resources
Content Builder (Assets)
sfmc_asset_list— List assetssfmc_asset_get— Get asset by IDsfmc_asset_create— Create asset (image, template, HTML email, etc.)sfmc_asset_update— Update assetsfmc_asset_delete— Delete assetsfmc_asset_query— Advanced asset searchsfmc_asset_get_categories— List folderssfmc_asset_create_category— Create foldersfmc_asset_update_category— Update foldersfmc_asset_delete_category— Delete folder
Contacts
sfmc_contact_create— Create contactsfmc_contact_update— Update contactsfmc_contact_search_by_email— Search contacts by emailsfmc_contact_delete— Delete contactssfmc_contact_get_schema— Get contact schemasfmc_validate_email— Validate email address
Data Events (Data Extensions via REST)
sfmc_de_upsert_rows_by_key/sfmc_de_upsert_rows_by_id— Bulk upsert rowssfmc_de_upsert_row_by_key/sfmc_de_upsert_row_by_id— Single row upsertsfmc_de_increment_column_by_key/sfmc_de_increment_column_by_id— Increment numeric columnsfmc_de_async_*— Async variants of all abovesfmc_data_import_file— Import file asyncsfmc_data_import_status— Check import status
Journey Builder
sfmc_journey_list— List journeyssfmc_journey_get— Get journey by IDsfmc_journey_create— Create journeysfmc_journey_publish— Publish journeysfmc_journey_stop— Stop journeysfmc_journey_delete— Delete journeysfmc_journey_fire_entry_event— Inject contact into journeysfmc_journey_exit_contact— Remove contact from journeysfmc_journey_contact_membership— Check journey membershipsfmc_journey_get_event_definitions— List event definitionssfmc_journey_create_event_definition— Create event definition
Transactional Messaging
sfmc_tx_email_create_definition— Create email send definitionsfmc_tx_email_send_single— Send single transactional emailsfmc_tx_email_send_batch— Send batch of emailssfmc_tx_email_get_message_status— Check delivery statussfmc_tx_sms_create_definition— Create SMS send definitionsfmc_tx_sms_send_single— Send single transactional SMSsfmc_triggered_send— Send via classic Triggered Send
Push Notifications
sfmc_push_create_message— Create push messagesfmc_push_broadcast_message— Broadcast to all subscriberssfmc_push_send_to_list— Send to listsfmc_push_create_location/sfmc_push_list_locations— Manage geofence locations
SMS
sfmc_sms_send_message— Send SMS to contactssfmc_sms_create_keyword— Create SMS keywordsfmc_sms_optin— Opt-in mobile numbersfmc_sms_create_subscription— Create SMS subscription
Event Notification Service (ENS)
sfmc_ens_create_callback— Register webhook endpointsfmc_ens_create_subscription— Subscribe to event typessfmc_ens_list_callbacks/sfmc_ens_list_subscriptions_by_callback— List callbacks/subscriptions
Audit
sfmc_audit_get_events— Get audit eventssfmc_audit_get_security_events— Get security events
SOAP APIs
sfmc_soap_de_retrieve— Query Data Extension rowssfmc_soap_de_create_definition— Create Data Extensionsfmc_soap_de_upsert_rows— Upsert rowssfmc_soap_de_delete_rows— Delete rowssfmc_soap_de_clear— Clear all DE rowssfmc_soap_automation_retrieve— List automationssfmc_soap_automation_start/sfmc_soap_automation_stop/sfmc_soap_automation_pause— Control automationssfmc_soap_automation_run_once— Run automation immediatelysfmc_soap_subscriber_retrieve— Retrieve subscriberssfmc_soap_subscriber_upsert— Create/update subscribersfmc_soap_user_retrieve— Retrieve userssfmc_soap_account_retrieve— Retrieve business units
Development
git clone https://github.com/your-username/mcp-sfmc
cd mcp-sfmc
npm install
npm run buildRun locally:
SFMC_CONFIG_PATH=./sfmc-accounts.json npm startLicense
MIT
