Skip to content
Book a demo
MCP server

Give your LLM agent a phone line

An open-source Model Context Protocol server that puts the SIPRTC CPaaS API in reach of any agent. The model calls a tool; we place the call.

Open source v0.1.0 Python 3.10+ stdio & HTTP
Why it exists

Telephony that an agent can actually reach

Agents are good at deciding to make a call and bad at HTTP plumbing. MCP removes the plumbing.

Your agent places real calls

The model calls a tool, SIPRTC dials the number. No glue code between the LLM and the carrier.

Works with any MCP client

Claude Desktop, Claude Code, or your own agent runtime. MCP is the interface, so the client is your choice.

Your credentials, your account

Basic auth against your own auth_id and auth_secret. Nothing is proxied through a third party.

stdio or Streamable HTTP

Run it beside the client over stdio, or host it once over HTTP and point a fleet of agents at it.

Ships with a Dockerfile

A container image and a compose file, so a working deployment is one command rather than a Python setup.

Open source, and early

Version 0.1.0. The tool surface will grow — issues and pull requests are the fastest way to shape it.

Tool surface

23 tools across six resource groups

Everything below is exposed to the model by name, with typed arguments and structured results.

Voice calls 3

  • siprtc.make_call
  • siprtc.get_call
  • siprtc.hangup_call

Messaging 1

  • siprtc.send_sms

Phone numbers 6

  • siprtc.list_phone_numbers
  • siprtc.list_available_phone_numbers
  • siprtc.buy_phone_number
  • siprtc.get_phone_number
  • siprtc.associate_application_to_phone_number
  • siprtc.release_phone_number

SIP users 4

  • siprtc.list_sip_users
  • siprtc.create_sip_user
  • siprtc.update_sip_user
  • siprtc.associate_sip_user_application

Domains 5

  • siprtc.list_domains
  • siprtc.create_domain
  • siprtc.get_domain
  • siprtc.update_domain
  • siprtc.delete_domain

Applications 4

  • siprtc.list_applications
  • siprtc.create_application
  • siprtc.update_application
  • siprtc.delete_application
Quick start

Running in about a minute

Two transports. Use stdio when the client sits on the same machine, HTTP when it does not.

stdio Local clients

For Claude Desktop, Claude Code, or anything that launches the server as a subprocess.

python -m pip install -e .

export SIPRTC_AUTH_ID="your_auth_id"
export SIPRTC_AUTH_SECRET="your_auth_secret"

python -m siprtc_mcp

HTTP Hosted agents

Run it once and point a fleet of agents at the endpoint over Streamable HTTP.

export MCP_TRANSPORT="http"
export MCP_HOST="0.0.0.0"
export MCP_PORT="8000"
export MCP_PATH="/mcp"

python -m siprtc_mcp

Docker Container image

The repository ships a Dockerfile and a compose file that runs the server alongside a Chainlit test UI.

docker run --rm -p 8000:8000 \
  -e SIPRTC_AUTH_ID=your_auth_id \
  -e SIPRTC_AUTH_SECRET=your_auth_secret \
  -e MCP_TRANSPORT=http \
  -e MCP_HOST=0.0.0.0 \
  -e MCP_PORT=8000 \
  -e MCP_PATH=/mcp \
  siprtc-mcp:latest
Authentication

It talks to your account, not ours

Credentials resolve in a fixed order, so a hosted deployment can serve several tenants without redeploying.

1. Per-request bearer token

Over HTTP, the bearer token is the URL-safe base64 encoding of auth_id:auth_secret. Checked first, so one running server can act for whichever account made the request.

2. Environment variables

SIPRTC_AUTH_ID and SIPRTC_AUTH_SECRET. The usual choice for stdio, where the server belongs to one user.

Endpoint paths are configurable. Every route the server calls can be overridden with an environment variable, so a private or on-premise SIPRTC deployment works without a code change. The defaults point at https://api.siprtc.io/v1.

siprtcio/siprtc-mcp

First release, and openly developed. If a tool you need is missing, an issue describing the call you wanted to make is more useful to us than a feature request in the abstract.

View on GitHub
Questions

Common questions

What is the SIPRTC MCP server?

An open-source Model Context Protocol server that exposes the SIPRTC CPaaS API as 23 tools an LLM agent can call — placing voice calls, sending SMS, and managing phone numbers, SIP users, domains and applications.

Which MCP clients does it work with?

Any MCP client. It speaks stdio for local clients such as Claude Desktop and Claude Code, and Streamable HTTP for hosted agent runtimes.

How does it authenticate to SIPRTC?

HTTP Basic Auth with your own auth_id and auth_secret, supplied as environment variables, or per request as a bearer token containing the URL-safe base64 encoding of auth_id:auth_secret.

What does it cost to use?

The MCP server itself is free and open source. Calls and messages it places are billed on your normal SIPRTC account, at your existing rates.

Building an agent that needs to talk to people?

Tell us what your agent is trying to do. We will help you get the call flow right, and tell you plainly if MCP is the wrong tool for it.