Wavix
OfficialWavix MCP Server
A Model Context Protocol server that gives LLMs and AI agents direct access to the Wavix telecom platform — SMS/MMS, voice calls, 2FA, SIP trunking, phone-number management, 10DLC registration, call recordings, speech analytics, and billing.
Wavix is a global communications platform for sending SMS, placing voice calls, and running 2FA flows over a single API. A free trial is available; paid usage follows the Wavix pricing plan attached to your account.
The fastest way to use this MCP server is the hosted endpoint at https://mcp.wavix.com/mcp — point any MCP-compatible client at it and connect by signing in with your Wavix account or with a Wavix API key. If you need to self-host (custom Wavix deployment, behind a firewall, dedicated instance), see Run your own.
Table of contents
Install — sign in with an account, API key, one-click, Claude Code, Claude Desktop / Web, Cursor, VS Code, Codex CLI, Windsurf
Run your own (self-host)
Related MCP server: Sinch MCP Server
Endpoint
Field | Value |
URL |
|
Transport | Streamable HTTP |
Auth | Sign in with a Wavix account (OAuth 2.1), or |
Tools | see TOOLS.md |
Resources | Wavix docs + OpenAPI spec (auto-discovered) |
Get a Wavix API key from the Wavix Console → Administration → API keys → Create new.
Install
Two ways to connect — pick whichever your client supports; neither is required over the other.
Sign in with a Wavix account
If your MCP client supports OAuth (Claude Desktop / Web, and other OAuth-capable clients), connect without an API key: add the connector for https://mcp.wavix.com/mcp and, when the client prompts, sign in with your Wavix account and approve access. The client runs the OAuth 2.1 flow and stores the token itself — nothing to paste. The tools you get are scoped to what you approve and your account role permits (see Troubleshooting).
Connect with an API key
Before you start: grab your Wavix API key.
Sign in at https://wavix.com.
Open Administration → API keys.
Click Create new (or copy an existing key). Keep it handy — you'll paste it in place of
YOUR_API_KEYbelow.
One-click install
⚠️ The buttons below seed your editor's MCP config with a placeholder token
YOUR_API_KEY. After the editor finishes installing, open the generated config and replace the placeholder with your real API key before sending any request — otherwise every call will return401 Unauthorized.
To remove later: open the same config file (~/.cursor/mcp.json, .vscode/mcp.json, or the equivalent for your editor) and delete the wavix entry, or remove the connector through your editor's MCP / Connectors UI.
Claude Code
claude mcp add --transport http wavix https://mcp.wavix.com/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Use claude mcp list to verify and /mcp inside a session for status.
Claude Desktop / Claude Web
Settings → Connectors → Add custom connector:
Name:
WavixURL:
https://mcp.wavix.com/mcpTransport:
Streamable HTTPAuthentication header:
Authorization: Bearer <api_key>
To connect by signing in instead, add the connector without an authentication header and sign in with your Wavix account when the client prompts.
Cursor (manual)
Add to ~/.cursor/mcp.json (or project-level .cursor/mcp.json):
{
"mcpServers": {
"wavix": {
"url": "https://mcp.wavix.com/mcp",
"headers": {
"Authorization": "Bearer <api_key>"
}
}
}
}Cursor 2.4+ exposes the full catalogue; earlier versions cap at 40.
VS Code (manual, GitHub Copilot Chat)
Create .vscode/mcp.json in your workspace (or add the same servers object under the "mcp" key in user settings.json):
{
"servers": {
"wavix": {
"type": "http",
"url": "https://mcp.wavix.com/mcp",
"headers": {
"Authorization": "Bearer <api_key>"
}
}
}
}See the VS Code MCP servers guide for the up-to-date schema.
Codex CLI
Codex CLI supports MCP over stdio. Bridge to the hosted server via mcp-remote. Edit ~/.codex/config.toml:
[mcp_servers.wavix]
command = "npx"
args = [
"-y",
"mcp-remote",
"https://mcp.wavix.com/mcp",
"--header",
"Authorization:Bearer ${WAVIX_API_KEY}"
]
[mcp_servers.wavix.env]
WAVIX_API_KEY = "YOUR_API_KEY"Windsurf / other clients
Any MCP client that supports Streamable HTTP transport with custom headers will work. Use:
URL:
https://mcp.wavix.com/mcpHeader:
Authorization: Bearer <api_key>
Setting up via an AI agent? Point your agent at llms-install.md — it's a machine-readable install guide that gives the model the URL, header, and per-client configuration in a deterministic format so it doesn't improvise endpoint values.
Run your own
The hosted server works out of the box for most users. Self-host if you need to point at a non-public Wavix deployment, run behind a firewall, or operate inside your own infrastructure.
Docker
docker build -t wavix-mcp-server .
docker run --rm -p 8000:8000 wavix-mcp-serverThe server listens on port 8000 and exposes the MCP endpoint at /mcp. Point your client at http://<host>:8000/mcp.
From source
git clone https://github.com/Wavix/wavix-mcp-server.git
cd wavix-mcp-server
pip install -e .
wavix-mcpRequires Python 3.10+.
Configuration
Env var | Default | Purpose |
|
| Override the upstream Wavix API endpoint (for internal deployments or staging) |
| unset | Base URL of the OAuth 2.1 authorization server. Its JWKS is read from |
| unset | Public base URL this server is reached at, used as the resource identifier |
|
| With OAuth on, still accept a bearer that is not an OAuth JWT and forward it upstream (API keys keep working). Set |
|
| Path the MCP endpoint is served on |
No Wavix credentials are required to run the server — they are forwarded per-request from the MCP client's Authorization: Bearer <api_key> header. Self-hosters are responsible for terminating TLS in front of the server (nginx, Caddy, cloud load balancer) before exposing it publicly.
OAuth 2.1 (optional)
Set OAUTH_ISSUER and OAUTH_RESOURCE together to turn the server into an
OAuth 2.1 protected resource. It then publishes RFC 9728 metadata at
/.well-known/oauth-protected-resource<MCP_PATH>, validates incoming access
tokens as JWTs against the issuer's JWKS, and answers unauthenticated requests
with a WWW-Authenticate challenge pointing at that metadata. MCP clients that
support OAuth use this to run the authorization flow themselves, so users no
longer paste an API key into their client config.
The audience each token must carry is OAUTH_RESOURCE + MCP_PATH, which is
also the resource value published in the metadata. Authorization servers
implementing RFC 8707 compare the client's resource parameter
against that string exactly, so the two must be configured to match — including
the path.
Enabling OAuth does not cut off clients that authenticate with a Wavix API
key. A bearer token that is not a valid OAuth JWT is forwarded upstream
unverified, exactly as before, leaving the Wavix API the sole authority on it —
so an existing deployment can turn OAuth on for new clients without breaking
the ones already connected. A request carrying no token at all still gets the
WWW-Authenticate challenge, which is what lets an OAuth-capable client
discover the authorization server. Only OAuth-authenticated connections are
scope-filtered; an API-key connection sees the full tool surface.
Set OAUTH_API_KEY_PASSTHROUGH=false to drop that fallback and require a valid
JWT — the strict mode to switch to once API-key access is retired.
Leaving either of OAUTH_ISSUER / OAUTH_RESOURCE unset keeps the previous
behaviour: no metadata is published and whatever bearer token the client sends
is forwarded upstream unverified.
Examples
Concrete prompts you can drop into any connected client.
Phone numbers below (
+1 310 555 0100,+44 7700 900123) are in reserved test ranges (NANP555and Ofcom070 09xx) — safe to copy verbatim, no real subscribers are reachable through them.
Send a transactional SMS
Prompt: "Send an SMS from +13105550100 to +447700900123 saying 'Your verification code is 4821'."
The agent calls sms_and_mms_messages_send with from, to, and text. Returns the message ID and delivery status.
Run a 2FA verification
Prompt: "Send a 2FA verification code to +13105550100 via SMS. When I give you the code I receive, check whether it's correct."
The agent calls two_fa_verification_create, waits for you to share the code that arrives via SMS, then calls two_fa_verification_check. Useful for prototyping passwordless flows without writing integration code.
Find and buy a phone number
Prompt: "Find an available US toll-free number with SMS capability, add it to my cart, and check out."
The agent chains buy_numbers_list (filtering by country and feature), cart_add, and cart_checkout. Confirm with the user before checkout — it charges the account.
Search call transcripts
Prompt: "Show me all inbound calls from yesterday longer than two minutes where the caller mentioned 'refund'."
The agent uses cdrs_search against transcriptions, then enriches each result via cdrs_get for full call metadata.
Pull a recording and transcribe it
Prompt: "Get the recording for call abc-123, ask Wavix to transcribe it, and return the transcription."
The agent calls call_recording_get_by_call (returns a pre-signed download URL), cdrs_retranscribe, then polls cdrs_transcription_get.
Audit billing
Prompt: "How much did we spend on SMS last month, and what invoices were issued?"
The agent calls billing_transactions_list filtered by type and date, then billing_invoices_list. Downloading the invoice PDF itself is not exposed over MCP — fetch it from the Wavix API or dashboard.
Tools
116 tools, generated from the Wavix OpenAPI spec. Arguments mirror request parameters and body fields.
Group | # | Coverage |
9 | Send, list, retrieve messages; sender IDs; opt-outs | |
9 | Start / answer / end calls; play audio; collect DTMF | |
4 | List, download (pre-signed URL), delete | |
2 | Start / stop media stream | |
3 | List, create, delete | |
6 | List, retrieve; transcription search and retranscribe | |
3 | Transcribe, retrieve original file | |
6 | Create / check / cancel / resend verification; events | |
5 | List, update, release; SMS / voice routing | |
5 | Countries, regions, cities; available number search | |
4 | Add, remove, retrieve, checkout | |
3 | Single and bulk validation | |
5 | Full CRUD | |
29 | Brands, campaigns, vetting, evidence, event subscriptions | |
3 | Get / update profile; account config | |
4 | List, create, update, delete | |
5 | List, create, get, update; transactions | |
2 | Transactions; list invoices / statements | |
2 | Trigger and retrieve | |
5 | Widget tokens CRUD | |
2 | Create short links; metrics |
See TOOLS.md for the complete tool list with one-line descriptions. The authoritative source is the Wavix OpenAPI spec — your client always sees the current live catalogue.
Resources
In addition to tools, the server exposes Wavix documentation as MCP Resources, so the model can pull authoritative context on demand instead of guessing from prior knowledge.
URI scheme | Contents |
| Documentation pages from docs.wavix.com (auto-discovered via |
| The full Wavix OpenAPI 3.0 specification. |
Both sources — docs.wavix.com and the Wavix OpenAPI spec — are publicly available and can be browsed directly without authentication.
Resources are fetched lazily on resources/read and cached server-side with a 1-hour TTL. The upstream Bearer token is never forwarded to documentation hosts — only to api.wavix.com.
Authentication
The hosted server accepts two connection methods — neither is preferred:
Sign in with a Wavix account (OAuth 2.1). For OAuth-capable clients. The client runs the authorization flow and the user signs in; no API key is stored. Access is scope-limited to what the user approves and their account role permits. See Sign in with a Wavix account.
Wavix API key (Bearer). For any Streamable-HTTP client. Every request must include:
Authorization: Bearer <api_key>The server forwards this header to api.wavix.com per-request. The token:
is never logged,
is never forwarded on cross-host redirects (e.g. pre-signed S3 download URLs),
is never sent to documentation hosts.
If your client follows a pre-signed download URL returned by call_recording_get_by_call, speech_analytics_file_get, or ten_dlc_brand_evidence_get, fetch it directly without the Authorization header.
Best practices
Use a dedicated API key for MCP. Create a separate API key at https://wavix.com → Administration → API keys (or via the
api_keys_createtool itself, from another session). This lets you revoke MCP access without disrupting other integrations.Rotate periodically. Treat the API key like any production secret: rotate on schedule and on any suspicion of leakage.
Keep API keys out of git. MCP client configs are easy to commit by accident, taking the token with them into history and CI logs. Most clients support
${env:VAR}substitution in the header value — store the API key in an env var or your OS keychain and reference it from the config. As a safety net, add the common client-config paths to your project's.gitignore:.cursor/mcp.json .vscode/mcp.json claude_desktop_config.json .claude/mcp.json .codex/config.toml
If a credential is compromised
If you connected with an API key:
In the Wavix Console, deactivate or delete that key immediately (or call
api_keys_delete).Create a replacement via
api_keys_createor the Console.Update the client's config and reconnect.
If you connected by signing in with your Wavix account:
Revoke the connection from the Wavix portal's grant-management page, which lists the connections you authorized and revokes the one you choose — this invalidates that connection's tokens. No API key is involved.
Reconnect and sign in again.
In either case, review billing_transactions_list and cdrs_list for unexpected activity.
Troubleshooting
Symptom | Likely cause / fix |
| Authentication failed. With an API key: the |
Tool returns a | Expected. Recording, speech-analytics, and 10DLC evidence endpoints return pre-signed URLs (see Authentication). Fetch the URL directly without the |
Client only shows ~40 tools, not the full catalogue | Older clients enforce a per-server tool cap. Upgrade (Cursor 2.4+, latest VS Code, latest Claude). |
Fewer tools available after signing in with a Wavix account | Expected. Account sign-in is scope-filtered — you get the tools your approved scopes and account role allow, not the full catalogue. An API-key connection sees the full tool surface. To widen the set, approve more scopes at sign-in (subject to your role) or connect with an API key that carries them. |
| The local client may be caching an old tool list. Restart the client, or remove and re-add the server. |
4xx with an | Validation error from Wavix API. Inspect |
Cannot reach the server | Confirm DNS and outbound HTTPS to |
Agent calls a destructive tool unexpectedly | Most clients can require confirmation before tool calls — enable that setting and rotate to a dedicated MCP API key (see Best practices). |
Compatibility & limits
Compatible with any MCP client supporting Streamable HTTP transport (Claude Desktop / Web / Code, Cursor 2.4+, VS Code, Windsurf, custom MCP SDKs) and any agent framework with an MCP client adapter.
Older clients may enforce a per-server tool cap; upgrade to a recent version to access the full catalogue.
Rate limits and usage charges follow your Wavix account plan. See Wavix pricing.
Changelog
The hosted server is updated continuously as the Wavix OpenAPI spec evolves; new tools appear automatically and existing tool arguments may gain optional fields. Documentation changes for this repository are tracked under Releases. For substantial behavior changes affecting tool inputs or auth, we will publish a notice both there and in the Wavix release notes.
Support
Product docs: https://docs.wavix.com
API reference: https://docs.wavix.com/api-reference
Questions / feedback: support@wavix.com
Contributing
This repository is source-available but not open to external contributions. Pull requests are auto-closed, and Issues / Discussions are disabled. Send bug reports, feature requests, and feedback to support@wavix.com. See CONTRIBUTING.md for details.
If you find a bug in the underlying FastMCP framework, please report it upstream there.
Security
To report a security vulnerability, please email support@wavix.com with the subject Security: <short summary> rather than opening a public issue. See SECURITY.md for details.
License
MIT © Wavix
This server cannot be deployed
Maintenance
Related MCP Connectors
Communication stack for AI agents: SMS, AI voice calls, phone numbers, and account events.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Give your AI agents a real WhatsApp number to send and receive messages.
Virtual phone numbers for AI agents — rent numbers in 200+ countries, receive SMS.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn implementation of the Model Context Protocol (MCP) server that exposes Twilio APIs to AI assistants and tools, allowing them to interact with Twilio services through the MCP protocol.109MIT

Sinch MCP Serverofficial
AlicenseBqualityBmaintenanceProvides a set of tools to interact with Sinch APIs for messaging, voice, verification, and email services, enabling users to send messages across different channels, perform phone verifications, make voice calls, and manage email communications.1271 npm1Apache 2.0
Telnyx MCP Serverofficial
FlicenseBqualityFmaintenanceEnables interaction with Telnyx's telephony, messaging, and AI assistant APIs to manage phone numbers, send messages, make calls, and create AI assistants. Includes webhook support for real-time event handling and comprehensive tools for voice, SMS, cloud storage, and embeddings.4625-- AlicenseNot gradedqualityDmaintenanceEnables LLMs to make voice calls and send SMS messages through the Vonage API, allowing AI assistants to perform real-world telephony operations with support for speech recognition and multi-language conversations.1MIT