NetSendo Logo

MCP Integration

Model Context Protocol for AI Assistants

Model Context Protocol (MCP) is an open standard introduced by Anthropic that allows AI assistants (like Claude, Cursor, VS Code Copilot) to integrate with external tools and data sources.

Ask questions: 'How many subscribers do I have?'
Manage subscribers using natural language
Send messages: 'Send an email to jan@example.com'
Get statistics: 'Analyze my list quality'

How It Works

The AI assistant communicates with the MCP server via the STDIO protocol, and the MCP server performs operations on NetSendo using the REST API v1.

┌─────────────────┐     STDIO      ┌─────────────────┐     HTTP/S     ┌─────────────────┐
│  Claude/Cursor  │ ◄──────────► │   MCP Server    │ ◄───────────► │    NetSendo     │
│   (AI Client)   │               │   (Docker/npx)  │               │  (Your inst.)   │
└─────────────────┘               └─────────────────┘               └─────────────────┘

Installation

Remote Installation (npx)
Recommended
Best for NetSendo hosted on a server (e.g. https://app.mycompany.com)

Requirements

  • Node.js 18+
  • API Key from NetSendo

Steps

  1. Generate API Key: Settings → API Keys
  2. Install Node.js from nodejs.org
  3. Configure your AI tool using the configuration below

Claude Desktop and Cursor

{
  "mcpServers": {
    "netsendo": {
      "command": "npx",
      "args": [
        "-y",
        "@netsendo/mcp-client",
        "--url",
        "https://your-domain.com",
        "--api-key",
        "YOUR_API_KEY"
      ]
    }
  }
}

VS Code .vscode/mcp.json

VS Code reads MCP servers from .vscode/mcp.json in your workspace (or from your user profile via the "MCP: Open User Configuration" command). This file uses a top-level "servers" key instead of "mcpServers".

{
  "servers": {
    "netsendo": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@netsendo/mcp-client",
        "--url",
        "https://your-domain.com",
        "--api-key",
        "YOUR_API_KEY"
      ]
    }
  }
}

Replace https://your-domain.com with your NetSendo instance URL and YOUR_API_KEY with your generated API key.

Local Installation (Docker)
Best for NetSendo running locally on your computer in Docker

Requirements

  • Docker installed and running
  • Access to the NetSendo docker-compose.yml file

Steps

  1. Generate API Key: Settings → API Keys
  2. Mark the API key for MCP in settings
  3. Add the key to .env file: MCP_API_KEY=your-api-key
  4. Build the MCP container: docker compose build mcp
  5. Configure your AI tool using the configuration below

Claude Desktop and Cursor

{
  "mcpServers": {
    "netsendo": {
      "command": "docker",
      "args": [
        "compose",
        "-f",
        "/path/to/NetSendo/docker-compose.yml",
        "run",
        "--rm",
        "-i",
        "mcp"
      ]
    }
  }
}

Replace /path/to/NetSendo with the full path to your NetSendo installation directory.

In VS Code, put the same "netsendo" entry under a top-level "servers" key in .vscode/mcp.json, and add "type": "stdio".

Configuration File Locations

ClientFile Location
Claude Desktop (macOS)~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows)%APPDATA%\Claude\claude_desktop_config.json
Cursor IDESettings → MCP → Add Server
VS Code.vscode/mcp.json

Supported AI Clients

🤖
Claude Desktop

Official Claude desktop app from Anthropic

💻
Cursor IDE

IDE with built-in AI for developers

📝
VS Code

Visual Studio Code with GitHub Copilot (agent mode)

Available Features

Subscribers

Manage contacts – add, edit, delete

Contact Lists

Browse and organize mailing lists

Email Messages

Send personalized email messages

SMS Messages

Send SMS messages to contacts

Tags

Categorize subscribers using tags

Statistics

Check account and deliverability statistics

Available Tools

Version 1.5.1 of @netsendo/mcp-client provides 77 tools in 15 groups.

Subscribers (6)

ToolDescription
list_subscribersList subscribers with filtering and pagination
get_subscriberGet a subscriber by ID or email address
create_subscriberCreate a subscriber with optional list and tag assignments
update_subscriberUpdate a subscriber's data
delete_subscriberPermanently delete a subscriber
sync_subscriber_tagsReplace all tags assigned to a subscriber

Contact lists, tags and custom fields (9)

ToolDescription
list_contact_listsGet all contact lists with subscriber counts and default mailbox
get_contact_listGet the details of a contact list, including its default mailbox
get_list_subscribersGet the subscribers of a contact list
get_list_statsList snapshot: members by status, engagement, 30-day growth and sending settings
create_contact_listCreate an email or SMS contact list
update_contact_listUpdate a list's settings (only the fields you pass change)
delete_contact_listDelete a contact list; the contacts stay in the account
list_tagsGet all available tags
list_custom_fieldsGet all custom field definitions

List members (6)

ToolDescription
add_list_membersAttach existing contacts to a list
remove_list_membersDetach contacts from a list and cancel their queued messages
set_member_statusChange membership status: active, inactive, unsubscribed or bounced
copy_list_membersCopy contacts to another list of the same channel
move_list_membersMove contacts to another list of the same channel
tag_list_membersAdd or remove tags across a segment of a list

