Skip to main content
Glama
OpenSIPS

OpenSIPS MCP Server

Official
by OpenSIPS

OpenSIPS MCP Server

CI Python 3.10+ License: Apache 2.0 MCP v1.27.0 Tests: 751 Scenarios: 25 Tools: 236

An AI-powered and shell-callable control plane for OpenSIPS. Connect any MCP-compatible AI client (Claude Desktop, Cursor, Cline, Continue, Cody) for natural-language operations — or use the same primitives via the opensips-mcp CLI for shell scripts, CI pipelines, and air-gapped operators.

Presented at OpenSIPS Summit 2026, Bucharest, April 28-30.

# AI client mode — connect any MCP-aware client
opensips-mcp serve

# CLI mode — no LLM required
opensips-mcp cfg list-scenarios
opensips-mcp cfg generate residential_pbx --param db_url=mysql://... --param domain=pbx.example.com
opensips-mcp cfg lint /etc/opensips/opensips.cfg --fail-on warning
opensips-mcp snapshot capture /var/lib/snapshots --label pre-deploy

Features

Category

Count

Description

Tools

236

MI, DB CRUD, cfg engine, migration, linting, tuning, diagnostics, security, B2BUA, presence, events, snapshots, benchmarks, RBAC, observability stack generator (Grafana + Prometheus + provisioning + monitoring docker-compose)

Scenarios

25

From class-4 SBC and residential PBX to IMS Cx with HSS interop, STIR/SHAKEN, SIPREC, MSRP, RADIUS auth, qrouting, RTT accessibility

Prompts

22

Config building, migration, troubleshoot, security audit, education

Operator-facing docs

15

SIP primer, error-code decoder, annotated cfg tour, ngrep/sngrep, end-to-end PBX tutorial, HA failover, NAT decision tree, TLS-from-scratch, post-deploy smoke test, IMS Cx with open5gs, compliance positioning, observability stack, Kamailio comparison + migration, limitations, more

Compliance frameworks addressed

8

HIPAA, GDPR/CCPA, SOC 2, PCI DSS, FCC § 13.114 (E911), STIR/SHAKEN, RFC 4103 RTT, NENA i3

Tests

751

Drift-prevention regression markers for every audit finding

Skills

6

Claude Code slash commands

Subagents

6

Claude Code orchestration roles

Why this over X?

If you're considering...

This project gives you

Hand-written m4 templates

A typed scenario library + auto-discovered knobs + a linter that catches what opensips -C misses

opensips-cli

Same primitives + 25 scenario templates + the migration engine + drift snapshots + 15 operator-facing docs

An honest comparison (docs/learn/kamailio-vs-opensips.md) and a migration guide (docs/learn/migrate-from-kamailio.md)

Twilio / Telnyx / Bandwidth

Self-hosted control over your SIP — at the cost of operating it yourself

DIY without an LLM

The CLI is the same code path; nothing requires AI

DIY without a CLI

Same primitives via MCP for any AI client

Skeptical or looking for what this is NOT good for? Read docs/learn/limitations.md before adopting.

