Back to Novu

Novu MCP Server

docs/platform/build-with-ai/mcp.mdx

3.18.012.1 KB
Original Source

The Novu MCP Server exposes Novu's notification infrastructure as tools that AI assistants can discover and use in real time. Connect your AI tool to manage subscribers, workflows, integrations, and delivery activity from natural-language prompts.

<Note> Novu also hosts a separate **documentation MCP server** at [docs.novu.co/mcp](https://docs.novu.co/mcp) that lets AI tools search and read this documentation site. The Novu MCP Server described on this page manages your Novu account — triggers, workflows, subscribers, and more. </Note>

About the Novu MCP server

The Model Context Protocol (MCP) is an open standard for connecting AI applications to external services. Once connected, you can prompt your AI assistant to:

  • Trigger workflows for specific subscribers
  • Search and inspect subscriber data
  • Update subscriber notification preferences
  • Debug failed notifications and delivery issues
  • Analyze notification activity and logs
  • Create and manage workflows

Some AI tools support both MCP and Agent Skills. MCP gives your assistant live access to your Novu account, while skills instruct agents how to use Novu APIs and SDKs effectively. They're complementary — connect the MCP server for account operations and install skills for implementation guidance.

Prerequisites

  • A Novu Cloud account (to sign in with OAuth), or a Novu API key
  • An MCP-compatible AI tool — Cursor, Claude Code, ChatGPT, Claude Desktop, VS Code, Codex, or similar

Endpoints

Novu Cloud has one MCP endpoint per region:

RegionMCP URL
UShttps://mcp.novu.co/
EUhttps://eu.mcp.novu.co/

Use the URL that matches your dashboard region — eu.dashboard.novu.co pairs with the EU endpoint, everything else uses US.

Connect your AI tool

Connecting with OAuth is recommended — you don't copy or paste a key; your client signs you in and picks up your organization automatically. If your client doesn't support OAuth, or you're on self-hosted Novu, use an API key instead.

<Tabs> <Tab title="Cursor">

Open Cursor SettingsTools & IntegrationsNew MCP Server, and add:

json
{
  "mcpServers": {
    "novu": {
      "url": "https://mcp.novu.co/"
    }
  }
}

Save the file. Cursor will prompt you to sign in to Novu the first time it calls a tool.

</Tab> <Tab title="VS Code">

Add to .vscode/mcp.json (or your user MCP settings):

json
{
  "servers": {
    "novu": {
      "type": "http",
      "url": "https://mcp.novu.co/"
    }
  }
}

Reload VS Code and approve the sign-in prompt when it appears.

</Tab> <Tab title="Claude Code">
bash
claude mcp add --transport http novu https://mcp.novu.co/

Then run /mcp inside Claude Code to sign in.

</Tab> <Tab title="ChatGPT">

Add Novu as a custom connector using the MCP URL for your region, and choose OAuth as the connection mechanism. ChatGPT will prompt you to sign in to Novu.

</Tab> <Tab title="Claude Desktop">

Claude Desktop doesn't yet support remote OAuth, so connect with an API key through the mcp-remote proxy (requires Node.js 18+):

json
{
  "mcpServers": {
    "novu": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.novu.co/",
        "--header",
        "Authorization:Bearer your-novu-api-key"
      ]
    }
  }
}
</Tab> <Tab title="Codex">

Codex connects with an API key today:

bash
export NOVU_API_KEY="your-novu-api-key"
toml
[mcp_servers.novu]
url = "https://mcp.novu.co/"
bearer_token_env_var = "NOVU_API_KEY"
</Tab> <Tab title="Other">

Any MCP client that supports remote OAuth can connect with just the URL and no header:

SettingValue
URLhttps://mcp.novu.co/ (US) or https://eu.mcp.novu.co/ (EU)
TransportStreamable HTTP
AuthenticationOAuth (no header), or an API key if your client doesn't support OAuth
</Tab> </Tabs>

API key (fallback)

Use a Novu API key for clients without OAuth support, mcp-remote / stdio setups, autonomous agents, and all self-hosted Novu deployments. Copy your secret key from the Novu Dashboard and send it as a bearer token:

json
{
  "mcpServers": {
    "novu": {
      "url": "https://mcp.novu.co/",
      "headers": {
        "Authorization": "Bearer your-novu-api-key"
      }
    }
  }
}

Presenting an API key skips the OAuth sign-in entirely. A key is bound to a single environment, so connect to the endpoint matching its region and there's nothing else to configure.

Environments

OAuth sessions are scoped to your organization and default to the Development environment. To act on a different environment (for example, Production), call get_environments and pass the environment's _id as the optional environmentId parameter on any tool call.

API keys are already bound to one environment, so environmentId has no effect on API key sessions.

<Prompt description="Switch an OAuth session to a specific environment" icon="bot" actions={["copy", "cursor"]}> List my Novu environments, then show notifications from Production (not Development). </Prompt>

Example prompts

After connecting the Novu MCP server, copy or open these prompts in Cursor to verify the connection and perform common tasks.

<Note> Replace placeholder values (for example, subscriber IDs and workflow identifiers) with values from your Novu dashboard. </Note>

Verify connection

<Prompt description="Test your Novu MCP connection" icon="bot" actions={["copy", "cursor"]}> Run whoami to verify I'm authenticated and show my Novu region. </Prompt>

<Prompt description="List your notification workflows" icon="bot" actions={["copy", "cursor"]}> Show me all my notification workflows in Novu. </Prompt>

Subscriber management

