Skip to content

Omni MCP

Use Azmarq SMS, WhatsApp, RCS, and OTP from Claude Desktop, Cursor, or a hosted HTTP connector. This package wraps the published azmarqomni Node SDK. It does not change that SDK, and it does not change the HTTP API on this hub.

Install

Need Node.js 20+.

Global

npm install -g azmarqomni-mcp@0.1.1

Or run without a global install:

npx

npx -y azmarqomni-mcp@0.1.1

Pin the version (@0.1.1) so you do not silently pick up a later release.

API key

  1. Sign in to the Azmarq console.
  2. Open Developer → API Key.
  3. Copy the key. Put it in the host env or, for HTTP, in a request header. Never put it in chat or in tool arguments.

The Azmarq API uses the apikey header, not a Bearer token. Same key as Authentication.

Treat a project-level MCP config file as untrusted code. Prefer a user-global config for your key. Do not set AZMARQ_BASE_URL from a repo you did not write.

Campaign reporting (Source-MCP)

Every WhatsApp, RCS, and unified send from this MCP sets campaignName to Source-MCP, or Source-MCP- plus the name the customer (or the model) passes. Example: abc is stored as Source-MCP-abc.

Use that prefix on the Azmarq dashboard reporting panel to attribute MCP traffic. SMS send paths in the live API do not take campaignName.

Claude Desktop

Edit the Claude Desktop config, then fully quit Claude (Cmd+Q / Exit) and reopen it.

OSFile
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json

claude_desktop_config.json

{
  "mcpServers": {
    "azmarq": {
      "command": "npx",
      "args": ["-y", "azmarqomni-mcp@0.1.1"],
      "env": {
        "AZMARQ_API_KEY": "your-api-key"
      }
    }
  }
}

If Claude cannot find npx (common with nvm), set "command" to the full path from which npx or which node and pass the built CLI.

You should see an azmarq MCP server. Ask: “List my WhatsApp templates” or “Send an SMS from SENDER to 98xxxxxxxx”.

Cursor

Project file .cursor/mcp.json or user file ~/.cursor/mcp.json. Use the same mcpServers.azmarq block as Claude Desktop. User-global config is safer for the API key.

mcp.json

{
  "mcpServers": {
    "azmarq": {
      "command": "npx",
      "args": ["-y", "azmarqomni-mcp@0.1.1"],
      "env": {
        "AZMARQ_API_KEY": "your-api-key"
      }
    }
  }
}

HTTP (ChatGPT, Gemini, Grok, Claude.ai)

Those hosts need a URL, not npx. Run the same package with --http:

Local HTTP

npx -y azmarqomni-mcp@0.1.1 --http --host 127.0.0.1 --port 3333
  • Default bind is 127.0.0.1 (this machine only).
  • GET /health — no key required.
  • MCP endpoint — http://127.0.0.1:3333/mcp

On localhost, the key may come from AZMARQ_API_KEY or from a request header.

To expose it on the internet (behind HTTPS you terminate):

Public bind

npx -y azmarqomni-mcp@0.1.1 --http --host 0.0.0.0 --port 3333

On a public bind, AZMARQ_API_KEY in the environment is ignored. Every request must send the customer’s key:

HeaderValue
apikeyAzmarq API key (preferred)
x-api-keySame
Authorization: Bearer …Accepted because some hosts only send this. The process still calls Azmarq with the apikey header.

Put HTTPS and a firewall in front. Do not run --host 0.0.0.0 on a raw public IP without TLS. A shared process-wide key would let anyone send SMS on one account; that is why public HTTP requires a per-request key.

Example customer connector:

  • URL: https://mcp.your-domain.com/mcp
  • Header: apikey: their-azmarq-key

Claude.ai, ChatGPT, Gemini, and Grok each have their own custom connector / MCP UI. Paste that URL and header there. If a host cannot send custom headers, it cannot use a safe public Azmarq MCP.

Tools

There is no generic HTTP tool. Payload details stay on this hub.

ToolWhat it does
send_sms / send_sms_templateLive SMS
send_whatsapp_* / send_whatsappLive WhatsApp
send_rcs / send_messageLive RCS or unified send
generate_otp / validate_otpOTP start / check
whatsapp_templatelist / get / create
whatsapp_groupGroup admin (includes delete and billed group send)
rcs_templatelist / get / create / update / delete

Environment

VariableMeaning
AZMARQ_API_KEYStdio and localhost HTTP only.
AZMARQ_BASE_URLMust be https://api.azmarq.com or unset. Other hosts are rejected.
AZMARQ_DEFAULT_COUNTRY_CODEDefault 91.
AZMARQ_MCP_HTTP1 to start HTTP instead of stdio.
AZMARQ_MCP_HOST / AZMARQ_MCP_PORTHTTP bind. Defaults 127.0.0.1 / 3333.

Inspect

Inspector

npx @modelcontextprotocol/inspector npx azmarqomni-mcp@0.1.1

Set AZMARQ_API_KEY in the inspector before a send tool.

Security

  • The key never belongs in tool arguments.
  • Error JSON redacts fields named like apikey, token, or secret.
  • Billed tools set destructiveHint so hosts can require approval.
  • AZMARQ_BASE_URL is allowlisted so a project mcp.json cannot point your key at an attacker host.
  • Public HTTP ignores a process env key and requires a per-request customer key.

SDK vs MCP

Install and send from application code on Omni SDK. HTTP routes and payloads stay on Quickstart, SMS, WhatsApp, RCS, and OTP.

Was this page helpful?