Highlights

  • Full MI Coverage -- Execute any Management Interface command, list commands, gather statistics, and run health checks.

  • Database Management -- CRUD operations for subscribers, dispatchers, dynamic routing, permissions, call center, load balancer, dialplan, and accounting tables.

  • Configuration Engine -- Generate complete OpenSIPS configs from 8 scenario templates plus the m4/local.cfg override pattern, with a Kamailio-compatible WITH_* feature-flag composer that materialises a flat config (no #!ifdef nesting hell).

  • Version-Aware Migration -- Declarative per-hop rule chain across 2.4 → 3.0 → 3.1 → 3.2 → 3.3 → 3.4 → 3.5 → 3.6 (7 fully-populated hops). Rewrites behaviour-preserving changes (MI command renames, AVP prefix drop, global param renames) and flags every manual step / silent-gotcha the engineer must handle by hand. Includes the painful 3.4 → 3.5 load_balancer_* → lb_* MI rename that silently breaks monitoring in 3.6. An eighth hop 3.6 → 4.0 is scaffolded with the MI renames anticipated in the 4.0 beta but emits an "advisory" warning until a stable 4.0 lands. (OpenSIPS skipped 3.7 entirely — the chain reflects the actual release line.)

  • Semantic Linter -- 20+ rules checking module dependency graph, orphaned modparam, deprecated parameters, missing mf_process_maxfwd_header, anti-flood absence, NAT/rtpengine gaps, and production readiness.

  • Capacity Tuner (PGTune for SIP) -- Describe your workload (role + cores + RAM + CPS + NAT + TLS + HA), get a paste-ready override snippet with a # why: comment on every line.

  • Module Catalog + Explain -- Machine-readable module metadata powers a kubectl explain-style lookup for directives, modparams, script functions, pseudo-variables, and MI commands (with rename history).

  • Diagnostics -- Process lists, memory stats, TCP connections, uptime, tracing, and comprehensive health checks.

  • Security -- RBAC with readonly/admin roles, input validation, HA1 digest generation, config audit, Pike anti-flood management, and structured audit logging.

  • Version Support -- 2.4 → 3.6 fully rule-backed; one anticipatory 3.6 → 4.0 hop with master-branch MI renames (advisory until 4.0 stable). Runtime version strategies for 3.4 and 3.6 (production-ready) plus a 4.0 strategy flagged as experimental.

  • Docker Ready -- 7 pre-built Docker scenarios and a full-stack compose for instant deployment.

Quick Start

pip install

# Install from source
pip install -e .

# For MySQL support
pip install -e ".[mysql]"

# For PostgreSQL support
pip install -e ".[postgres]"

Configure

cp .env.example .env
# Edit .env with your OpenSIPS MI URL and database connection

Key environment variables:

Variable

Default

Description

OPENSIPS_MCP_MI_URL

http://127.0.0.1:8888/mi

OpenSIPS MI HTTP endpoint

OPENSIPS_MCP_DB_URL

sqlite+aiosqlite:///opensips.db

Database connection string

OPENSIPS_MCP_VERSION

3.6

Target OpenSIPS runtime version (3.4 or 3.6)

OPENSIPS_MCP_TRANSPORT

stdio

MCP transport (stdio, sse, streamable-http)

OPENSIPS_MCP_ROLE

readonly

RBAC role (readonly, admin). Defaults to least-privileged; set to admin only when write / MI-execute access is required.

OPENSIPS_MCP_LOG_LEVEL

INFO

Logging level

OPENSIPS_MCP_HOST

127.0.0.1

Bind address for network transports

OPENSIPS_MCP_PORT

8080

Listen port for network transports

OPENSIPS_MCP_API_KEY

(empty)

Optional API key for authentication

OPENSIPS_MCP_OPENSIPS_BIN

/usr/sbin/opensips

Path to opensips binary for config validation

OPENSIPS_MCP_READ_ONLY

false

Force read-only mode regardless of role

Run

# stdio transport (for Claude Desktop, Cursor, etc.)
opensips-mcp

# SSE transport (for web-based clients)
opensips-mcp --transport sse --host 0.0.0.0 --port 8080

# Streamable HTTP transport
opensips-mcp --transport streamable-http --host 0.0.0.0 --port 8080

MCP Client Integration

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "opensips": {
      "command": "opensips-mcp",
      "env": {
        "OPENSIPS_MCP_MI_URL": "http://your-opensips:8888/mi",
        "OPENSIPS_MCP_DB_URL": "mysql+asyncmy://opensips:opensipsrw@localhost/opensips"
      }
    }
  }
}
claude mcp add opensips -- opensips-mcp --transport stdio

Or edit .claude/settings.json:

{
  "mcpServers": {
    "opensips": { "command": "opensips-mcp", "args": ["--transport", "stdio"] }
  }
}

The project ships skills and subagents in .claude/ — Claude Code picks them up automatically when run inside the repo.

~/.cursor/mcp.json:

