# pbx-mcp

Подключает ИИ-ассистента к живой АТС на Asterisk или FreeSWITCH: посмотреть каналы, транки и состояние регистрации SIP.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 19
- Автор: ictinnovations
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/ictinnovations/pbx-mcp
- Обновлён: 2026-10-09
- HTML: https://affpapa.org/nevibecode/mcp/pbx-mcp

## Что делает

pbx-mcp ставит перед ассистентом один набор инструментов вместо двух разных командных языков. Asterisk отвечает по AMI, FreeSWITCH — по ESL, и раньше приходилось держать в голове оба словаря. Теперь достаточно спросить, какие абоненты сейчас не в сети, и модель сама вызовет нужную команду на коммутаторе.

Инструментов двенадцать, по шесть на каждый движок, и все они только читают. Четыре инструмента управления вызовом — `asterisk_originate`, `asterisk_hangup`, `freeswitch_originate` и `freeswitch_hangup` — не появятся, пока не выставите `PBX_MCP_ALLOW_WRITE=true`. Отдельно включается провижининг для Asterisk: шесть инструментов для транков и экстеншенов регистрируются через `PBX_MCP_ALLOW_PROVISION`, и без заполненного `PBX_MCP_TRUNK_ALLOW` создание транка отклоняется.

Настройка идёт через переменные окружения. Задаёте блок Asterisk, блок FreeSWITCH или оба — сервер поднимет инструменты только для того, что реально настроено. Нужен Node 18 или новее, есть готовый Docker-образ. В `manager.conf` пользователю AMI хватит `read = system,call,command` и `write = command`; `originate` добавляйте, только если собираетесь включать режим записи.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `ASTERISK_AMI_HOST`, `ASTERISK_AMI_PORT`, `ASTERISK_AMI_USERNAME`, `ASTERISK_AMI_PASSWORD`, `ASTERISK_AMI_TLS`, `FREESWITCH_ESL_HOST`, `FREESWITCH_ESL_PORT`, `FREESWITCH_ESL_PASSWORD`, `PBX_MCP_ALLOW_WRITE`, `PBX_MCP_TIMEOUT_MS` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env ASTERISK_AMI_HOST=<ASTERISK_AMI_HOST> --env ASTERISK_AMI_PORT=<ASTERISK_AMI_PORT> --env ASTERISK_AMI_USERNAME=<ASTERISK_AMI_USERNAME> --env ASTERISK_AMI_PASSWORD=<ASTERISK_AMI_PASSWORD> --env ASTERISK_AMI_TLS=<ASTERISK_AMI_TLS> --transport stdio pbx-mcp -- npx -y pbx-mcp
```
Вместо <…> подставьте свои значения. Ещё 5 переменных окружения — в README сервера

### Codex

**Командой платформы**
```bash
codex mcp add pbx-mcp --env ASTERISK_AMI_HOST=<ASTERISK_AMI_HOST> --env ASTERISK_AMI_PORT=<ASTERISK_AMI_PORT> --env ASTERISK_AMI_USERNAME=<ASTERISK_AMI_USERNAME> --env ASTERISK_AMI_PASSWORD=<ASTERISK_AMI_PASSWORD> --env ASTERISK_AMI_TLS=<ASTERISK_AMI_TLS> -- npx -y pbx-mcp
```
Вместо <…> подставьте свои значения. Ещё 5 переменных окружения — в README сервера

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "pbx-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "pbx-mcp"
            ],
            "env": {
                "ASTERISK_AMI_HOST": "<ASTERISK_AMI_HOST>",
                "ASTERISK_AMI_PORT": "<ASTERISK_AMI_PORT>",
                "ASTERISK_AMI_USERNAME": "<ASTERISK_AMI_USERNAME>",
                "ASTERISK_AMI_PASSWORD": "<ASTERISK_AMI_PASSWORD>",
                "ASTERISK_AMI_TLS": "<ASTERISK_AMI_TLS>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 5 переменных окружения — в README сервера

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "pbx-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "pbx-mcp"
            ],
            "env": {
                "ASTERISK_AMI_HOST": "<ASTERISK_AMI_HOST>",
                "ASTERISK_AMI_PORT": "<ASTERISK_AMI_PORT>",
                "ASTERISK_AMI_USERNAME": "<ASTERISK_AMI_USERNAME>",
                "ASTERISK_AMI_PASSWORD": "<ASTERISK_AMI_PASSWORD>",
                "ASTERISK_AMI_TLS": "<ASTERISK_AMI_TLS>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 5 переменных окружения — в README сервера

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e ASTERISK_AMI_HOST=<ASTERISK_AMI_HOST> -e ASTERISK_AMI_PORT=<ASTERISK_AMI_PORT> -e ASTERISK_AMI_USERNAME=<ASTERISK_AMI_USERNAME> -e ASTERISK_AMI_PASSWORD=<ASTERISK_AMI_PASSWORD> -e ASTERISK_AMI_TLS=<ASTERISK_AMI_TLS> pbx-mcp npx -y pbx-mcp
```
Вместо <…> подставьте свои значения. Ещё 5 переменных окружения — в README сервера

## Когда брать
- посмотреть, какие каналы сейчас активны и кто звонит
- разобраться, почему SIP-транк не регистрируется
- выгрузить диалплан контекста или отдельного экстеншена
- проверить состояние PJSIP-эндпоинтов и число контактов
- выполнить произвольную команду CLI на Asterisk

## Примеры запросов агенту
- Покажи все активные каналы на Asterisk с caller ID и длительностью
- Почему мой SIP-транк не регистрируется? Проверь статус шлюза
- Выгрузи диалплан контекста `from-internal`

## Похожие
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [Oh My Posh Validator](https://affpapa.org/nevibecode/mcp/oh-my-posh-validator.md) — MCP-сервер · ★ 23643
- [Keploy](https://affpapa.org/nevibecode/mcp/keploy.md) — MCP-сервер · ★ 18727
- [Coder](https://affpapa.org/nevibecode/mcp/coder.md) — MCP-сервер · ★ 17160

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
