
Plunk MCP Server: Setup for Claude, Cursor and Other Apps
Lets Claude or Cursor send email, manage contacts, draft campaigns and build automation workflows in your Plunk project.
This is the official Plunk server, published as @plunk/mcp. It runs on your computer and talks to Plunk with a secret key from Settings, then API Keys, in your Plunk dashboard. It works with the hosted Plunk product and with a self-hosted one.
Your project's key can read and change everything in that project. The server asks you to confirm before it sends a campaign or emails more than one person, but a client that cannot show a prompt cannot send at all. Use a read-only setting or a separate Plunk project if you want a safe first try.
Good for
- Developers who send transactional email through Plunk and want the assistant to check or send it
- Marketers who draft and schedule campaigns without opening the dashboard
- Teams that build email automations and want the assistant to wire up the steps
- Self-hosters running their own Plunk instance
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install plunk MCP
Claude Code
- 1
Copy this prompt.
Add the plunk MCP server to Claude Code. Run this command: claude mcp add plunk -e PLUNK_API_KEY=<PLUNK_API_KEY> -- npx -y @plunk/mcp Ask me for PLUNK_API_KEY and only put the values in that config, nowhere else. Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Node.js.
Built from the package data we hold. Not yet tested by us.
Tools
Browse or search your contacts
Lists contacts in your Plunk project, or searches them, a page at a time.
Try: “Find contacts whose email ends in @acme.com.”
Network ·
plunk_list_contactsFetch one contact by ID or email
Returns one contact with its custom data. You can pass an email address instead of an ID.
Try: “Show me the Plunk record for ada@example.com.”
Network ·
plunk_get_contactCheck one email's status
Looks up a sent or scheduled email and says what state it is in and when it sends.
Try: “Has the welcome email to ada@example.com gone out yet?”
Network ·
plunk_get_emailCheck if an address can receive mail
Asks Plunk whether an email address looks deliverable before you send to it.
Try: “Is sam@example.org a deliverable address?”
Network ·
plunk_verify_emailList email templates
Lists the reusable email templates saved in the project.
Try: “What email templates do we have?”
Network ·
plunk_list_templatesList campaigns and status
Lists your campaigns and whether each is a draft, scheduled or sent.
Try: “Which campaigns are still drafts?”
Network ·
plunk_list_campaignsFetch one campaign in full
Returns one campaign with its content and how many people it would reach.
Try: “How many people will the October newsletter go to?”
Network ·
plunk_get_campaignOpens, clicks and bounces for a campaign
Returns opens, clicks, bounces and their rates for one campaign.
Try: “How did last week's product update campaign perform?”
Network ·
plunk_get_campaign_statsList audience segments
Lists the saved groups of contacts you can target.
Try: “List my segments.”
Network ·
plunk_list_segmentsList sender domains
Lists the domains you send from and whether each is verified.
Try: “Which sender domains are verified?”
Network ·
plunk_list_domainsRe-check a domain's DNS
Re-runs the DNS check for one sender domain and returns its verification status.
Try: “Re-check the DNS for mail.example.com.”
Network ·
plunk_check_domainList automation workflows
Lists your automation workflows and whether each one is switched on.
Try: “Which workflows are enabled?”
Network ·
plunk_list_workflowsFetch one workflow with its steps
Returns one workflow with all its steps and how they connect.
Try: “Show me the steps in the onboarding workflow.”
Network ·
plunk_get_workflowOutline a workflow and its problems
Prints a workflow as numbered lines in the order a contact walks it, and lists anything that would fail when it runs.
Try: “Check the onboarding workflow for problems.”
Network ·
plunk_check_workflowFields a workflow condition can test
Lists the contact fields a workflow condition is able to check.
Try: “What fields can I use in a workflow condition?”
Network ·
plunk_list_workflow_fieldsList runs of a workflow
Lists the runs of one workflow and the status of each.
Try: “Show recent runs of the onboarding workflow.”
Network ·
plunk_list_workflow_executionsOne workflow run, step by step
Shows a single run step by step, with the output and any error at each step.
Try: “Why did run 123 of the onboarding workflow fail?”
Network ·
plunk_get_workflow_executionCreate or update a contact
Adds a contact, or updates it if the email already exists.
Try: “Add ada@example.com as a contact with plan set to pro.”
Write ·
plunk_create_contactChange a contact's email or data
Changes a contact's email address or custom fields.
Try: “Set Ada's company field to Acme.”
Write ·
plunk_update_contactRe-subscribe a contact
Turns marketing email back on for a contact you give by email or ID.
Try: “Re-subscribe ada@example.com.”
Write ·
plunk_subscribe_contactOpt a contact out of marketing email
Opts a contact out of marketing email, by email or ID.
Try: “Unsubscribe sam@example.org.”
Write ·
plunk_unsubscribe_contactPermanently delete a contact
Removes a contact for good. The README marks this as destructive.
Try: “Delete the contact sam@example.org.”
Delete ·
plunk_delete_contactSend a transactional email
Sends an email now, at a scheduled time, or throttled. Sending to more than one recipient asks you to confirm first.
Try: “Send a password reset email to ada@example.com.”
Write ·
plunk_send_emailMove a scheduled email
Moves a scheduled transactional email to another time.
Try: “Push the reminder email to Friday at 9am.”
Write ·
plunk_reschedule_emailCancel a scheduled email
Cancels a transactional email that has not been sent yet. The README marks this as destructive.
Try: “Cancel the scheduled reminder to ada@example.com.”
Write ·
plunk_cancel_emailRecord an event for a contact
Records an event for a contact, which can start an automation workflow. It creates the contact if needed.
Try: “Track a signed_up event for ada@example.com.”
Write ·
plunk_track_eventCreate an email template
Saves a new reusable email template.
Try: “Create a welcome email template.”
Write ·
plunk_create_templateCreate a draft campaign
Creates a campaign as a draft. Nothing is sent.
Try: “Draft a campaign announcing our new pricing.”
Write ·
plunk_create_campaignSend a test copy to a team member
Sends one copy of a campaign to a project member so you can check it.
Try: “Send me a test of the pricing campaign.”
Write ·
plunk_test_campaignSend or schedule a campaign
Sends a campaign or schedules it for later. The README calls it destructive and irreversible, and it asks you to confirm and shows how many people will get it.
Try: “Schedule the pricing campaign for Tuesday 10am.”
Write ·
plunk_send_campaignStop a scheduled or sending campaign
Stops a campaign that is scheduled or still going out. The README marks this as destructive.
Try: “Stop the pricing campaign.”
Write ·
plunk_cancel_campaignCreate an audience segment
Creates a saved group of contacts from filter rules.
Try: “Make a segment of contacts on the pro plan.”
Write ·
plunk_create_segmentCreate a workflow
Creates a workflow, switched off, that starts on an event you choose.
Try: “Create a workflow that starts on signed_up.”
Write ·
plunk_create_workflowRename or change a workflow
Renames a workflow or changes its trigger event, re-entry rule or throttle. Changing the trigger of an enabled workflow that sends email asks you to confirm.
Try: “Rename the onboarding workflow to Welcome series.”
Write ·
plunk_update_workflowCopy a workflow
Copies a workflow, switched off, for example to make another language version.
Try: “Duplicate the onboarding workflow for German.”
Write ·
plunk_duplicate_workflowDelete a disabled workflow
Deletes a workflow that is switched off. The README marks this as destructive.
Try: “Delete the old trial workflow.”
Delete ·
plunk_delete_workflowAdd a step to a workflow
Adds one step (email, delay, wait for event, condition, update contact, webhook or exit) at the end, on a branch or in between.
Try: “Add a 2 day delay after the welcome email.”
Write ·
plunk_add_workflow_stepBuild a sequence of steps in one call
Adds a whole sequence of steps, branches included, in one call.
Try: “Build a 3-email drip with a condition on opens.”
Write ·
plunk_add_workflow_stepsChange a step's settings
Changes the settings or template of an existing step. Settings are checked before they are saved.
Try: “Switch step 2 to the reminder template.”
Write ·
plunk_update_workflow_stepRemove a step
Removes a step and reconnects the flow around it. Removing a condition needs you to say whether to keep or delete the steps below. The README marks this as destructive.
Try: “Remove the second delay step.”
Delete ·
plunk_delete_workflow_stepConnect two steps
Connects two steps, or a condition branch to a step.
Try: “Connect the yes branch to the upgrade email.”
Write ·
plunk_connect_workflow_stepsRemove a connection between steps
Removes a connection between two steps. The README marks this as destructive.
Try: “Disconnect the delay from the exit step.”
Write ·
plunk_disconnect_workflow_stepsSwitch a workflow on or off
Turns a workflow on or off. It refuses to turn one on while it has errors, and asks you to confirm if the workflow sends email.
Try: “Enable the onboarding workflow.”
Write ·
plunk_set_workflow_enabledRun a workflow for one contact now
Starts a workflow for a single contact immediately, after you confirm.
Try: “Run the onboarding workflow for ada@example.com.”
Write ·
plunk_start_workflow_executionCancel running workflow runs
Cancels one run, or all runs in progress for a workflow. The README marks this as destructive.
Try: “Cancel all running onboarding workflow runs.”
Write ·
plunk_cancel_workflow_executions
From the official docs
Permissions
high risk · 5 things to watch
High risk
The assistant can read your Plunk data, change it, send email to your contacts and delete contacts and workflows. Turn on read-only mode and use a key from a test project until you trust how your assistant behaves.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can delete contacts and workflows
The tools that delete contacts, workflows and workflow steps work on live data. Turn on read-only mode, or use a separate Plunk project for anything you cannot afford to lose. registry.npmjs.org
It can send real email to real people
Sending a campaign cannot be undone. The server asks you to confirm and shows how many people will get it, so read that number before you approve. registry.npmjs.org
The key reaches the whole project
The README says Plunk's secret key is all-or-nothing over its project. Keep a key for each project you connect, and do not reuse one from a self-hosted server's environment. registry.npmjs.org
Headless mode skips the send prompt
Setting PLUNK_ALLOW_UNCONFIRMED_SENDS=true removes the confirmation step. Only use it for automation you fully trust. registry.npmjs.org
Domains, billing and keys are out of reach
The README says adding or removing sender domains, billing, project deletion and key rotation are not exposed as tools. registry.npmjs.org
Security advisories
No published security advisories for the MCP server as of Nov 1, 2026.
7 other advisories are about the wider plunk project, not this MCP server. See them on GitHub
Technical details
| Turning on read-only | Set PLUNK_READ_ONLY=true (or pass --read-only). The tools that change things are not registered at all, so they cannot be called. |
|---|---|
| Talks to | Plunk API (hosted, or your own domain if you set PLUNK_API_URL) |
| Sign-in and keys | The secret key is passed in the PLUNK_API_KEY setting of your assistant's config on your machine. |
| Scopes |
|
Questions
Is the Plunk MCP server official?
Yes. It ships from the Plunk repository as the official @plunk/mcp package.
Do I need an API key?
Yes. You need your project's secret key (starts with sk_) from Settings, then API Keys, in the Plunk dashboard. Without a key the server does not work.
Can I use it read-only?
Yes. Set PLUNK_READ_ONLY=true or pass --read-only. Then only the 16 read tools exist and nothing can be created, changed, sent or deleted.
Does it work with a self-hosted Plunk?
Yes. Set PLUNK_API_URL to your own API address. The server works with the hosted product and with self-hosted instances.
Can it send email without asking me?
Not by default. Sending a campaign, or emailing more than one person, asks you to confirm first. If your client cannot show prompts, sends are blocked unless you set PLUNK_ALLOW_UNCONFIRMED_SENDS=true.
Can it connect to more than one Plunk project?
Yes. Set one key per project named PLUNK_API_KEY_ followed by a project name. Every tool call then names the project it acts on.
How do I add it to Claude or Cursor?
Use the install box above and put your secret key in the PLUNK_API_KEY setting. Restart the app so it loads the tools.
Information
updated Nov 2, 2026
- Publisher
- Official
- Package
@plunk/mcp- Registry
- npm
- Transport
- stdio
- Auth
- API key
- Version
- 0.17.0
- License
- AGPL-3.0
- Last commit
- Oct 28, 2026
- Open issues
- 35
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 2Hide
- registry.npmjs.org · registry.npmjs.org
- github.com · github.com