<Prompt description="Find a subscriber by email" icon="bot" actions={["copy", "cursor"]}> Find subscriber [email protected] in my Novu account and show their profile details. </Prompt>

<Prompt description="Create a new subscriber" icon="bot" actions={["copy", "cursor"]}> Create a new subscriber with subscriberId user-456, email [email protected], and firstName Jane in my Novu account. </Prompt>

Trigger and debug

<Prompt description="Trigger a workflow for a subscriber" icon="bot" actions={["copy", "cursor"]}> Trigger my welcome-email workflow for subscriber test-user-123 with payload containing userName "Jane" and activationLink "https://app.example.com/activate". </Prompt>

<Prompt description="Debug failed notifications" icon="bot" actions={["copy", "cursor"]}> Show recent failed notifications in the last 24 hours and help me debug delivery issues. </Prompt>

MCP tools

Your AI assistant discovers these tools automatically when it connects, and calls the right one based on your prompt.

CategoryToolDescription
AuthwhoamiVerify the current credential and show your identity and region
Environmentsget_environmentsList environments — use an _id as the environmentId parameter on other tools
Subscriberscreate_subscriberCreate a subscriber with name, email, phone, and custom data
Subscribersget_subscriberRetrieve a subscriber by subscriberId
Subscribersupdate_subscriberUpdate a subscriber's attributes
Subscribersdelete_subscriberDelete a subscriber
Subscribersfind_subscribersSearch subscribers by email, name, phone, or ID
Preferencesget_subscriber_preferencesGet a subscriber's channel preferences
Preferencesupdate_subscriber_preferencesUpdate a subscriber's channel preferences
Workflowscreate_workflowCreate a workflow, including its steps
Workflowsget_workflowGet a workflow's full definition
Workflowsget_workflowsList all workflows
Workflowsupdate_workflowUpdate an existing workflow
Workflowsdelete_workflowDelete a workflow
Workflowstrigger_workflowTrigger a workflow for a subscriber
Workflowsbulk_trigger_workflowTrigger multiple workflows in one call
Workflowscancel_triggered_eventCancel a pending triggered event
Notificationsget_notificationGet a notification with execution logs
Notificationsget_notificationsFetch notifications with filtering
Integrationsget_integrationsList channel integrations
Integrationsget_active_integrationsList active integrations
Integrationsdelete_integrationDelete an integration
Integrationsset_primary_integrationSet an integration as primary for its channel
<Note> Every tool accepts an optional `environmentId` parameter — see [Environments](#environments). </Note>

Use multiple MCP servers

You can connect both the Novu MCP server and the Novu documentation MCP server at the same time. Each serves a different purpose:

ServerURLPurpose
Novu MCPhttps://mcp.novu.co/ (US) / https://eu.mcp.novu.co/ (EU)Manage your Novu account — workflows, subscribers, triggers
Novu Docs MCPhttps://docs.novu.co/mcpSearch and read Novu documentation

Connected MCP servers don't consume context until the AI calls a tool. Be specific in your prompts so the assistant uses the most relevant server — for example, "trigger my welcome workflow" uses the Novu MCP, while "how do I configure digest steps?" uses the Docs MCP.

Troubleshooting

<AccordionGroup> <Accordion title="OAuth sign-in loop or never connects"> Confirm the URL matches your region, and that you haven't also set an `Authorization` header — presenting a credential skips OAuth entirely. Restart your AI assistant after changing the config. </Accordion> <Accordion title="Wrong environment data"> OAuth sessions default to Development. Call `get_environments` and pass the `_id` you want as `environmentId`. </Accordion> <Accordion title="401 after previously working"> Your OAuth token expired or was revoked — reconnect through your client to sign in again. </Accordion> <Accordion title="Empty results or authentication errors"> Double-check you're on the endpoint for your region (`eu.dashboard.novu.co` → `https://eu.mcp.novu.co/`), and that any API key is sent as `Authorization: Bearer your-api-key` with no extra spaces. </Accordion> <Accordion title="Self-hosted Novu"> OAuth isn't available on self-hosted deployments — connect with an [API key](#api-key-fallback) from your instance. See [API keys](/platform/developer/api-keys). </Accordion> <Accordion title="Still not connecting"> Restart your AI assistant after config changes. For Claude Code, run `claude mcp list`. For Codex, run `/mcp` in the TUI. For Claude Desktop, confirm Node.js is installed. </Accordion> </AccordionGroup>

Security

  • Prefer OAuth over long-lived API keys for interactive clients — OAuth tokens are short-lived and revocable.
  • The server never puts credentials in URLs, and holds no ambient credentials between sessions.
  • Rotate an API key from the Dashboard immediately if you suspect it's been exposed.
  • Self-hosted Novu always uses API keys; OAuth is available for Novu Cloud only.
  • Use caution when combining the Novu MCP server with other MCP servers or untrusted data in the same session, and review tool calls before approving actions that modify your data.
<Columns cols={2}> <Card title="Agent Skills" href="/platform/build-with-ai/skills"> Give AI coding assistants implementation guidance for Novu SDKs and workflows. </Card> <Card title="Agent Toolkit" href="/platform/build-with-ai/agent-toolkit"> Embed Novu tools inside your own AI agents with the `@novu/agent-toolkit` package. </Card> <Card title="Novu Docs MCP" href="https://docs.novu.co/mcp"> Connect AI tools to search and read this documentation site. </Card> <Card title="API keys" href="/platform/developer/api-keys"> Learn how to create and manage the secret keys used for API key authentication. </Card> </Columns>