Braze MCP Server
Official Braze MCP server giving AI agents access to non-PII Braze data: campaigns, Canvases, segments, events, KPIs, templates, and content blocks.
The Braze MCP Server is an official, locally hosted Model Context Protocol server that lets AI clients like Claude Desktop, Cursor, and the Gemini CLI query Braze customer engagement data. It exposes 38 API functions across roughly 15 categories covering campaign analytics, Canvas journeys, segments, custom attributes, events, KPIs, purchases, sessions, sends, media library, content blocks, and email templates. The server is explicitly designed to be non-PII: it returns aggregated data, not user profile records.
The server is distributed as a Python package (braze-mcp-server) on PyPI and is intended to be launched via uvx. It authenticates against the Braze REST API using a dedicated API key and your workspace base URL. Most exposed functions are read-only, with a small set of write actions (create/update content blocks, create/update email templates, create media library assets) gated by explicit permissions on the API key.
It is notable as a first-party server maintained by Braze (the PyPI maintainer is a Braze engineer) and is the canonical way to bring Braze context into LLM-driven workflows. The least-privilege API key model means teams can safely scope an agent to read-only analytics or selectively enable write actions for content authoring.
Tools
| Tool | Description |
|---|---|
list_functions |
List all API functions available on the server. |
call_function |
Invoke a read API function by name. |
call_write_function |
Invoke a write API function (requires write permissions on the API key). |
get_campaign_list |
List campaigns in the workspace. |
get_campaign_details |
Get metadata and configuration for a specific campaign. |
get_campaign_dataseries |
Get time-series performance data for a campaign. |
get_canvas_list |
List Canvas journeys. |
get_canvas_details |
Get Canvas configuration and step metadata. |
get_canvas_data_summary |
Summary analytics for a Canvas over a period. |
get_canvas_data_series |
Time-series analytics for a Canvas. |
get_catalogs |
List catalogs. |
get_catalog_items |
List items in a catalog. |
get_catalog_item |
Get a single catalog item. |
list_integrations |
List Cloud Data Ingestion integrations. |
get_integration_job_sync_status |
Get sync status for a CDI integration job. |
get_content_blocks_list |
List content blocks. |
get_content_blocks_info |
Get details of a content block. |
create_content_block |
Create a new content block (write). |
update_content_block |
Update an existing content block (write). |
get_custom_attributes |
List custom attributes defined in the workspace. |
get_events_list |
List custom events. |
get_events_data_series |
Time-series counts for a custom event. |
get_events |
Get custom event metadata. |
get_new_users_data_series |
New users KPI time series. |
get_dau_data_series |
Daily active users KPI time series. |
get_mau_data_series |
Monthly active users KPI time series. |
get_uninstalls_data_series |
Uninstalls KPI time series. |
create_media_library_asset |
Upload an asset to the media library (write). |
get_scheduled_broadcasts |
List scheduled broadcast messages. |
get_preference_centers |
List preference centers. |
get_preference_center_details |
Get a preference center configuration. |
get_product_list |
List purchase products. |
get_revenue_series |
Revenue time series. |
get_quantity_series |
Purchase quantity time series. |
get_segment_list |
List segments. |
get_segment_data_series |
Segment size time series. |
get_segment_details |
Segment metadata. |
get_send_data_series |
Send analytics time series by send_id. |
get_session_data_series |
Session counts time series. |
get_sdk_authentication_keys |
List SDK authentication keys. |
get_user_subscription_groups |
Get subscription groups for a user. |
get_subscription_group_status |
Get a user's status in a subscription group. |
get_email_templates_list |
List email templates. |
get_email_template_info |
Get email template details. |
create_email_template |
Create a new email template (write). |
update_email_template |
Update an existing email template (write). |
Prerequisites
- A Braze workspace with permission to create API keys
- Your Braze REST endpoint URL (e.g.
https://rest.iad-01.braze.com) - An MCP client: Claude Desktop, Cursor, or Gemini CLI
uvinstalled (the server runs viauvx)
1. Install uv
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows PowerShell:
irm https://astral.sh/uv/install.ps1 | iex
2. Create a dedicated Braze API key
In Braze, go to Settings, APIs and Identifiers, API Keys and create a new key specifically for the MCP client. Assign only the read permissions your agent needs. Leave write permissions off unless you want the agent to create or update content blocks, email templates, or media library assets.
3. Configure your MCP client
Cursor (Settings, Tools and Integrations, MCP Tools, Add Custom MCP) or Gemini CLI (~/.gemini/settings.json):
{
"mcpServers": {
"braze": {
"command": "uvx",
"args": ["--native-tls", "braze-mcp-server@latest"],
"env": {
"BRAZE_API_KEY": "your-braze-api-key",
"BRAZE_BASE_URL": "https://rest.iad-01.braze.com"
}
}
}
}
For Claude Desktop, install the Braze MCP Server desktop extension from Settings, Connectors, Browse Connectors, Desktop Extensions, then enter your API key and base URL.
4. Verify
Restart your client and prompt: List my Braze campaigns or What Braze functions are available?
- Pull campaign and Canvas performance time series into natural language reports without leaving the chat
- Audit segment sizes and trends across the workspace and spot drops in DAU, MAU, or new users
- Inventory and edit content blocks and email templates from an AI assistant, with write actions gated by API key permissions
- Investigate custom events and revenue series for ad-hoc product analytics, for example revenue by product over the last 30 days
- List preference centers, subscription groups, and a user's subscription status for compliance and CX investigations
- "List my top 10 Braze campaigns by sends in the last 14 days and show open rate trends."
- "Compare DAU and MAU for the last 30 days and flag any week-over-week drops."
- "Show revenue and purchase quantity series for product 'pro_annual' over the last 90 days."
- "Find the content block named 'footer_promo_q2' and update its body with this new HTML."
- "Get details for Canvas 'Onboarding v3' and summarize step-level conversion."
- Official, first-party server maintained by Braze and distributed on PyPI
- Broad coverage: 38 functions spanning campaigns, Canvases, segments, KPIs, purchases, templates, and content blocks
- Non-PII by design, which lowers risk when connecting LLMs to a production marketing platform
- Granular permission model: write actions only work if the API key explicitly grants them
- Local-only execution via
uvx, no hosted remote URL, so each user must install Python tooling - Write surface is narrow: only content blocks, email templates, and media library uploads. No campaign or Canvas authoring
- Read functions return aggregated data only, so user-level investigations and PII workflows are not supported
- Still labeled beta on PyPI (Development Status 4)
- Customer.io MCP server for an alternative messaging platform with agent access
- Iterable or Klaviyo community MCP servers for similar customer engagement use cases
- Building directly against the Braze REST API with a custom MCP wrapper if you need PII or campaign authoring