Back to MCP Servers

Courier MCP Server

Official Courier MCP server for sending notifications, managing users and lists, configuring brands, and invoking automations across email, SMS, push, and chat.

Email & Outbound by Courier (trycourier) API Key active
Overview

The Courier MCP server is the official Model Context Protocol implementation for Courier's notification API. It exposes around 60 tools that let AI agents send messages across email, SMS, push, and chat channels, manage user profiles and subscriptions, configure brands and templates, and orchestrate bulk and automated notification flows.

Courier hosts the server at https://mcp.courier.com, so most users do not need to run anything locally. Authentication is handled with a Courier API key passed in the api_key header. The server is built on top of the official @trycourier/courier Node SDK, which is auto-generated from Courier's API spec, so coverage stays in sync with the underlying platform.

Capabilities include direct and templated sends, list and audience management, tenant operations for multi-tenant workspaces, JWT generation for user-scoped auth, push token registration, audit event lookups, translation updates, and bulk job creation. A local development mode is also available for self-hosting via sh dev.sh.

Tools

Tool Description
send_message Send a direct notification to one or more recipients across configured channels.
send_message_template Send a notification using a saved Courier template.
send_message_to_list Send a message to all subscribers of a Courier list.
send_message_to_list_template Send a templated message to a Courier list.
list_messages List messages with filtering by status, recipient, or time.
get_message Retrieve a message by ID.
get_message_content Get the rendered content of a delivered message.
get_message_history Get the delivery history for a message.
cancel_message Cancel a queued or in-flight message.
get_user_profile_by_id Retrieve a user profile.
create_or_merge_user Create a user profile or merge data into an existing one.
replace_profile Replace a user profile in full.
delete_profile Delete a user profile.
get_user_list_subscriptions List the lists a user is subscribed to.
subscribe_user_to_lists Subscribe a user to one or more lists.
delete_user_list_subscriptions Remove a user from list subscriptions.
list_lists List all Courier lists.
get_list Get a list by ID.
get_list_subscribers Get subscribers of a list.
create_list Create a new list.
subscribe_user_to_list Subscribe a single user to a list.
unsubscribe_user_from_list Unsubscribe a user from a list.
list_audiences List all audiences.
get_audience Get an audience by ID.
list_audience_members List members of an audience.
update_audience Create or update an audience.
delete_audience Delete an audience.
list_notifications List notifications in the Courier library.
get_notification_content Get published notification content.
get_notification_draft_content Get draft notification content.
create_brand Create a new brand.
get_brand Retrieve a brand by ID.
list_brands List configured brands.
generate_jwt_for_user Generate a JWT for client-side user-scoped auth.
list_user_push_tokens List push tokens for a user.
get_user_push_token Get a specific push token.
create_or_replace_user_push_token Register or replace a push token for a user.
invoke_automation_template Run a saved Courier automation by template ID.
invoke_ad_hoc_automation Run an ad-hoc automation definition.
create_bulk_job Create a new bulk send job.
add_bulk_users Add recipients to a bulk job.
run_bulk_job Execute a previously created bulk job.
get_bulk_job Get status of a bulk job.
list_bulk_users List recipients added to a bulk job.
get_audit_event Retrieve a single audit event.
list_audit_events List audit events.
track_inbound_event Track an inbound event into Courier.
get_tenant Retrieve a tenant.
create_or_update_tenant Create or update a tenant.
list_tenants List tenants.
delete_tenant Delete a tenant.
get_user_preferences Get a user's notification preferences.
update_user_preference_topic Update a user's preference for a topic.
list_user_tenants List tenants a user belongs to.
add_user_to_tenant Add a user to a tenant.
remove_user_from_tenant Remove a user from a tenant.
get_translation Get a translation entry.
update_translation Update a translation entry.
courier_installation_guide Returns documentation for installing and configuring Courier.
get_environment_config Local-only diagnostic that returns environment configuration.
Setup Guide

Prerequisites

  • A Courier account with an API key from app.courier.com/settings/api-keys

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "Courier": {
      "url": "https://mcp.courier.com",
      "headers": {
        "api_key": "YOUR_COURIER_API_KEY"
      }
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "Courier": {
      "url": "https://mcp.courier.com",
      "headers": {
        "api_key": "YOUR_COURIER_API_KEY"
      }
    }
  }
}

Claude Code CLI

claude mcp add Courier --transport http --url https://mcp.courier.com --header "api_key: YOUR_COURIER_API_KEY"

Local development (optional)

git clone https://github.com/trycourier/courier-mcp.git
cd courier-mcp
sh dev.sh

Then point your MCP client at http://localhost:3000. The optional base_url header can be used to override the default https://api.courier.com endpoint.

Use Cases
  • Send transactional notifications from an agent across email, SMS, push, and chat in one call without writing channel-specific code.
  • Sync user profiles and list subscriptions during onboarding flows, including merging traits and toggling preferences from natural language.
  • Trigger Courier automations or bulk jobs for campaigns like dunning, password resets, or product announcements, then monitor delivery status.
  • Audit message delivery by retrieving message history, content, and audit events to diagnose why a notification did or did not reach a recipient.
  • Manage multi-tenant workspaces by creating tenants, assigning users, and customizing brands per tenant from a single agent session.
Example Prompts
  • "Send a welcome email using the welcome-v2 template to user_id usr_123 with their first name."
  • "List all messages sent in the last 24 hours that failed delivery and show the error from each message history."
  • "Create a list called beta-program, subscribe these five user IDs, and send them the beta-invite template."
  • "Generate a Courier JWT for user acme_42 scoped to read their inbox."
  • "Create a bulk job from the monthly-newsletter template, add the audience members from audience_paid_users, then run it."
Pros
  • Official server maintained by Courier and hosted at mcp.courier.com, so no infrastructure to run.
  • Broad coverage with around 60 tools spanning sends, profiles, lists, audiences, brands, automations, tenants, and audit events.
  • Built on the auto-generated @trycourier/courier SDK, so the surface stays current with the underlying API.
  • Simple API key auth via header works cleanly across Cursor, Claude Desktop, and Claude Code.
Limitations
  • Requires a Courier account and API key, and notification volume is tied to Courier pricing.
  • Many tools are destructive or perform live sends, so clients without per-tool gating risk unintended messages going out. Some tools carry destructiveHint annotations but enforcement is up to the client.
  • Header-based API key auth means anyone with access to the client config can send on your behalf; there is no per-user OAuth flow.
Alternatives