{"name":"io.github.ictinnovations/pbx-mcp","slug":"ictinnovations-pbx-mcp","title":null,"description":"Inspect and control Asterisk (AMI) and FreeSWITCH (ESL) PBX servers from your AI assistant.","url":"https://mcp.market/server/ictinnovations-pbx-mcp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":41,"stars":19,"forks":14,"downloads_week":120,"last_push_at":"2026-10-26T07:11:40.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/ictinnovations/pbx-mcp","website":"https://ictinnovations.com","version":"0.1.4","remotes":[],"packages":[{"registryType":"npm","identifier":"pbx-mcp","version":"0.1.4","transport":{"type":"stdio"},"environmentVariables":[{"description":"Hostname or IP of the Asterisk server. Set this to enable the Asterisk tools.","format":"string","name":"ASTERISK_AMI_HOST"},{"description":"Asterisk Manager Interface port. Defaults to 5038.","format":"number","default":"5038","name":"ASTERISK_AMI_PORT"},{"description":"AMI username from manager.conf.","format":"string","name":"ASTERISK_AMI_USERNAME"},{"description":"AMI secret from manager.conf.","format":"string","isSecret":true,"name":"ASTERISK_AMI_PASSWORD"},{"description":"Connect to AMI over TLS. Set true if tlsenable=yes in manager.conf.","format":"boolean","default":"false","name":"ASTERISK_AMI_TLS"},{"description":"Hostname or IP of the FreeSWITCH server. Set this to enable the FreeSWITCH tools.","format":"string","name":"FREESWITCH_ESL_HOST"},{"description":"FreeSWITCH inbound event socket port. Defaults to 8021.","format":"number","default":"8021","name":"FREESWITCH_ESL_PORT"},{"description":"Event socket password from event_socket.conf.xml. Defaults to ClueCon, which you should change.","format":"string","isSecret":true,"name":"FREESWITCH_ESL_PASSWORD"},{"description":"Unlocks call control. When false the server is read-only and the originate and hangup tools are not registered at all. Placing a call on a live trunk costs real money, so leave this off unless you mean it.","format":"boolean","default":"false","name":"PBX_MCP_ALLOW_WRITE"},{"description":"Per command timeout in milliseconds. Defaults to 10000.","format":"number","default":"10000","name":"PBX_MCP_TIMEOUT_MS"}]}],"tools":[{"name":"asterisk_channels","description":"Every channel currently up on the PBX, with caller ID, state, bridge, duration and","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_cli","description":"Run a command through the Asterisk CLI and return its raw output.","write_action":true,"price_micros":0,"input_schema":null},{"name":"asterisk_dialplan","description":"Dump the dialplan for a context, or for one extension within a context.","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_endpoints","description":"PJSIP endpoints with their device state and how many contacts are registered.","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_extension_create","description":"Create a PJSIP endpoint that a phone registers to (endpoint, aor and auth, prefixed 'mcp-'). This is","write_action":true,"price_micros":0,"input_schema":null},{"name":"asterisk_extension_delete","description":"Delete an extension created by asterisk_extension_create. Only 'mcp-' extensions in the managed file can be deleted.","write_action":true,"price_micros":0,"input_schema":null},{"name":"asterisk_extension_list","description":"List the extensions created by asterisk_extension_create. Passwords are never shown.","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_hangup","description":"Terminate an active channel by name. Get exact channel names from asterisk_channels first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_hangup_preview","description":"Show which live channels a hangup would affect, without touching them. Takes the same","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_originate","description":"Originate a call from a channel to an extension in a context. This places a real call","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_status","description":"Core status of the Asterisk server: version, uptime, active calls and calls processed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"asterisk_trunk_create","description":"Create a PJSIP trunk (endpoint, aor and identify, all prefixed 'mcp-') to a peer that Asterisk","write_action":true,"price_micros":0,"input_schema":null},{"name":"asterisk_trunk_delete","description":"Delete a trunk created by asterisk_trunk_create. Only 'mcp-' trunks in the managed file can be deleted.","write_action":true,"price_micros":0,"input_schema":null},{"name":"asterisk_trunk_list","description":"List the trunks created by asterisk_trunk_create (only 'mcp-' objects in the managed file).","write_action":false,"price_micros":0,"input_schema":null},{"name":"freeswitch_api","description":"Run a command through the FreeSWITCH event socket and return its raw output.","write_action":true,"price_micros":0,"input_schema":null},{"name":"freeswitch_channels","description":"Every call leg currently up on the switch, as returned by 'show channels'.","write_action":false,"price_micros":0,"input_schema":null},{"name":"freeswitch_hangup","description":"Terminate an active call leg by its UUID. Get exact UUIDs from freeswitch_channels first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"freeswitch_hangup_preview","description":"Show which live call legs a hangup would affect, without touching them. Takes the same","write_action":false,"price_micros":0,"input_schema":null},{"name":"freeswitch_originate","description":"Originate a call from a dial string to an extension. This places a real call and costs","write_action":false,"price_micros":0,"input_schema":null},{"name":"freeswitch_registrations","description":"Registered SIP users on a Sofia profile, with contact URI, user agent and expiry.","write_action":false,"price_micros":0,"input_schema":null},{"name":"freeswitch_sofia_status","description":"State of every Sofia SIP profile and gateway, including whether trunks are registered upstream.","write_action":false,"price_micros":0,"input_schema":null},{"name":"freeswitch_status","description":"Core status of the FreeSWITCH server: version, uptime, current and maximum sessions.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-11-04T06:33:51.975Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T06:33:51.833Z","components":{"code":{"score":25,"max":25,"notes":["19 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 9 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"pbx-mcp","version":"0.1.4","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-10-26T07:12:33.378Z","repositoryUrl":"git+https://github.com/ictinnovations/pbx-mcp.git","weeklyDownloads":120}],"repo":{"found":true,"owner":"ictinnovations","repo":"pbx-mcp","archived":false,"pushedAt":"2026-10-26T07:11:40Z","stars":19,"forks":14,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/1324426?v=4","ownerCreatedAt":"2012-01-12T10:49:49Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/1324426?v=4&s=128","source":"registry"},"presence":{"stars":19,"forks":14,"downloadsWeek":120,"license":"MIT","lastPushAt":"2026-10-26T07:11:40.000Z","score":41}}}},"grade_history":[],"reviews":[]}