---
title: MCP Server
description: Connect the hosted Notiflows MCP server to Claude Code, Cursor, or Claude Desktop and manage, publish, and trigger notiflows conversationally over the Model Context Protocol.
---

The Notiflows MCP server is a hosted [Model Context Protocol](https://modelcontextprotocol.io) server that exposes the [Management API](/docs/api/management) as MCP tools. It runs at `https://api.notiflows.com/mcp`, so any MCP-capable client — Claude Code, Cursor, Claude Desktop, and others — can list, inspect, create, validate, publish, and trigger notiflows by talking to an AI assistant.

It is a thin layer over the same Management API the [CLI](/docs/cli) uses: same [account token](/docs/cli/account-tokens), same flat-steps notiflow shape, same server-side validation. Like every Notiflows AI surface, it runs inside *your* assistant on *your* model — the server only carries your API calls, never an LLM.

## Authenticate

The server authenticates with a Notiflows **account token** (prefix `nf_at_`), sent as a bearer token: `Authorization: Bearer nf_at_…`. Create one in the dashboard under **Account → Account tokens**, and name it after the assistant using it (e.g. `claude-mcp`) so its actions stay auditable.

The token is **account-scoped**, so a single connection can manage every project in the account. You pick the target project per call — see [Multiple projects](#multiple-projects).

<Callout type="info">
The account token carries full read/write access through the Management API. There are no per-project tokens or fine-grained scopes today — treat it as a privileged credential, store it in a secret manager, and revoke it if it leaks. See [Account tokens](/docs/cli/account-tokens).
</Callout>

## Connect

Editors speak MCP over stdio, so they reach the hosted HTTP endpoint through [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) — a small npx package that bridges the editor's stdio transport to a remote MCP server and forwards the `Authorization` header. **Node.js 18+** is required (for `npx`).

### Claude Code

```bash
claude mcp add notiflows -- npx -y mcp-remote https://api.notiflows.com/mcp --header "Authorization: Bearer nf_at_YOUR_TOKEN"
```

### Cursor / Claude Desktop

Add the server to your client's MCP config — `.cursor/mcp.json` (Cursor) or `claude_desktop_config.json` (Claude Desktop):

```json
{
  "mcpServers": {
    "notiflows": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://api.notiflows.com/mcp", "--header", "Authorization: Bearer nf_at_YOUR_TOKEN"]
    }
  }
}
```

Replace `nf_at_YOUR_TOKEN` with your account token. Restart the editor (or reload its MCP servers) and the Notiflows tools become available to the assistant.

## Multiple projects

Because the account token reaches every project, one connection manages all of them. Project-scoped tools take an optional `project` argument — a project **slug**. There is **no implicit default** on the hosted server: omit `project` and the tool returns an error asking you to supply one.

Call `list_projects` to discover the slugs your token can access, then pass one explicitly:

```json
list_notiflows {"project": "marketing"}
```

In practice the assistant carries the project across a conversation once you've named it, so you usually set it once ("work in the `marketing` project") and let the model thread it through.

## Tools

The server exposes 17 tools. Each maps to a verified Management API endpoint.

**Identity**

- `whoami` — verify the token and return the authenticated account.
- `list_projects` — list the projects the account token can access, with their slugs.

**Notiflows**

- `list_notiflows` — list notiflows in the project (summaries, no steps).
- `get_notiflow` — fetch a notiflow by handle, including its current and published version steps.
- `upsert_notiflow` — create or update a notiflow (creates a new draft version). Send the **full** flat steps array, including the terminal `trigger` and `end` steps; handles are lowercase letters, digits, and hyphens only.
- `validate_notiflow` — validate the current draft on the server.
- `publish_notiflow` — publish the current draft so it becomes live for execution.
- `activate_notiflow` — toggle whether the notiflow can be triggered (the active flag).
- `rollback_notiflow` — discard the unpublished draft and revert to the published version.
- `run_notiflow` — trigger a run. Requires either `recipients` or a `topic`. Runs the **published** version by default; pass `draft: true` to test-run the current unpublished draft. Attributed to the account token (auditable). Returns `notiflow_run_id`.

**Versions**

- `list_versions` — list a notiflow's version history.
- `get_version` — fetch a specific version (with steps).

**Templates**

- `get_template` — read a channel step's template.
- `upsert_template` — create or update a channel step's template (body must be non-empty).

**Channels** (read-only — configured in the dashboard)

- `list_channels` — list the project's delivery channels.
- `get_channel` — fetch a channel by handle.

**Docs**

- `search_docs` — search the Notiflows documentation.

<Callout type="info">
**Safe by design.** There are no delete or archive tools, and channels are read-only. `rollback_notiflow` (which discards an unpublished draft) is the only semi-destructive operation, so an assistant can create and ship freely without risking data loss.
</Callout>

## What you can ask

With the server connected, you describe the outcome and let the assistant drive the tools:

- "List the projects I have access to, then list the notiflows in `marketing`."
- "Create a welcome email notiflow in `acme` that sends an email, waits a day, then sends a follow-up."
- "Publish the `order-shipped` notiflow."
- "Run `welcome-series` for `user_123` with `first_name` set to Ada."
- "Show me the version history of `order-shipped` and roll back the draft."

## Related

- [CLI](/docs/cli) — the same operations at the terminal and in CI.
- [Agent toolkit](/docs/ai/agent-toolkit) — give your own agents the ability to trigger notiflows.
- [Agent skills](/docs/ai/skills) — teach your assistant the notiflow schemas and CLI.
- [llms.txt & docs for agents](/docs/ai/llms-txt) — machine-readable docs for grounding an assistant.
- [Notiflows for AI](/docs/ai) — the AI surfaces overview.