{
  "mcpServers": {
    "opensips": { "command": "opensips-mcp", "args": ["--transport", "stdio"] }
  }
}

~/.continue/config.json:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "opensips-mcp",
          "args": ["--transport", "stdio"]
        }
      }
    ]
  }
}
opensips-mcp --transport sse --host 0.0.0.0 --port 8700

Point any MCP-speaking client at http://<host>:8700/sse. Put an auth proxy in front in production — see docs/security.md and docker/nginx/ for a working config.

Docker Quick Start

Start OpenSIPS, MySQL, and the MCP server with a single command:

docker compose -f docker/docker-compose.yml up -d

This brings up:

  • opensips -- OpenSIPS 3.6 with MI HTTP on port 8888

  • mysql -- MySQL 8.0 with the OpenSIPS schema

  • opensips-mcp -- MCP server on port 8080 (streamable-http transport)

See docs/deployment.md for production deployment guidance.

MCP Tools

MI Commands

  • mi_execute -- Execute any MI command

  • mi_list_commands -- List available MI commands

  • get_statistics -- Retrieve runtime statistics

  • health_check -- Comprehensive health check

User Location

  • ul_show_contacts -- Show registered contacts for an AOR

  • ul_dump -- Dump all registered users

  • ul_add_contact -- Add a contact binding

  • ul_remove_contact -- Remove a contact binding

Dialog Management

  • dlg_list -- List active dialogs

  • dlg_end -- Terminate a dialog

  • dlg_get_profiles -- Get dialog profile sizes

  • dlg_push_var -- Set a dialog variable

Subscriber Management

  • subscriber_list -- List subscribers (with pagination)

  • subscriber_get -- Get subscriber by ID

  • subscriber_create -- Create a new subscriber

  • subscriber_update -- Update subscriber fields

  • subscriber_delete -- Delete a subscriber

Dispatcher (Load Balancing)

  • dispatcher_list_db -- List dispatcher destinations

  • dispatcher_add -- Add a destination

  • dispatcher_update -- Update a destination

  • dispatcher_remove -- Remove a destination

Dynamic Routing (full CRUD + reload)

  • drouting_list_rules, drouting_add_rule, drouting_update_rule, drouting_delete_rule

  • drouting_list_gateways, drouting_add_gateway, drouting_update_gateway, drouting_delete_gateway

  • drouting_list_carriers, drouting_add_carrier, drouting_update_carrier, drouting_delete_carrier

Dialplan (number translation)

  • dialplan_list_rules, dialplan_add_rule, dialplan_update_rule, dialplan_delete_rule

  • dialplan_reload, dialplan_translate

Carrier Routing & LCR

  • carrierroute_reload, carrierroute_dump, carrierroute_activate_host, carrierroute_deactivate_host, carrierroute_replace_host

  • lcr_dump, lcr_reload

B2BUA (back-to-back, SBC, SCA)

  • b2b_list_sessions, b2b_list_entities, b2b_terminate, b2b_bridge, b2b_trigger_scenario, b2b_sca_list

  • topology_hiding_list

Presence / PUA / BLF / MWI

  • presence_list_subscriptions, presence_refresh_watchers, presence_cleanup

  • pua_list_publications, pua_publish

UAC / Upstream Registrations

  • uac_reg_list, uac_reg_reload, uac_reg_enable, uac_reg_disable, uac_reg_force_register

Mid-Registrar

  • mid_registrar_dump, mid_registrar_update

NAT Helper

  • nathelper_enable_ping, nathelper_stats

Event Interface (flatstore, rabbitmq, json, etc.)

  • event_list, event_list_subscribers, event_subscribe

Stateless (SL)

  • sl_stats

AVP Operations

  • avp_get, avp_set, avp_delete

Load Balancer

  • lb_list -- List load balancer destinations

  • lb_reload -- Reload LB table

  • lb_set_status -- Enable/disable a destination

  • lb_resize -- Resize a resource

