Skip to main content
Glama
listmonk-mcp

listmonk-mcp

by monk24215

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LISTMONK_URLYesBase URL of the Listmonk instance, without /api
MCP_HTTP_PORTNoHTTP port (used when MCP_TRANSPORT is http)3100
MCP_TRANSPORTNoTransport to use: stdio or httpstdio
MCP_HTTP_TOKENNoHTTP only: token used in the /mcp/<token> URL; must be at least 24 characters
LISTMONK_API_USERYesListmonk API user name
LISTMONK_API_TOKENYesListmonk API token
LISTMONK_MCP_READONLYNotrue = write and delete tools are not registeredfalse

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
listmonk_statusA

Server health, version, and build info. Start here when diagnosing anything. Returns {health, about, config}.

listmonk_dashboard_countsA

Totals across the instance: subscribers by status, lists, campaigns, and messages.

listmonk_logsB

Recent Listmonk application log lines (ring buffer, not persisted).

listmonk_settings_getA

Instance settings. Passwords, keys, and tokens are replaced with [redacted] before being returned.

listmonk_smtp_testA

Opens a connection to a configured SMTP server and sends a test email to the given address. Sends real mail through the instance's SMTP settings.

lists_listB

All mailing lists with id, name, type, opt-in mode, tags, and subscriber counts.

list_getC

One mailing list by id.

list_createC

Create a mailing list. type is 'public' or 'private'; optin is 'single' or 'double'.

list_updateB

Update a mailing list. Only the fields you pass change; the rest are kept from the current list.

list_deleteA

Permanently delete a mailing list by id. Subscriptions to it are removed; subscriber records are kept.

subscribers_searchB

Search subscribers. Pass query as a Listmonk SQL expression on the subscribers table, e.g. subscribers.email LIKE '%@example.com' or subscribers.status = 'blocklisted'. Omit query to list all.

subscriber_getB

One subscriber by id, including their list memberships.

subscriber_createB

Create a subscriber. list_ids subscribes them to lists. preconfirm skips double opt-in confirmation for double opt-in lists.

subscriber_updateA

Update a subscriber. Only the fields you pass change. Passing list_ids replaces their list memberships; use subscribers_lists_change to add or remove without replacing.

subscribers_lists_changeB

Bulk add, remove, or unsubscribe subscribers from lists without replacing their other memberships. action: add | remove | unsubscribe.

subscriber_deleteA

Permanently delete a subscriber by id, with their list subscriptions and campaign history.

campaigns_searchC

List campaigns. Filter by status (draft, scheduled, running, paused, cancelled, finished) and optional query text.

campaign_getA

One campaign by id, including body, lists, and send statistics.

campaign_createA

Create a campaign as a draft. Nothing is sent until campaign_set_status moves it to running or scheduled.

campaign_updateA

Update a campaign. Only the fields you pass change. Listmonk only allows edits while the campaign is a draft, scheduled, or paused.

campaign_set_statusA

Start, schedule, pause, resume, or cancel a campaign. 'running' SENDS EMAIL to all recipients immediately. 'scheduled' sends at send_at. Confirm the recipient lists and body before using.

campaign_test_sendA

Send a test copy of a campaign to up to 10 email addresses. Sends real mail to those addresses.

campaign_deleteA

Permanently delete a campaign and its view and click statistics. Listmonk rejects deletion of running campaigns.

templates_listA

All campaign and transactional templates with id, name, type, and default flag.

template_getB

One template by id, including its HTML body.

template_createB

Create a template. type is 'campaign' (for campaigns) or 'tx' (for transactional sends). body must contain {{ template "content" . }} for campaign templates.

template_updateB

Update a template. Only the fields you pass change.

template_deleteA

Permanently delete a template. Listmonk refuses to delete the default template or one in use by a campaign.

bounces_searchB

Recorded bounces, newest first. Filter by bounce type (soft, hard, complaint) and campaign.

bounce_getC

One bounce record by id.

bounce_deleteA

Delete a bounce record by id. Does not change the subscriber's status; use subscriber_update to re-enable a subscriber.

tx_sendB

Send one transactional email from a 'tx' template to a subscriber email. data fills template placeholders. Sends real mail.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 32 tools

Disambiguation4/5

Most tools map cleanly to a resource+action, and the descriptions proactively disambiguate the risky pairs (subscriber_update vs subscribers_lists_change, campaign_update vs campaign_set_status). The only residual overlap is mild: several prefixed system tools (status, dashboard_counts, logs, settings_get) all return 'instance info', though their specific outputs are distinct enough.

Naming Consistency3/5

The underlying pattern is verb_noun with a resource prefix, which is readable and mostly predictable. However prefixes flip between singular and plural (subscriber_delete vs subscribers_search, list_get vs lists_list, campaign_get vs campaigns_search), which is a genuine convention inconsistency.

Tool Count3/5

32 tools is heavy, but the server genuinely spans seven resource areas (subscribers, lists, campaigns, templates, bounces, transactional sends, system diagnostics), so most tools earn their place. Still, it sits in the 25+ range where an agent has to scan a lot of surface.

Completeness4/5

CRUD coverage is solid for lists, subscribers, campaigns, and templates, with bounces and transactional sending appropriately read/delete-only and send-only. Minor gaps: no bulk subscriber import/export and no listing subscribers per-list outside SQL search expressions.