Skip to main content
Glama
tecspda

listmonk-mcp-ts

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LISTMONK_MCP_URLYesListmonk base URL, http:// or https://
LISTMONK_MCP_TIMEOUTNoHTTP timeout in seconds30
LISTMONK_MCP_PASSWORDYesListmonk API user token
LISTMONK_MCP_USERNAMEYesListmonk API user name
LISTMONK_MCP_FILES_DIRNoDirectory the file tools may read from. File tools are disabled when it is not set
LISTMONK_MCP_MAX_RETRIESNoRetries on network errors. Only GET requests are retried3
LISTMONK_MCP_SERVER_NAMENoServer name reported to the clientListmonk MCP Server

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
check_listmonk_healthA

Check that the Listmonk server is reachable and responding, and return its health data. Makes a single request with no retries. Use it first when other tools fail with connection errors.

add_subscriberA

Create a new subscriber and optionally subscribe them to mailing lists. Fails if a subscriber with the same email already exists. Returns the new subscriber ID. To change an existing subscriber use update_subscriber.

update_subscriberA

Update an existing subscriber's email, name, status, list memberships or attributes. Only the fields you provide are sent to Listmonk. When lists or attributes is provided it is sent as the full new value, not merged with the old one. To only change status use change_subscriber_status.

remove_subscriberA

Permanently delete a subscriber and all their list subscriptions. This cannot be undone. To stop mailing someone but keep their record, use change_subscriber_status with 'blocklisted' instead.

change_subscriber_statusA

Change only a subscriber's status to enabled, disabled or blocklisted. Blocklisted subscribers are excluded from all campaigns. Use remove_subscriber to delete the record instead.

list_subscribersA

List subscribers, newest first, one page at a time. Returns the total subscriber count and each subscriber's name, email, status and list names. Use query to filter with a SQL expression; use get_subscriber_by_email when you already know the address.

get_subscriber_by_idA

Get one subscriber by numeric ID: email, name, status, timestamps, list memberships and custom attributes. Returns an error if the ID does not exist. Use get_subscriber_by_email when you only know the address.

get_subscriber_by_emailA

Look up one subscriber by exact email address and return the same details as get_subscriber_by_id. Returns a not-found error if no subscriber has that address.

get_mailing_listsA

List mailing lists with ID, type, subscriber count and tags. Use it to find the list IDs required by add_subscriber, create_campaign and other tools.

create_mailing_listA

Create a mailing list and return its ID, which other tools use to subscribe people and target campaigns. A list is public or private and uses single or double opt-in.

update_mailing_listA

Update a mailing list's name, type, opt-in mode, tags or description. Only the fields you provide are sent. Existing subscribers are not removed.

delete_mailing_listA

Permanently delete a mailing list and its subscriptions. The subscribers themselves are kept and only leave this list. This cannot be undone.

get_list_subscribers_toolA

List the subscribers of one mailing list, one page at a time, with name, email and status, plus the list's total subscriber count. Use get_mailing_lists to find list IDs.

get_list_by_idA

Get one mailing list by ID: name, type, opt-in mode, subscriber count, tags, description and timestamps.

get_campaignsA

List campaigns, one page at a time, with ID, name, status, sent/total progress and target list IDs. Optionally filter by status. Use get_campaign for one campaign's full details and body.

get_campaignA

Get one campaign by ID: name, subject, status, type, template, target lists, send progress, view and click counts, and the full body (which can be large).

get_campaign_previewA

Render a preview of the campaign as the HTML subscribers would see. Read-only: nothing is sent. Use it to check a campaign before send_campaign or schedule_campaign.

create_campaignA

Create a campaign in draft status; nothing is sent yet. body is the message content and template_id selects the layout template that wraps it. Returns the new campaign ID. Next, review it with get_campaign_preview, then start it with send_campaign or schedule_campaign.

update_campaignA

Update a campaign's name, subject, target lists, body or tags. Only the fields you provide are sent, and the target lists are kept if you omit lists. Use it before sending, because Listmonk may reject edits once a campaign is running. Does not send anything.

send_campaignA

Start sending a campaign to its target lists right now by setting its status to running. This emails real subscribers and cannot be undone, so check get_campaign_preview first. It returns as soon as sending starts and delivery continues in the background; follow progress with get_campaign. To send later use schedule_campaign.

schedule_campaignA