Call Center

  • cc_list_queue -- List call center queue

  • cc_list_agents -- List agents

  • cc_agent_login -- Login/logout an agent

  • cc_reload_tool -- Reload call center config

  • cc_status -- Call center statistics

Permissions

  • address_list -- List address permissions

  • address_add -- Add an address entry

  • address_remove -- Remove an address entry

Security

  • pike_list_blocked -- List Pike-blocked IPs

  • pike_unblock_ip -- Unblock an IP

  • security_generate_ha1 -- Generate HA1 digests

  • security_audit_config -- Audit a configuration

RTPEngine

  • rtpengine_show -- Show RTPEngine status

  • rtpengine_enable -- Enable/disable an RTPEngine instance

  • rtpengine_reload -- Reload RTPEngine config

Rate Limiting

  • ratelimit_status -- Show rate limit pipes

  • ratelimit_reset -- Reset a rate limit pipe

Cluster

  • cluster_status -- Cluster node status

  • cluster_topology -- Cluster topology

  • cluster_send_command -- Send a cluster broadcast command

Tracing

  • trace_control -- Enable/disable SIP tracing

  • trace_start_live -- Start live SIP trace

Registrar

  • registrar_stats -- Registrar statistics

Accounting

  • acc_query_cdrs -- Query CDR records

  • acc_query_missed -- Query missed call records

Diagnostics

  • get_process_list -- OpenSIPS process list

  • get_memory_stats -- Shared/private memory stats

  • get_uptime -- Server uptime

  • get_tcp_connections -- Active TCP connections

  • opensips_version -- OpenSIPS version info

Configuration Engine — generation

  • cfg_generate -- Generate config from a scenario template

  • cfg_generate_iterative -- Generate and iteratively validate

  • cfg_list_scenarios / cfg_get_scenario_params -- Scenario catalog

  • cfg_start_session / cfg_generate_m4 / cfg_preprocess / cfg_dry_run / cfg_save_session -- m4 / local.cfg override pattern

  • cfg_list_flags / cfg_compose_flags / cfg_build_from_flags -- Kamailio-compatible WITH_* feature-flag composer (produces a flat config with only enabled branches materialised)

Configuration Engine — understanding

  • cfg_parse -- Parse config and extract structure

  • cfg_validate -- Validate with the opensips -C -f binary

  • cfg_explain -- kubectl explain-style inline reference for any module / modparam / function / $pv / global / MI command

  • cfg_explain_route -- Analyse a specific route block

  • cfg_list_modules -- Module catalog (filter by version or category)

Configuration Engine — editing

  • cfg_diff -- Unified diff between two configurations

  • cfg_diff_reference -- Diff against the reference scenario template to see what's "custom"

  • cfg_edit -- Apply a natural-language edit and show the diff

  • cfg_add_module -- Add a module (with optional modparams) into an existing cfg

  • cfg_optimize -- Quick heuristic suggestions

Configuration Engine — linting & tuning

  • cfg_lint -- Run 20+ semantic lint rules (dependency gaps, deprecated params, missing anti-flood, etc.)

  • cfg_list_lint_rules -- Rule catalog

  • cfg_tune -- PGTune-style capacity tuner: describe workload → get override snippet with # why: comments

Configuration Engine — version migration

  • cfg_list_versions -- Supported versions and hop chain (2.4 → 3.0 → 3.1 → 3.2 → 3.3 → 3.4 → 3.5 → 3.6 fully populated; one anticipatory 3.6 → 4.0 hop)

  • cfg_check_compat -- Check a config for modules unavailable in a target version

  • cfg_migrate_plan -- Terraform-plan-style dry-run: report every rewrite and every manual step

  • cfg_migrate -- Apply the migration, emit a unified diff, validate the result

MCP Resources

URI

Description

opensips://system/version

OpenSIPS version information

opensips://system/uptime

Server uptime

opensips://system/processes

Running processes

opensips://system/memory

Memory usage

opensips://stats/all

All runtime statistics

opensips://modules/list

Available modules

opensips://modules/{name}