Import (2)

ToolDescription
preview_list_importDry-run an import: column mapping, invalid addresses and duplicates, nothing is written
import_subscribersImport contacts onto a list from CSV, TSV, JSON or plain addresses

Export (3)

ToolDescription
export_listExport list members inline as JSON, CSV or NDJSON, with filters
get_export_fieldsList the columns available for export, including custom fields
queue_list_exportQueue a full CSV export; the account owner gets a download link

List hygiene (5)

ToolDescription
analyze_list_healthRead-only hygiene report with a 0–100 health score and recommendations
clean_listApply an action to members in selected problem categories (dry run by default)
dedupe_listMerge duplicate addresses, including Gmail dot and +tag aliases
verify_list_emailsCheck deliverability: syntax, disposable and role addresses, typo domains, MX records
get_hygiene_optionsReturn the categories and actions accepted by clean_list

Suppression list (3)

ToolDescription
list_suppressionsShow the account-wide do-not-mail list with reasons and dates
suppress_emailsAdd addresses to the do-not-mail list and unsubscribe them from every list
unsuppress_emailsLift suppression for addresses (does not resubscribe anyone)

Activity and engagement (3)

ToolDescription
get_list_activityEvent feed for a list: signups, unsubscribes, bounces, sends, opens and clicks
get_list_engagementList performance: growth, churn, open and click rates, top messages and links
get_subscriber_activityFull history of one contact: lists, tags, queued messages and timeline

Email and SMS messages (6)

ToolDescription
list_mailboxesGet available sending mailboxes
send_emailSend a single email to a subscriber
get_email_statusCheck email delivery status
list_sms_providersGet available SMS providers
send_smsSend a single SMS to a subscriber or phone number
get_sms_statusCheck SMS delivery status

Campaigns (10)

ToolDescription
list_campaignsList email and SMS campaigns with filtering
get_campaignGet campaign details, including lists and exclusions
create_campaignCreate an email or SMS campaign (saved as a draft)
update_campaignUpdate a draft or scheduled campaign
set_campaign_listsSet the recipient lists of a campaign
set_campaign_exclusionsSet exclusion lists whose subscribers will not receive the campaign
schedule_campaignSchedule a campaign for later, with time zone support
send_campaignSend a campaign now or activate an autoresponder
get_campaign_statsGet sending statistics for a campaign
delete_campaignDelete a draft or scheduled campaign

A/B tests (7)

ToolDescription
list_ab_testsList A/B tests, filtered by status or campaign
create_ab_testCreate an A/B test for a campaign
add_ab_variantAdd a variant to an A/B test
start_ab_testStart an A/B test (requires at least 2 variants)
end_ab_testEnd a running test and optionally pick the winner
get_ab_test_resultsGet detailed results and statistics of a test
delete_ab_testDelete an A/B test that is not running

Funnels (automation) (12)

ToolDescription
list_funnelsList automation funnels
get_funnelGet a funnel with all its steps and statistics
create_funnelCreate an automation funnel
update_funnelRename a funnel or change its trigger
add_funnel_stepAdd a step to a funnel and connect it
update_funnel_stepChange a step's settings and connections
delete_funnel_stepDelete a step and reconnect the funnel around it
enroll_subscriber_in_funnelPut a subscriber into an active funnel right away
activate_funnelActivate a funnel for new subscribers
pause_funnelPause a funnel
get_funnel_statsGet funnel statistics: subscriber counts and completion rates
delete_funnelDelete a funnel (pause it first)

Notifications (2)

ToolDescription
send_notificationPost a notification to the account owner's notification centre
list_notificationsRead the owner's recent notifications and unread count

Personalization (1)

ToolDescription
list_placeholdersGet the placeholders for personalizing email and SMS content

Account (2)

ToolDescription
test_connectionTest the API connection and credentials
get_account_infoGet information about the connected account

More tool groups (automations, forms, templates, webhooks…) are coming in the next release of the MCP client.

Example Queries

"Show my mailing lists"
"How many subscribers do I have?"
"Add subscriber jan@example.com to Newsletter list"
"Send a welcome message to anna@example.com"
"Analyze the quality of my mailing list"

Security

🔐 API keys are never logged or exposed
🔒 All API calls respect NetSendo permissions
⚡ Rate limiting: 60 requests/minute
🚫 Sensitive data (passwords, payments) is never returned
📝 All operations are logged in the activity log

Troubleshooting

Connection Failed
  • Make sure NetSendo is running and accessible
  • Check if the API key is valid
  • Verify the URL is correct (include https://)
Tools Not Appearing

Restart your AI tool after configuration changes.

npx Command Not Found

Install Node.js from nodejs.org (includes npm/npx).

Multiple NetSendo Instances

You can connect to multiple NetSendo instances using different server names:

{
  "mcpServers": {
    "netsendo-production": {
      "command": "npx",
      "args": ["-y", "@netsendo/mcp-client", "--url", "https://app.company.com", "--api-key", "prod-key"]
    },
    "netsendo-staging": {
      "command": "npx",
      "args": ["-y", "@netsendo/mcp-client", "--url", "https://staging.company.com", "--api-key", "staging-key"]
    }
  }
}