MNotify MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MNotify MCP Server Send SMS 'Hello from AI' to +233501234567"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MNotify MCP Server
Bring MNotify to your AI IDE in one command.
This package exposes the MNotify SMS API as an MCP server so tools like Cursor can securely call real MNotify actions (send SMS, manage contacts/groups/templates, delivery reports) via stdio. This repo also includes a simple interactive MNotify Agent for CLI use. It is based on Mnotify API v2.0
Check out the PyPI MCP package here
Requirements
Python 3.10+
Environment variable:
MNOTIFY_API_KEY
Setup
Using uv (recommended):
curl -LsSf https://astral.sh/uv/install.sh | sh # install uv if needed uv venv uv pip install -r requirements.txtUsing any virtualenv manager + pip:
python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt
Quick start — install and run the MCP server
pip install mnotify_mcp_server
export MNOTIFY_API_KEY=sk_mnotify_...
# Start the server (preferred)
mnotify_mcp server
# Alternatives
mnotify-mcp
python -m mnotify_mcp.serverConnect to Cursor
Option A: Project config
.cursor/mcp.json(recommended)
{
"mcpServers": {
"mnotify": {
"command": "mnotify_mcp",
"args": ["server"]
}
}
}Relaunch cursor from the same environment as the virtual environment
Option B: Manual add in Cursor (Settings → MCP → Add Custom Server → Process)
Command:
mnotify_mcpArgs:
serverEnsure
MNOTIFY_API_KEYis set in the environment where Cursor launches the process
MNotify Agent (interactive CLI)
A local chat agent that can call all MNotify tools directly.

Setup
Create a virtual environment and install dependencies with uv or pip (see above).
Add a
.envfile with:
OPENROUTER_API_KEY=sk-or-v1-...
MNOTIFY_API_KEY=...
AGNO_API_KEY=ag-... # optional, if monitoring is set.Start the agent
uv run mnotify_agent.pyCLI commands
help: list commands
history: show recent messages
tools: list available tools
test: run a quick tool-call test
clear: clear conversation context
Tools exposed
SMS:
send_quick_bulk_sms,send_bulk_group_sms,update_scheduled_smsReports:
sms_delivery_report,specific_sms_delivery_report,periodic_sms_delivery_reportContacts:
add_contact,update_contact,delete_contact,get_contact_details,get_contact_list,get_group_contactsGroups:
add_group,update_group,delete_group,get_group_details,get_group_listTemplates:
get_template_list,get_message_template,add_message_template,update_message_template,delete_message_templateUtilities:
register_sender_id,check_sender_id,check_sms_balanceHelpers:
get_context_snapshot,resolve_group_name
Validation & guardrails
messagelength ≤ 460;sender_idlength ≤ 11.schedule=truerequiresschedule_time(YYYY-MM-DD HH:MM).Optional:
verify_sender=trueperforms a best‑effort sender status check before sending.
Security
Never pass secrets as tool arguments. The server reads
MNOTIFY_API_KEYfrom the environment.The server does not log secrets.
Available Tools
27 toolsadd_contactB
Add a contact to a group. Requires group_id and phone.
Inputs: phone (required), group_id (required), dob, email, +2 more. Returns: result
add_groupC
Create a new contact group with group_name.
Inputs: group_name (required). Returns: result
add_message_templateC
Create a message template with title and content.
Inputs: title (required), content (required). Returns: result
check_sender_idC
Check the status of a registered sender ID.
Inputs: sender_id (required). Returns: result
check_sms_balanceA
Get your current SMS balance and wallet summary.
Inputs: no named parameters. Returns: result
delete_contactA
Delete a contact by contact_id.
Inputs: contact_id (required). Returns: result
delete_groupB
Delete a contact group by group_id.
Inputs: group_id (required). Returns: result
delete_message_templateC
Delete a message template by template_id.
Inputs: template_id (required). Returns: result
get_contact_detailsB
Fetch contact details by contact_id.
Inputs: contact_id (required). Returns: result
get_contact_listC
List contacts (first page as returned by the API).
Inputs: no named parameters. Returns: result
get_context_snapshotA
Return a compact snapshot of known entities (names → IDs) gathered so far.
Inputs: no named parameters. Returns: result
get_group_contactsB
List contacts in a given group by group_id.
Inputs: group_id (required). Returns: result
get_group_detailsC
Fetch details for a group by group_id.
Inputs: group_id (required). Returns: result
get_group_listA
List all groups.
Inputs: no named parameters. Returns: result
get_message_templateB
Fetch a message template by template_id.
Inputs: template_id (required). Returns: result
get_template_listC
List message templates.
Inputs: no named parameters. Returns: result
periodic_sms_delivery_reportB
Get delivery reports for campaigns within a date range (YYYY-MM-DD).
Inputs: to_date (required), from_date (required). Returns: result
register_sender_idC
Register a sender ID (≤ 11 chars) with a purpose.
Inputs: purpose (required), sender_id (required). Returns: result
resolve_group_nameA
Resolve a group name (case-insensitive, substring) to known IDs from this session.
This uses the MCP server's in-memory cache populated by prior tool calls.
Inputs: group_name (required), fetch. Returns: result
send_bulk_group_smsB
Send an SMS to all contacts in one or more groups.
Provide group_id list and a message (≤ 460 chars). For scheduling,
set schedule=true and supply schedule_time (YYYY-MM-DD HH:MM).
Inputs: groups, message, group_id, schedule, +4 more. Returns: result
send_quick_bulk_smsA
Send SMS to explicit phone numbers.
Parameters
recipient: string (comma-separated) or array of phone numbers
recipients: alias of recipient
sender_id: string, max 11 chars
message: string, max 460 chars
schedule: boolean (default false)
schedule_time: string 'YYYY-MM-DD HH:MM' if schedule is true
verify_sender: boolean, best-effort status check before sending
Returns
API response payload; indexes campaign id in session cache
Inputs: message, schedule, recipient, sender_id, +3 more. Returns: result
sms_delivery_reportC
Get the delivery report for a specific SMS campaign by its ID.
Inputs: id (required). Returns: result
specific_sms_delivery_reportB
Get the delivery status for a specific message within a campaign by campaign_id.
Inputs: campaign_id (required). Returns: result
update_contactB
Update a contact by contact_id. Requires phone; other fields optional.
Inputs: phone (required), contact_id (required), dob, email, +3 more. Returns: result
update_groupA
Rename a contact group by group_id to group_name.
Inputs: group_id (required), group_name (required). Returns: result
update_message_templateA
Update a template by template_id. title and/or content optional.
Inputs: template_id (required), title, content. Returns: result
update_scheduled_smsB
Update a scheduled SMS campaign.
Supply id, sender_id, schedule_time, and optional message (≤ 460 chars).
Inputs: id (required), sender_id (required), schedule_time (required), message. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 27 tools
Most tools have clearly distinct purposes (contacts, groups, templates, sender IDs, sending, reports). The three delivery report tools could be confused but descriptions specify different filters. Overall minimal ambiguity.
Predominantly verb_noun pattern (add_contact, delete_group, get_contact_details). Some variation: get_contact_list vs get_group_list vs get_template_list; get_context_snapshot and resolve_group_name are outliers but not chaotic.
27 tools is on the high side but justified by CRUD operations for contacts, groups, templates, plus sending and delivery reports. Slightly over the ideal range but not excessive.
Covers core SMS management: contacts, groups, templates, sender IDs, sending, scheduling, delivery reports. Minor omissions like campaign listing or deletion, but no critical dead ends.
Maintenance
Related MCP Connectors
The Mobile Text Alerts SMS MCP server enables your AI to send SMS messages & manage contacts
Business texting for AI agents: send texts, read threads, manage contacts and run campaigns.
Send and schedule SMS and WhatsApp messages, manage contacts and templates, and track delivery.
SMS alerts for AI agents and scripts. Text your own phone and read replies. API key required.
Related MCP Servers
- AlicenseAqualityBmaintenanceManage your entire notification infrastructure using natural language. Trigger workflows, create users, manage preferences, update tenant branding, and access docs — all from Cursor, Claude Desktop, or Windsurf. 24 tools covering email, SMS, push, WhatsApp, Slack, MS Teams, and in-app notifications.2212MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to send SMS, manage contacts, verify numbers, and query campaigns via SMS Masivos platform using natural language.30255 npmMIT

ReadySMS MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceEnables sending SMS messages, managing contacts, campaigns, and inbox from AI assistants like Claude and ClickUp.33 npmMIT
clicksend-mcp-serverofficial
AlicenseBqualityDmaintenanceEnables AI assistants to send SMS and manage messaging workflows through ClickSend, including pricing estimates, contact lists, templates, history, and statistics.663 npm3MIT