Module documentation

opensips://docs/mi/{command}

MI command documentation

opensips://templates/list

Available config templates

opensips://templates/{scenario}

Scenario template source

opensips://scenarios/list

Deployment scenario catalog

opensips://scenarios/{name}

Scenario detail and Docker config

opensips://db/subscribers

Subscriber table snapshot

opensips://db/dispatchers

Dispatcher table snapshot

MCP Prompts

Prompt

Description

build_config

Interactive OpenSIPS configuration builder

optimize_performance

Performance tuning advisor

design_architecture

SIP architecture designer

troubleshoot_calls

Call failure troubleshooting guide

troubleshoot_registration

Registration failure troubleshooting

explain_error

SIP/OpenSIPS error explainer

security_audit

Security configuration auditor

teach_concept

SIP/VoIP concept educator

explain_sip_ladder

SIP ladder diagram analyzer

explain_route

OpenSIPS route block explainer

debug_sip_message

SIP message parser and debugger

plan_capacity

SIP capacity planning advisor

write_module

OpenSIPS C module development guide

migrate_version

Version migration assistant (natural-language plan)

migrate_version_auto

Automated plan + apply workflow driving cfg_migrate_plan / cfg_migrate

compare_modules

Module comparison guide

Architecture

+------------------+     +-------------------+     +------------------+
|   MCP Client     |     |  OpenSIPS MCP     |     |    OpenSIPS      |
|  (Claude, etc.)  |<--->|  Server           |<--->|  (MI HTTP)       |
+------------------+     |                   |     +------------------+
                         |  +-------------+  |
                         |  | Tools (94)  |  |     +------------------+
                         |  +-------------+  |     |    Database      |
                         |  | Resources   |  |<--->|  (MySQL/PG/      |
                         |  +-------------+  |     |   SQLite)        |
                         |  | Prompts     |  |     +------------------+
                         |  +-------------+  |
                         |  | Config Eng. |  |
                         |  +-------------+  |
                         |  | Security    |  |
                         |  +-------------+  |
                         +-------------------+

Layers:
  MCP (FastMCP)  ->  Service (Tools/Resources/Prompts)
                 ->  Infrastructure (MI Client, DB, Config Engine)
                 ->  Version (3.4 / 3.6 strategies)
                 ->  Security (RBAC, Validation, Audit)

Supported OpenSIPS Versions

Version

Status

Notes

2.4

Migration source

Fully rule-backed source for cfg_migrate

3.0–3.5

Migration source

Each hop has fully-populated rule sets

3.4

Runtime supported

LTS — full MI and DB coverage

3.6

Runtime default + migration target

Latest stable LTS (3.6.4 as of 2026-04)

4.0

Anticipated migration target / experimental runtime

One advisory hop with master-branch MI renames; rules not yet validated against a stable build

OpenSIPS jumped from 3.6 directly to 4.0 — there was no 3.7 release. The migrator chain reflects the actual release line (8 hops total: 7 fully populated to 3.6, plus 1 anticipatory hop to 4.0).

Development

# Setup
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# Test
make test

# Lint and format
make lint
make format
make type-check

See CONTRIBUTING.md for the full development guide.

Documentation

Start here:

  • Quickstart -- Zero to working proxy in 15 minutes (install → client setup → first prompts)

  • Tool Chooser -- "Which tool should I use for X?" — map goals to tools

  • FAQ / Troubleshooting -- Setup errors, runtime issues, common questions

Reference:

Claude Code skills and subagents (in .claude/skills/ and .claude/agents/):

  • Skills: /opensips-quickstart, /opensips-config-build, /opensips-troubleshoot, /opensips-migrate, /opensips-security-audit, /opensips-tool-chooser

  • Subagents: opensips-architect, opensips-config-author, opensips-incident-responder, opensips-migrator, opensips-security-auditor, opensips-teacher

Examples

License

Apache License 2.0 -- Copyright 2026 Officering LLC

Install Server
A
license - permissive license
B
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OpenSIPS/opensips-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server