Pbx MCP server
Inspect and control Asterisk (AMI) and FreeSWITCH (ESL) PBX servers from your AI assistant.
19 stars120 downloads/wk
Reviews
Write oneNobody has reviewed Pbx yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Pbx tools (22, 6 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
asterisk_channelsEvery channel currently up on the PBX, with caller ID, state, bridge, duration and
asterisk_cliwrite actionRun a command through the Asterisk CLI and return its raw output.
asterisk_dialplanDump the dialplan for a context, or for one extension within a context.
asterisk_endpointsPJSIP endpoints with their device state and how many contacts are registered.
asterisk_extension_createwrite actionCreate a PJSIP endpoint that a phone registers to (endpoint, aor and auth, prefixed 'mcp-'). This is
asterisk_extension_deletewrite actionDelete an extension created by asterisk_extension_create. Only 'mcp-' extensions in the managed file can be deleted.
asterisk_extension_listList the extensions created by asterisk_extension_create. Passwords are never shown.
asterisk_hangupTerminate an active channel by name. Get exact channel names from asterisk_channels first.
asterisk_hangup_previewShow which live channels a hangup would affect, without touching them. Takes the same
asterisk_originateOriginate a call from a channel to an extension in a context. This places a real call
asterisk_statusCore status of the Asterisk server: version, uptime, active calls and calls processed.
asterisk_trunk_createwrite actionCreate a PJSIP trunk (endpoint, aor and identify, all prefixed 'mcp-') to a peer that Asterisk
asterisk_trunk_deletewrite actionDelete a trunk created by asterisk_trunk_create. Only 'mcp-' trunks in the managed file can be deleted.
asterisk_trunk_listList the trunks created by asterisk_trunk_create (only 'mcp-' objects in the managed file).
freeswitch_apiwrite actionRun a command through the FreeSWITCH event socket and return its raw output.
freeswitch_channelsEvery call leg currently up on the switch, as returned by 'show channels'.
freeswitch_hangupTerminate an active call leg by its UUID. Get exact UUIDs from freeswitch_channels first.
freeswitch_hangup_previewShow which live call legs a hangup would affect, without touching them. Takes the same
freeswitch_originateOriginate a call from a dial string to an extension. This places a real call and costs
freeswitch_registrationsRegistered SIP users on a Sofia profile, with contact URI, user agent and expiry.
freeswitch_sofia_statusState of every Sofia SIP profile and gateway, including whether trunks are registered upstream.
freeswitch_statusCore status of the FreeSWITCH server: version, uptime, current and maximum sessions.
Public scan report
scanner v0.1.10 · 2026-11-04 · same rubric, same numbers if you re-run it
- Code scan19 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 9 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year9/10
How Pbx compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 85/100
- higher than 70% of 48,243 servers
- Tools
- 22
- the typical server has 7
- Tools that change things
- 27%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 19
- more than 91% of 28,706 servers
- Downloads a week
- 120
- more than 66% of 12,306 servers with a package
What its tools let an agent do: 16 read · 6 change
Release history: 3 versions in the registry since 2026-08-12, latest 2026-10-26, typically one every 58 days.
Install Pbx in Claude Code, Cursor or VS Code
Runs npx -y pbx-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add pbx-mcp -- npx -y pbx-mcp
What the publisher says
From the Pbx repository's README, as published. We do not edit it. Read it on GitHub
pbx-mcp
An MCP server that lets an AI assistant inspect and control Asterisk and FreeSWITCH.
Ask "which extensions are offline right now?" or "why is my SIP trunk not registering?" and get a real answer from the live switch, not a guess.
Developed by Tahir Almas at ICT Innovations, the team behind ICTCore, ICTContact, ICTDialer, ICTFax and ICTPBX. The AMI and ESL clients in this repo are the same protocol groundwork those products run on.
Why
Debugging a PBX means memorising two very different command sets. Asterisk speaks AMI and a CLI with hundreds of verbs. FreeSWITCH speaks ESL with its own vocabulary. If you run both, you're context switching all day.
pbx-mcp puts a single, well described tool surface in front of both, so your assistant can go from "calls are failing" to sofia status gateway without you spelling out each step.
New here? The user guide walks through PBX setup, client config, worked examples and troubleshooting. This README is the quick reference.
What your assistant sees
Twelve read-only tools, six per engine, each one described well enough that the model picks the right one without being told. This is the server running under the MCP Inspector:
The four write tools, asteriskoriginate, asteriskhangup, freeswitchoriginate and freeswitchhangup, stay hidden until you set PBXMCPALLOW_WRITE=true.
Install
npm install -g pbx-mcpOr run it straight from npx, which is what most MCP client configs do:
npx -y pbx-mcpYou need Node 18 or newer.
Docker
There's a prebuilt image if you'd rather not put Node on the machine that talks to your PBX.
docker run -i --rm \
-e ASTERISK_AMI_HOST=10.0.0.10 \
-e ASTERISK_AMI_USERNAME=mcp \
-e ASTERISK_AMI_PASSWORD=change-me \
ghcr.io/ictinnovations/pbx-mcpThe same image is on Docker Hub as ictinnovations/pbx-mcp if that registry is an easier pull for you.
Three things to know:
- -i is not optional. The server speaks MCP over stdio, so without stdin attached the container starts and then sits there saying nothing, which looks exactly like a broken server.
- There is no port to publish. Nothing listens.
- Your PBX has to be reachable from inside the container. If Asterisk runs on the Docker host itself, swap the IP above for host.docker.internal on Mac and Windows, or add --network host on Linux.
The image runs as a non-root user and, like every other way of running this, starts read only.
Configure
Everything comes from environment variables. Set the Asterisk block, the FreeSWITCH block, or both. The server only registers tools for what you've actually configured, so an Asterisk-only shop never sees a FreeSWITCH tool.
Asterisk
Your manager.conf user needs at least read = system,call,command and write = command. Add originate only if you plan to turn on write mode.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Pbx: common questions
- Is Pbx MCP server safe?
- Yes, by our scan: it is graded A (85/100). Read the Pbx safety report
- How do I install Pbx?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Pbx need an API key?
- Yes. The registry entry asks for
ASTERISK_AMI_PASSWORD,FREESWITCH_ESL_PASSWORD. - Is Pbx maintained?
- The last commit was 10 days ago (2026-10-26). The latest release is v0.1.4.
- What can I use instead of Pbx?
- Servers from other publishers that do the same job: Firefox DevTools MCP server.
- How does Pbx compare with other MCP servers?
- safety score 85/100 (higher than 70% of 48,243 servers); tools 22 (the typical server has 7); tools that change things 27% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Pbx
Same job from other publishers: the closest match first, then the best rated.
- Firefox DevTools MCPControl and debug Firefox: navigate, fill forms, inspect network and console, profile.not reviewedEstablishedA