Schedule a campaign to start sending automatically at a future date and time. Nothing is sent now. Use send_campaign to send immediately instead.

get_templatesA

List all templates (campaign layouts and transactional) with ID, name, type and default flag. Use the IDs with create_campaign, send_transactional_email or update_template.

get_templateA

Get one template by ID: name, type (campaign or tx), default flag, subject (tx only), update time and the full HTML body, which can be large.

create_templateA

Create a template and return its ID. Type 'campaign' is a layout that wraps campaign bodies; type 'tx' is a transactional email template that needs a subject and is sent with send_transactional_email. For large HTML bodies prefer create_template_from_file.

update_templateA

Update a template's name, body, default flag or subject. Only the fields you provide are sent, and a provided body replaces the old one completely. For large HTML bodies prefer update_template_from_file.

create_template_from_fileA

Create a template whose HTML body is read from a UTF-8 file inside LISTMONK_MCP_FILES_DIR, so large bodies such as MJML exports are stored byte for byte. Otherwise identical to create_template. Fails if LISTMONK_MCP_FILES_DIR is not set or the path is outside it.

update_template_from_fileA

Update an existing template, replacing its HTML body with the contents of a UTF-8 file inside LISTMONK_MCP_FILES_DIR. Otherwise identical to update_template. Fails if LISTMONK_MCP_FILES_DIR is not set or the path is outside it.

delete_templateA

Permanently delete a template by ID. This cannot be undone. Check get_templates first so you do not delete one that is still needed.

send_transactional_emailA

Send one transactional email right away, using a 'tx' template, to a subscriber that already exists in Listmonk. The email cannot be recalled. data fills the template variables. Create tx templates with create_template (type 'tx').

get_media_listA

List uploaded media files with ID, filename, title, size, creation date and public URL. The URL can be used in campaign and template HTML.

upload_media_fileA

Upload a file from LISTMONK_MCP_FILES_DIR to the Listmonk media library and return its ID and public URL for use in campaign bodies. Fails if LISTMONK_MCP_FILES_DIR is not set or the path is outside it. Image types (jpg, png, gif, webp, svg) get the right MIME type; other types upload as generic binary and Listmonk may reject them.

rename_mediaA

Change a media file's display title in the media library. The filename and public URL stay the same, so existing links keep working.

delete_media_fileA

Permanently delete a media file. Campaigns or templates that still link to its URL will show a broken file. This cannot be undone.

replace_in_campaign_bodyA

Replace every occurrence of a literal text in a campaign's body (case-sensitive, not a regex) and save the campaign. Reports how many replacements were made and changes nothing if the text is not found. For patterns use regex_replace_in_campaign_body; for several replacements in one save use batch_replace_in_campaign_body.

regex_replace_in_campaign_bodyA

Replace all matches of a JavaScript regular expression in a campaign's body and save the campaign. Reports how many matches were replaced and changes nothing if there is no match. An invalid pattern returns an error. For plain text use replace_in_campaign_body.

batch_replace_in_campaign_bodyA

Apply several literal search and replace pairs to a campaign's body in the given order, then save once. Later pairs see the result of earlier ones, and empty search texts are skipped. Nothing is saved if no pair matches.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.8/5.0

Scored across 36 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions, with helpful cross-references in descriptions (e.g. get_subscriber_by_id vs get_subscriber_by_email, send_campaign vs schedule_campaign). The main overlaps are the three campaign-body replacement variants and the file-based template creation/update variants, but each is explicitly differentiated.

Naming Consistency4/5

The set predominantly follows a verb_noun convention (add_subscriber, update_campaign, delete_template), with mostly snake_case names. Minor deviations exist: listing uses both 'get' (get_mailing_lists, get_media_list) and 'list' (list_subscribers), and get_list_subscribers_tool has an inconsistent '_tool' suffix.

Tool Count2/5

At 36 tools, the surface is quite large for one MCP server and exceeds the typical well-scoped range. While the domain is broad (subscribers, lists, campaigns, templates, media), several tools are close variants, making the set heavier than necessary.

Completeness4/5

Core newsletter workflows are well covered: subscriber and list CRUD, campaign creation/preview/send/schedule, template CRUD with file-based variants, transactional email, and media management. A few lifecycle gaps remain, such as campaign deletion or duplication and broader subscriber import/bulk operations, but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues