What is MCP?
Model Context Protocol (MCP) is an open standard that lets AI assistants securely connect to external tools and data. EZ Texting's MCP server puts your account directly inside the AI clients you already use. No switching tabs, no copy-paste.
EZ Texting MCP exposes 37 tools — send SMS/MMS, manage contacts and groups, run workflows, fetch reports, manage webhooks, query account state.
https://mcp.eztexting.com/mcp directly. No npm, no Node, no child process, faster startup, auto-updates server-side. Use the local stdio bridge only when the client doesn't support remote yet.
Claude.ai, ChatGPT, Claude Desktop, Claude Code, Cursor 0.46+, VS Code 1.99+, Windsurf, Cline 3.0+.
Endpoint: https://mcp.eztexting.com/mcp. OAuth 2.1 PKCE auto-discovered.
Fallback: clients without native remote MCP support, air-gapped envs, or proxy quirks.
Runs npx -y @eztexting/mcp-server as child process. Tokens cached in ~/.mcp-auth/.
node -v.EZ Textinghttps://mcp.eztexting.com/mcp
Available on Pro / Max / Team / Enterprise plans.
ChatGPT supports remote MCP via custom connectors (Plus / Pro / Team / Enterprise — Developer mode).
EZ Textinghttps://mcp.eztexting.com/mcp
EZ Textinghttps://mcp.eztexting.com/mcpPro / Max / Team / Enterprise plans. No config file, no Node.
Edit your config file, then fully quit + relaunch Claude Desktop.
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Verify: Settings → Developer → MCP Servers. eztexting shown as "running".
claude mcp add --transport http eztexting https://mcp.eztexting.com/mcp
Scope flag works the same:
claude mcp add --transport http --scope user eztexting https://mcp.eztexting.com/mcp
claude mcp add --transport http --scope project eztexting https://mcp.eztexting.com/mcp
Or in ~/.claude.json / .mcp.json:
{
"mcpServers": {
"eztexting": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp"
}
}
}
Verify: claude mcp list. First tool call triggers OAuth.
claude mcp add eztexting -- npx -y @eztexting/mcp-server
Or JSON:
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"eztexting": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp"
}
}
}
Or: Settings → MCP → Add new MCP server → choose HTTP transport.
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Command palette → MCP: Open User Configuration. Add:
{
"servers": {
"eztexting": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp"
}
}
}
Workspace scope: same shape in .vscode/mcp.json. Open Copilot Chat → Agent mode → eztexting tools surface.
{
"servers": {
"eztexting": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Edit ~/.codeium/windsurf/mcp_config.json (or: Settings → Cascade → MCP Servers → Add).
{
"mcpServers": {
"eztexting": {
"serverUrl": "https://mcp.eztexting.com/mcp"
}
}
}
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"]
}
}
}
Restart Windsurf after editing.
Open Cline panel → MCP Servers icon → Configure MCP Servers → opens cline_mcp_settings.json.
{
"mcpServers": {
"eztexting": {
"type": "streamableHttp",
"url": "https://mcp.eztexting.com/mcp",
"disabled": false,
"autoApprove": []
}
}
}
{
"mcpServers": {
"eztexting": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server"],
"disabled": false,
"autoApprove": []
}
}
}
Save → Cline auto-restarts server. Refresh MCP panel if tools don't appear.
Zed remote-MCP support is limited as of writing. Use the local stdio bridge.
Open ~/.config/zed/settings.json. Add under context_servers:
{
"context_servers": {
"eztexting": {
"command": {
"path": "npx",
"args": ["-y", "@eztexting/mcp-server"]
},
"settings": {}
}
}
}
Restart Zed. Tools surface in the assistant panel.
37 tools across 4 functional groups. Names exposed unprefixed (no cross-group collisions).
| Tool | Purpose |
|---|---|
message_send | Send SMS / MMS to one or more recipients |
message_list | List sent messages with filters (date, status, recipient) |
message_get | Fetch a single message by ID |
message_template_list | List templates; pass id to fetch one |
message_template_upsert | Create or update a template |
message_template_delete | Delete a template |
conversation_list | List conversation threads (inbox) |
conversation_messages | Fetch messages within a thread |
conversation_messages_mark | Mark thread messages read / unread |
conversation_state | Get / set thread state (open, closed, archived) |
message_report_get | Fetch delivery + engagement report for a campaign |
message_report_responses | Fetch response data tied to a sent message |
| Tool | Purpose |
|---|---|
contact_list | List contacts with filters / pagination |
contact_get | Fetch a single contact by ID |
contact_upsert | Create or update a contact |
contact_delete | Delete a contact |
contact_group_list | List contact groups; pass id to fetch one |
contact_group_upsert | Create or update a group |
contact_group_delete | Delete a group |
contact_group_membership | Add / remove contacts in a group |
contact_field_list | List custom contact fields |
contact_field_upsert | Create or update a custom field |
contact_field_delete | Delete a custom field |
| Tool | Purpose |
|---|---|
wf_fetch | Fetch a workflow definition |
wf_save | Create or update a workflow |
wf_status | Activate / deactivate a workflow (publish / unpublish) |
wf_stat | Get aggregated workflow stats |
wf_templates | List available workflow templates |
wf_create_from_template | Instantiate a workflow from a template |
wf_schema | Fetch workflow JSON schema |
Workflow publishing eligibility is exposed via account_details (workflowPublishAllowed).
| Tool | Purpose |
|---|---|
account_details | Account info, plan, balance, workflow publishing eligibility |
buy_credits | Purchase message credits |
stat_get | Account stats — type=MSG (delivery) or AI_COMPOSE (AI usage) |
webhook_list | List webhooks; pass id to fetch one |
webhook_create | Register a new webhook |
webhook_delete | Remove a webhook |
keyword_list | List keyword auto-responders |
Use the unified /mcp endpoint by default. Pick a sub-server when you want a smaller tool catalog or a separate identity.
| Sub-server | Remote URL | Sample tools |
|---|---|---|
messaging | https://mcp.eztexting.com/mcp/messaging | message_send, conversation_list, message_template_upsert |
contacts | https://mcp.eztexting.com/mcp/contacts | contact_upsert, contact_group_membership, contact_field_list |
workflows | https://mcp.eztexting.com/mcp/workflows | wf_save, wf_create_from_template, wf_status |
admin | https://mcp.eztexting.com/mcp/admin | account_details, buy_credits, webhook_create |
Point your client at the sub-server URL directly. Example (Claude Code):
claude mcp add --transport http eztexting-messaging https://mcp.eztexting.com/mcp/messaging
Or JSON (Cursor / VS Code / Claude Desktop / Claude Code):
{
"mcpServers": {
"eztexting-messaging": {
"type": "http",
"url": "https://mcp.eztexting.com/mcp/messaging"
}
}
}
{
"mcpServers": {
"eztexting-messaging": {
"command": "npx",
"args": ["-y", "@eztexting/mcp-server", "--server", "messaging"]
}
}
}
"Send 'Order shipped — track at ez.tx/abc' to +15555550123."
usesmessage_send
"Add these 50 contacts to group 'VIP-2026' from contacts.csv."
usescontact_upsert, contact_group_membership
"Create a 3-step drip from the 'Welcome' template, send Day 0/3/7."
useswf_create_from_template, wf_save
"How many messages did we send last week, broken out by day?"
usesstat_get, message_report_get
"Register a webhook at https://my.app/ez for incoming replies."
useswebhook_create
"List unread conversations and summarize the top 5."
usesconversation_list, conversation_messages