Plunk MCP server

Send email and manage contacts, campaigns, segments and workflows in a Plunk project

Official · Plunk TypeScript Local · stdio CommunicationCRM and sales

58 popularity score ★ 5.6k ↓ 1.4k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs PLUNK_API_KEY. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add plunk -e PLUNK_API_KEY=<PLUNK_API_KEY> -- npx -y @plunk/mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "plunk": {
      "command": "npx",
      "args": [
        "-y",
        "@plunk/mcp"
      ],
      "env": {
        "PLUNK_API_KEY": "<PLUNK_API_KEY>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "plunk": {
      "command": "npx",
      "args": [
        "-y",
        "@plunk/mcp"
      ],
      "env": {
        "PLUNK_API_KEY": "<PLUNK_API_KEY>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "plunk": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@plunk/mcp"
      ],
      "env": {
        "PLUNK_API_KEY": "<PLUNK_API_KEY>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.plunk]
command = "npx"
args = ["-y", "@plunk/mcp"]

[mcp_servers.plunk.env]
PLUNK_API_KEY = "<PLUNK_API_KEY>"
Gemini CLITerminal
gemini mcp add --scope user -e PLUNK_API_KEY=<PLUNK_API_KEY> plunk npx -- -y @plunk/mcp

Settings 7

PLUNK_API_KEY Required: Project secret key (sk_...); the server will not start without it and rejects pk_ keys.
PLUNK_API_URL Optional: API base URL; defaults to https://next-api.useplunk.com, set it for self-hosted Plunk.
PLUNK_PUBLIC_KEY Optional: Public key (pk_...) so plunk_track_event makes one request instead of two.
PLUNK_READ_ONLY Optional: When true, only the 16 read tools are registered (same as --read-only).
PLUNK_ALLOW_UNCONFIRMED_SENDS Optional: When true, sends skip the confirmation prompt; meant for headless use.
PLUNK_MCP_API_KEY Optional: Overrides PLUNK_API_KEY when that name is already used in the environment.
PLUNK_MCP_API_URL Optional: Overrides PLUNK_API_URL for the same reason.

What it does

The Plunk MCP server is the email platform's own connector, published as @plunk/mcp from the main useplunk/plunk repository. It runs locally over stdio and calls the Plunk API with a project's secret key, so an assistant can look up and edit contacts, send transactional messages, draft, test and send campaigns, create segments and templates, and check sender domains and campaign statistics.

A large share of its 42 tools deal with automation workflows: an assistant can create a workflow, add steps of every type the dashboard builder has (send email, delay, wait for event, condition, update contact, webhook, exit), connect and disconnect them, check the graph for problems, enable it and inspect individual runs. Step settings are validated by the server before they are stored, since the Plunk API itself does not check them.

It works against the hosted Plunk service or a self-hosted instance. Without PLUNK_API_URL it talks to https://next-api.useplunk.com, the default set in its config.ts; the server also refuses to start when handed a public pk_ key in place of the secret sk_ key (apps/mcp/src/config.ts, v0.16.0).

What it needs

RuntimeNode.js

Node.js with npx. A Plunk project, hosted or self-hosted, and its secret API key (sk_...) from Settings → API Keys in the dashboard. Self-hosted instances also need PLUNK_API_URL pointing at their API domain.

Limits

Adding or removing sender domains is left out on purpose; domain tools only read. Billing, project deletion and key rotation cannot be reached, as those need a dashboard session. Sending a campaign, sending an email to more than one recipient, enabling a workflow with email steps and starting a workflow run all ask the user to confirm; clients that cannot show that prompt cannot send unless PLUNK_ALLOW_UNCONFIRMED_SENDS is set. A workflow can only be deleted while disabled, and enabling one is refused while its check reports errors.

Who it suits

Teams already sending email through Plunk who want an assistant to handle contact upkeep, campaign drafting and workflow building without the dashboard. Because the secret key gives full access to a project, those who only want reporting should run it with PLUNK_READ_ONLY=true, which leaves only the 16 read tools, or point it at a separate project. People on another email provider need that provider's own server; this one only reaches Plunk.

Tools 42

plunk_list_contacts
Browse or search contacts with cursor paging
plunk_get_contact
Fetch one contact by ID or email address
plunk_verify_email
Check if an address can receive mail
plunk_list_templates
List saved email templates
plunk_list_campaigns
List campaigns with their status
plunk_get_campaign
Get a full campaign including audience size
plunk_get_campaign_stats
Open, click and bounce figures for a campaign
plunk_list_segments
List audience segments
plunk_list_domains
List sender domains and verification state
plunk_check_domain
Recheck a domain's DNS verification
plunk_list_workflows
List automation workflows and whether they are on
plunk_get_workflow
Get a workflow with its steps and links
plunk_check_workflow
Outline a workflow and report problems that would fail at run time
plunk_list_workflow_fields
List fields a condition step can test
plunk_list_workflow_executions
List runs of a workflow and their state
plunk_get_workflow_execution
Show one run step by step with outputs and errors
plunk_create_contact
Create a contact or update it if it exists
plunk_update_contact
Change a contact's address or custom data
plunk_subscribe_contact
Resubscribe a contact by email or ID
plunk_unsubscribe_contact
Opt a contact out of marketing mail
plunk_delete_contact
Delete a contact permanently
plunk_send_email
Send a transactional email to given recipients
plunk_track_event
Record an event that may trigger workflows
plunk_create_template
Create a reusable email template
plunk_create_campaign
Create a draft campaign
plunk_test_campaign
Send a single test copy to a project member
plunk_send_campaign
Send or schedule a campaign, after confirmation
plunk_cancel_campaign
Stop a scheduled or running campaign
plunk_create_segment
Create an audience segment
plunk_create_workflow
Create a disabled workflow started by an event
plunk_update_workflow
Rename a workflow, change its trigger or re-entry
plunk_duplicate_workflow
Copy a workflow as a disabled draft
plunk_delete_workflow
Delete a workflow that is disabled
plunk_add_workflow_step
Insert one step of any type into a workflow
plunk_add_workflow_steps
Build a whole step sequence with branches at once
plunk_update_workflow_step
Change a step's settings or template
plunk_delete_workflow_step
Remove a step and relink the flow around it
plunk_connect_workflow_steps
Link two steps or a condition branch to a step
plunk_disconnect_workflow_steps
Remove a link between steps
plunk_set_workflow_enabled
Turn a workflow on or off
plunk_start_workflow_execution
Run a workflow for one contact now
plunk_cancel_workflow_executions
Cancel one or all running executions

Similar servers