Cursor is where a lot of email templates actually get written — React Email components, MJML files, raw HTML. The friction today is that once a template feels done you leave the IDE, open a deliverability tool, paste the compiled HTML, wait, screenshot, come back, edit, repeat. With Cursor's MCP support and our server the loop collapses into a single prompt: "test this template's deliverability and tell me what to fix". Here is the setup.
Cursor (current stable — MCP shipped in late 2024), Node.js 20+, and an Inbox Check API key (ic_live_...) from the dashboard. Five minutes, one config file.
Cursor's MCP support in 2026
Cursor has had first-class MCP support since v0.45. Two surfaces use it:
- Agent mode — the autonomous "do this task" surface that can call tools, edit files and run commands. MCP tools show up as regular callable capabilities alongside Cursor's built-in file ops.
- Ask mode — the chat panel. MCP tools work here too, via
@server-namementions or by the model picking them implicitly.
Both surfaces read the same MCP config. You set it up once; it works everywhere.
Adding Inbox Check MCP to Cursor
Cursor supports two scopes for MCP: global (applies everywhere) and project (only when that repo is open). For deliverability I recommend project scope — it keeps the API key in your workspace's env, and different clients can use different keys.
Project scope: .cursor/mcp.json
Create .cursor/mcp.json at the repo root:
{
"mcpServers": {
"inbox-check": {
"command": "npx",
"args": ["-y", "ldm-inbox-check-mcp"],
"env": {
"INBOX_CHECK_API_KEY": "ic_live_REPLACE_ME"
}
}
}
}Add .cursor/mcp.json to your .gitignore if the API key is in there directly. Better yet, reference an env var:
{
"mcpServers": {
"inbox-check": {
"command": "npx",
"args": ["-y", "ldm-inbox-check-mcp"],
"env": {
"INBOX_CHECK_API_KEY": "${env:INBOX_CHECK_API_KEY}"
}
}
}
}Cursor expands ${env:VAR} from your shell environment — set INBOX_CHECK_API_KEY in your.zshrc or .bashrc and the config file stays safe to commit.
Global scope (alternative)
Open Cursor Settings → MCP → Add new MCP server. Fill in:
Name: inbox-check
Command: npx
Args: -y ldm-inbox-check-mcp
Env: INBOX_CHECK_API_KEY=ic_live_...Click save. Restart Cursor. The status dot next to the server name should turn green after a few seconds — that means the server started and successfully returned its tools/list.
Agent mode vs ask mode
Both modes can call the MCP tools; the difference is in how much autonomy you grant.
Ask mode
Chat-style. You ask, the agent proposes tool calls, you approve each one. Best for: exploring, reading a verdict, deciding what to fix.
Agent mode
The agent plans, executes and iterates. Best for: "edit the template until inbox rate is above 90%". With tool-use auto-approval enabled the agent can run a test, edit the HTML, re-run the test, and repeat — all without your intervention.
Cursor lets you whitelist specific tools for auto-approval. For Inbox Check, a reasonable default is to auto-approve get_test, check_auth, check_blacklist, list_providers (all read-only) and ask for permission on start_test (it consumes your quota). Configure in Settings → MCP → Tool approvals.
Example workflow: edit template, test, fix, retest
You're editing emails/welcome.tsx — a React Email component that compiles to HTML. Workflow:
- Run your template build script in the terminal. The HTML lands in
dist/welcome.html. - Open Cursor agent mode. Prompt: "read dist/welcome.html, run an Inbox Check placement test for it from hello@myco.com, wait for the verdict, and tell me the top three things to change".
- Agent reads the file, calls
start_test, pollsget_test, summarises: "2/20 went to Outlook spam; SpamAssassin triggeredHTML_IMAGE_ONLY_32; DKIM passes but DMARC alignment fails". - Ask: "fix the React Email component to have a 60/40 text-to-image ratio and a proper plain-text fallback". Cursor edits
emails/welcome.tsx, rebuilds, reruns the test. - When the verdict is green enough, commit.
Prompts that work best
Cursor's agent is particularly good at multi-step reasoning when you write the goal, not the steps. Good prompts for this MCP:
- "Read
templates/onboarding.html, run a placement test fromwelcome@myco.com, and open a file.claude/deliverability-report.mdwith the top-five issues sorted by severity." - "Check SPF/DKIM/DMARC for every domain I send from (see
config/senders.json) and tell me which ones need DMARC tightened." - "Run a placement test for the HTML in
out/marketing.html. If inbox rate is under 85%, iterate on the template until it's above 90%. Stop after three iterations." - "Is our sending IP (
203.0.113.45) on any blacklist? If so, write a remediation plan todocs/ip-delist.md."
Cursor vs Claude Desktop for this workflow
Both speak MCP; the tools are the same. The difference is context.
- Claude Desktop — best for ad-hoc debugging, pasting a template in, asking questions. No project awareness. No file editing.
- Cursor — best when the template lives in a repo and you want the agent to read it, test it, fix it, and commit. Project awareness is the differentiator.
For one-off checks use Claude Desktop. For iteration on an actual codebase, Cursor is the better fit.