five9-mcp
☎️ five9-mcp
Ваш контакт-центр Five9 в руках вашего ИИ.
Открытый MCP сервер, который подключает Claude, ChatGPT или любой MCP-клиент к облачному контакт-центру Five9 — работает на Cloudflare Workers с нулевой зависимостью.
Быстрый старт · Подключение Claude · Подключение ChatGPT · Инструменты · Архитектура
Спросите ваш ИИ, например:
"Кто сейчас на звонке и насколько глубока очередь продаж?" 📊 "Создайте превью-кампанию для списка возврата клиентов, прикрепите навык продаж и запустите её." 🛠️ "Остановите кампанию OUTBOUND_AGED и добавьте эти 3 лида в список обратных звонков." 📞 "Заведите нового агента: создайте пользователя, назначьте навык биллинга на уровне 2." 🧑💼 "Есть ли 555-867-5309 в нашем DNC? Проверьте, прежде чем кто-то наберёт его." 🚫 "Вытащите отчёт журнала звонков за вчера и обобщите показатели брошенных вызовов." 📈 "Соберите мне полный IVR: опция 1 — расписание, опция 2 — биллинг, после рабочего времени — на голосовую почту." 🧩
Под капотом этот сервер говорит на SOAP-веб-сервисах Five9 Configuration (администрирование) и Statistics (супервизор) — API, которые до сих пор управляют административной поверхностью Five9, — и предоставляет их как чистые JSON-инструменты через MCP streamable HTTP. Собственноручно написанные конверты, XML-парсер примерно на 60 строк, никаких npm-пакетов. Каждый инструмент был проверен на живом домене Five9.
✨ Встроенный веб-интерфейс
Разверните его, и ваш Worker будет обслуживать не только API:
Страница | Что вы получаете |
| Полированная целевая страница: живой статус сервера, это руководство по настройке, пошаговые инструкции по подключению ИИ и полный каталог инструментов |
| Мастер настройки — введите учётные данные Five9 в браузере, получите их проверку в реальном времени, получите ваш ключ доступа. Без терминала, без секретных команд |
| Интерактивная консоль — вставьте ваш ключ доступа, выберите любой из 77 сгруппированных инструментов, заполните форму, сгенерированную из его схемы, и запустите его на вашем живом домене Five9 прямо из браузера |
| Сам MCP-эндпоинт (streamable HTTP, без состояния) |
| JSON-проверка здоровья |
Консоль — самый быстрый способ проверить учётные данные, изучить, что возвращает каждый инструмент, или отладить кампанию — без участия ИИ.
Related MCP server: five9-mcp
🚀 Быстрый старт — без терминала
Вам нужна бесплатная учётная запись Cloudflare и пользователь Five9 с доступом к API — создайте выделенного API-пользователя Five9 с правами, ограниченными тем, что вы хотите, чтобы ИИ делал, не используйте повторно личный администраторский логин.
1 — Разверните на Cloudflare (один клик, в вашем браузере)
Войдите в Cloudflare и пройдите по шагам — это создаст вашу собственную копию этого Worker (плюс необходимое пространство имён KV) и даст вам URL вида https://five9-mcp.you.workers.dev.
2 — Запустите мастер настройки (в вашем браузере)
Откройте /setup на вашем новом сервере. Введите имя пользователя, пароль и регион Five9 — мастер проверит их в реальном времени против Five9 перед сохранением, затем выдаст вам ключ доступа (показывается один раз — сохраните его в менеджере паролей).
3 — Подключите ваш ИИ (инструкции ниже), затем попросите его «проверить соединение и перечислить мои кампании». 🎉
git clone https://github.com/ryanshatz/five9-mcp
cd five9-mcp
npx wrangler deploy # provisions the CONFIG KV namespace on first deployЗатем либо используйте мастер /setup, либо пропустите его и управляйте учётными данными как секретами Wrangler (секреты переопределяют мастер):
npx wrangler secret put FIVE9_USERNAME # e.g. apiuser@yourdomain
npx wrangler secret put FIVE9_PASSWORD
npx wrangler secret put MCP_AUTH_TOKEN # a long random string — this is the key to your serverЗначения по умолчанию находятся в wrangler.toml и работают для доменов США:
Var | Default | Notes |
|
| ЕС: |
|
| Версия WSDL Config Web Services |
|
| Версия WSDL Statistics Web Services |
🔌 Подключите ваш ИИ
Подключение Claude (веб и десктоп)
Пользовательские коннекторы доступны на тарифах Free (один коннектор), Pro, Max, Team и Enterprise.
В claude.ai или в десктопном приложении Claude откройте Настройки → Коннекторы.
Нажмите Добавить пользовательский коннектор.
Назовите его Five9 и вставьте URL вашего сервера включая путь
/mcp:https://<your-worker>.workers.dev/mcpНажмите Добавить, затем Подключить. Claude автоматически обнаружит встроенный OAuth этого сервера и откроет его страницу авторизации.
На экране 🔐 five9-mcp вставьте ваш
MCP_AUTH_TOKENв качестве ключа доступа и нажмите Авторизовать.В любом чате откройте меню поиск и инструменты (+) и убедитесь, что коннектор Five9 включён.
Team/Enterprise: владелец сначала добавляет коннектор в Настройки организации → Коннекторы; затем участники нажимают Подключить в своих собственных настройках для авторизации.
Подключение ChatGPT
Пользовательские MCP-коннекторы требуют режима разработчика (Plus/Pro; на Business/Enterprise администратор должен разрешить пользовательские коннекторы).
В ChatGPT в веб-версии откройте Настройки → Приложения и коннекторы (иногда просто Коннекторы).
В разделе Дополнительные настройки включите режим разработчика.
Вернитесь на страницу коннекторов и нажмите Создать.
Назовите его Five9, установите URL MCP-сервера на
https://<your-worker>.workers.dev/mcpи выберите аутентификацию OAuth.Подтвердите запрос доверия и сохраните. ChatGPT откроет страницу авторизации этого сервера — вставьте ваш
MCP_AUTH_TOKENи нажмите Авторизовать.В новом чате откройте меню + / инструменты и включите коннектор Five9 (коннекторы режима разработчика включаются для каждого разговора). ChatGPT просит подтверждать каждый вызов инструмента — разумно для всего, что может запустить дозвон. 😄
Подключение Claude Code
claude mcp add --transport http five9 https://<your-worker>.workers.dev/mcp \
--header "Authorization: Bearer <your MCP_AUTH_TOKEN>"Сырой ключ доступа работает напрямую как bearer-токен — без танцев с OAuth. Запустите /mcp внутри Claude Code для проверки.
Любой другой MCP-клиент
Всё, что говорит на MCP streamable HTTP, работает — пройдите поток OAuth или отправьте ключ доступа как bearer-токен:
curl -X POST https://<your-worker>.workers.dev/mcp \
-H "Authorization: Bearer <MCP_AUTH_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_connection","arguments":{}}}'src/oauth.js реализует минимальный сервер авторизации OAuth 2.1 (обнаружение метаданных, динамическая регистрация клиентов, PKCE S256, refresh-токены), предназначенный для развёртывания с одним оператором:
«Логин» на экране согласия — это ключ доступа сервера (
MCP_AUTH_TOKEN).Всё не имеет состояния — идентификаторы клиентов, коды авторизации и токены — это подписанные HMAC-SHA256 блобы, ключом для которых служит
MCP_AUTH_TOKEN. Никакого KV, никаких Durable Objects.Оба пути аутентификации работают одновременно: токены, выпущенные через OAuth, и сырой ключ как bearer-учётные данные.
Отзовите всё сразу, ротируя секрет:
npx wrangler secret put MCP_AUTH_TOKEN.
🧰 Инструментарий
77 инструментов. 🟢 = чтение (всегда безопасно) · ✏️ = запись (изменяет ваш домен — сервер сообщает ИИ, что сначала нужно подтвердить у вас)
69 SOAP-инструментов (имя пользователя/пароль) + 8 REST-инструментов OAuth New Platform (Consumer Key/Secret — см. OAuth New Platform APIs).
Главный трюк: опишите сценарий звонка в абзаце, и ИИ спроектирует его, покажет вам диаграмму Mermaid в чате и развернёт работающий IVR-скрипт. Модель никогда не импровизирует с XML IVR Five9: она заполняет ограниченную JSON-спецификацию потока (play / menu / business-hours / skill transfer / voicemail / hangup), валидатор графа проверяет каждую ветвь и ссылку, а детерминированный код генерирует XML в форме дизайнера (соединение модулей, кодирование подсказок и порядок полей — всё получено из реальных экспортированных скриптов).
Tool | Что делает | |
🟢 |
| Проверка графа спецификации потока + проверка, что указанные навыки/подсказки существуют на домене |
🟢 |
| Отрисовка спецификации потока или существующего IVR-скрипта в виде блок-схемы Mermaid |
✏️ |
| Составление полного XML скрипта и его создание на домене ( |
✏️ |
| Озвучивание подсказки современным ИИ-голосом и загрузка как WAV G.711 u-law, готового для Five9. Ключ API не нужен: работает на Workers AI (Deepgram Aura, ~40 голосов), встроенном в ваш Worker |
Рекомендуемый поток: validate → render (покажите человеку!) → generate prompts → build → прикрепите к входящей кампании. generate_prompt_audio работает на Cloudflare Workers AI из коробки: без внешнего TTS-аккаунта, без ключа API, доли цента за подсказку списываются с учётной записи Cloudflare, на которую вы уже развернули. ElevenLabs/OpenAI тоже работают, если задать их ключевые секреты, а подсказки {tts} (встроенный роботизированный голос Five9) не требуют ничего вообще.
Tool | Что делает | |
🟢 |
| Контекст оператора для ИИ — кто управляет этим сервером и основные правила |
🟢 |
| Проверка, работают ли учётные данные Five9; возвращает количество видимых навыков |
🟢 |
| Текущие счётчики использования API Five9 по сравнению с лимитами |
Инструмент | Что делает | |
🟢 |
| Список кампаний (имя, тип, состояние, режим) |
🟢 |
| Состояние + прикреплённые списки + DNIS одним вызовом |
🟢 |
| ПОЛНАЯ конфигурация кампании (режим дозвона, коэффициенты, запись, wrap-up…) |
✏️ |
| Создание исходящих или входящих кампаний, BASIC или ADVANCED |
✏️ |
| Изменение любого параметра кампании — чтение-изменение-запись, передавайте только изменения |
✏️ |
| Переименование кампании |
✏️ |
| Удаление кампании |
✏️ |
| start / stop / force_stop / reset / reset_list_positions |
✏️ |
| Прикрепление/открепление списков дозвона с приоритетом |
✏️ |
| Добавление/удаление навыков маршрутизации в кампании |
✏️ |
| Прикрепление/открепление входящих номеров |
✏️ |
| Добавление/удаление результатов (dispositions) оператора в кампании |
🟢 |
| Список профилей кампании (ANI, попытки, таймауты) |
✏️ |
| Создание / изменение / удаление профилей кампании |
✏️ |
| Чтение / изменение критериев отбора CRM-записей профиля и порядка дозвона |
Инструмент | Что делает | |
🟢 |
| Список списков дозвона + количество записей |
✏️ |
| Создание или удаление списка дозвона |
✏️ |
| Добавление лида в список (асинхронный импорт) |
✏️ |
| Массовое добавление множества лидов одним асинхронным импортом (настраиваемые режимы CRM/списка) |
✏️ |
| Удаление совпадающих записей из списка |
🟢 |
| Результат асинхронного импорта списка/CRM |
Инструмент | Что делает | |
🟢 |
| Поиск контактов по точным значениям полей |
✏️ |
| Обновление контакта (по умолчанию — только при единственном совпадении) |
✏️ |
| Обновление множества CRM-контактов одним асинхронным импортом (опрос с типом "crm") |
✏️ |
| Удаление контакта (только если совпадает ровно один) |
🟢 |
| Схема полей контактов домена |
✏️ |
| Создание / изменение / удаление пользовательских CRM-полей |
Инструмент | Что делает | |
✏️ |
| Проверка / добавление / удаление номеров в списке DNC домена |
🟢 |
| Правила дозвона домена (ограничения по времени/штатам) |
Инструмент | Что делает | |
🟢 |
| Список пользователей с общей информацией |
🟢 |
| Полная запись одного пользователя: роли, навыки, группы |
✏️ |
| Создание пользователя с ролями, навыками и группами |
✏️ |
| Изменение информации пользователя — передавайте только изменения |
✏️ |
| Удаление пользователя |
🟢 |
| Шаблоны ролей/прав |
🟢 |
| Навыки — с назначенными пользователями или без них |
✏️ |
| Создание / изменение / удаление навыков |
✏️ |
| Назначение навыков пользователям, установка уровней |
✏️ |
| Выдача / отзыв ролей (agent, admin, supervisor, reporting, crmManager) с вкладками разрешений |
🟢 |
| Группы операторов + участники |
✏️ |
| Создание / удаление групп, добавление/удаление операторов |
✏️ |
| Коды причин Not Ready / Logout |
Инструмент | Что делает | |
🟢 |
| Результаты звонков (dispositions) и их настройки |
✏️ |
| Создание / изменение / переименование / удаление результатов (dispositions) (вкл. таймеры повторного дозвона) |
🟢 |
| IVR-скрипты — метаданные или полный XML одного скрипта |
✏️ |
| Создание / изменение / удаление IVR-скриптов (передача полного xmlDefinition) |
🟢 |
| Голосовые промпты домена |
✏️ |
| Создание / изменение / удаление промптов text-to-speech |
✏️ |
| Создание / изменение / удаление заранее записанных WAV-промптов (base64; G.711 µ-law 8kHz моно) |
🟢 |
| Выделенные входящие номера (опционально только неназначенные) |
🟢 |
| Переменные вызова и группы переменных |
✏️ |
| Создание / удаление пользовательских переменных вызова |
🟢 |
| Интеграции веб-коннекторов |
✏️ |
| Создание / удаление веб-коннекторов (URL-попы, запускаемые операторами) |
✏️ |
| Просмотр / создание / удаление кодов быстрого набора |
🟢 |
| Настройки VCC на уровне домена |
Инструмент | Что делает | |
🟢 |
| Запуск любого отчёта по папке + имени, опциональный временной диапазон |
🟢 |
| Опрос и получение CSV-вывода отчёта |
🟢 |
| AgentState, ACDStatus, CampaignState, статистика кампаний (вкл. представления dialer-manager и autodial) |
Эти инструменты работают с современными OAuth 2.0 "New Platform" REST APIs Five9, а не с SOAP API, которые используют инструменты выше. Для них требуются учётные данные API Access Control (Consumer Key/Secret), а не имя пользователя/пароль SOAP — см. OAuth New Platform APIs.
Инструмент | Что делает | |
🟢 |
| Проверка OAuth-учётных данных — получение bearer-токена (без данных домена) |
🟢✏️ |
| Универсальный аутентифицированный вызов любого эндпоинта New Platform (метод + путь + тело) с поддержкой rate-limit/backoff и ETag |
🟢✏️ |
| Circles — список / получение / создание / удаление (аналога в SOAP нет) |
🟢 |
| Голосовые промпты через New Platform prompts API (с пагинацией) |
🟢 |
Ключ доступа (Consumer Key) и секретный ключ (Consumer Secret) API Access Control, созданные в Admin Console → API Access Control Five9 (функция контролируемой доступности). Для создания требуется разрешение
security → applications → Create applications, а учетная запись должна быть перенесена в Five9 Identity Service (пользователи с устаревшими ролями API/Agent/Supervisor исключаются из переноса до удаления этих ролей).Настройте их как переменные окружения/секреты (отдельно от учетных данных SOAP):
FIVE9_CONSUMER_KEY=... # "All APIs access" family credential (default)
FIVE9_CONSUMER_SECRET=...
FIVE9_DOMAIN_ID=131109 # your Admin Console domain id
FIVE9_REST_REGION=US # US | US-ALPHA | CA | EU | IN | UK
# or pin the base URL directly: FIVE9_REST_BASE_URL=https://api.prod.us.five9.net
# Optional second credential for the "Data Tables access" family (its own key):
FIVE9_DT_CONSUMER_KEY=...
FIVE9_DT_CONSUMER_SECRET=...Затем выполните rest_check_connection, чтобы подтвердить поток токенов. Область доступа каждого учетного данными определяется его семейством API + областями — all-apis-access не предоставляет буквально доступ ко всем сервисам, а доступ на запись предоставляется отдельно для каждого сервиса.
Несколько учетных данных / семейств. Каждые учетные данные API Access Control принадлежат одному семейству (сопоставленному с API-продуктом Apigee), и это семейство определяет, какие сервисы может вызывать ключ. Сервер поддерживает именованные учетные данные: default (из FIVE9_CONSUMER_KEY/SECRET) плюс data-tables (из FIVE9_DT_CONSUMER_KEY/SECRET). Инструменты Data Tables автоматически используют учетные данные data-tables; rest_call и rest_check_connection принимают аргумент credential для выбора конкретных учетных данных.
Примечание: В документации Five9 указана конечная точка токена
/v1/auth/token, но реальная рабочая конечная точка —/oauth2/v1/token(именно ее использует этот клиент).
🎨 Настройка контекста оператора
Файл src/about.js содержит текст, который передается подключенным ИИ через поле instructions MCP и инструмент about: кто управляет сервером, зачем он нужен и как ИИ должен себя вести (например, «подтверждайте перед выполнением действий записи»). Отредактируйте его под свое развертывание — в комплекте поставляется текст от имени исходного оператора в качестве примера.
🏗️ Архитектура
Без этапа сборки, без зависимостей — обычные JS-модули в src/:
src/
├── index.js # router, CORS, MCP JSON-RPC handler, /setup endpoint
├── five9.js # SOAP client: envelope builder, ~60-line XML parser, one method per Five9 op
├── tools.js # MCP tool definitions (JSON Schema) + dispatch
├── oauth.js # stateless OAuth 2.1 server (single-operator model)
├── config.js # config resolution: Wrangler secrets > KV (setup wizard)
├── ui.js # landing page, setup wizard, interactive console
└── about.js # operator context — edit this for your deploymentЗапросы не сохраняют состояние: каждый вызов MCP открывает новый SOAP-обмен с Five9 с HTTP Basic-аутентификацией. Statistics API дополнительно требует вызова setSessionParameters, который get_realtime_stats выполняет при каждом обращении.
Конечные точки Five9 генерируются с помощью JAXB и проверяют порядок дочерних элементов в соответствии с последовательностью WSDL. Если вы расширяете этот сервер, загрузите WSDL (
https://api.five9.com/wsadmin/v13/AdminWebService?wsdl, HTTP Basic-аутентификация) и точно соблюдайте порядок<xs:sequence>— включая базовые типы вродеbasicImportSettings, чьи элементы идут до элементов расширения.addToListCsvтребуетcleanListBeforeUpdate,crmAddMode,crmUpdateModeиlistAddMode, даже если в WSDL большинство из них помечены какminOccurs="0".Импорт списков/CRM — асинхронный: вызов немедленно возвращает идентификатор импорта; опрашивайте
get_import_resultдля получения результата.Значения полей контакта возвращаются в обертке (
<values><data>…</data></values>); некоторые ответы возвращают один объект там, где вы ожидали бы массив из одного элемента.toArray()вfive9.jsнормализует это.В критериях отчетов порядок элементов:
<end>перед<start>(согласно алфавитному порядку JAXB).xmlDefinitionIVR — это формат визуального редактора: модули связываются по GUID (ascendants/singleDescendant/branches), встроенный текст TTS хранится как документыspeakElementв gzip+base64, а проверки рабочих часов сравнивают системные переменные__DAY__(SUN=1..SAT=7) и__TIME__(минуты с полуночи).ivr.jsинкапсулирует все это.getPromptsне возвращает идентификаторы подсказок (только имя + тип). Ссылки на файловые подсказки внутри XML IVR принимаются сid 0+ имя подсказки и нормализуются на сервере; отправленный скрипт возвращается с добавленнымdomainId, проставленным сервером.
🛡️ Безопасность
Учетные данные Five9 хранятся только в вашем аккаунте Cloudflare — как секреты Worker, или (в мастере настройки) в namespace Workers KV, зашифрованные в состоянии покоя. Ни один инструмент никогда не возвращает их, а секреты Wrangler всегда имеют приоритет над KV.
Мастер настройки открыт только на свежем, не настроенном сервере — запустите его сразу после развертывания. После настройки любое изменение требует текущий ключ доступа, а серверы, управляемые через переменные окружения, полностью отказываются от изменений через мастер.
Всегда завершайте настройку (или установите
MCP_AUTH_TOKEN). Не настроенный сервер без ключа доступа работает в открытом режиме — любой, кто найдет URL, сможет управлять вашим контакт-центром.Инструменты записи (✏️ выше) изменяют ваш домен. Ограничьте роль API-пользователя Five9 только тем, что вы действительно хотите позволить ИИ делать — разрешения Five9 являются настоящей границей безопасности.
manage_dnc removeиdelete_listзаслуживают особой осторожности; инструкцииaboutпредписывают ИИ подтверждать их использование.Консоль хранит ваш ключ доступа только в localStorage браузера, а вызовы идут на ваш собственный Worker с тем же источником (same-origin).
💻 Разработка
npm run dev # wrangler dev on http://localhost:8787
npm run deploy # wrangler deployПоместите локальные секреты в .dev.vars (файл исключен из git):
FIVE9_USERNAME=apiuser@yourdomain
FIVE9_PASSWORD=...
MCP_AUTH_TOKEN=dev-local-token
# Optional — external AI voice providers for generate_prompt_audio.
# The default (Workers AI / Deepgram Aura) needs no key at all.
ELEVENLABS_API_KEY=...
OPENAI_API_KEY=...
# Optional — OAuth New Platform REST tools (separate credential; see below)
FIVE9_CONSUMER_KEY=...
FIVE9_CONSUMER_SECRET=...
FIVE9_DOMAIN_ID=131109
FIVE9_REST_REGION=US
FIVE9_DT_CONSUMER_KEY=... # optional: "Data Tables access" family
FIVE9_DT_CONSUMER_SECRET=...Затем откройте http://localhost:8787/console, вставьте dev-local-token и выполняйте инструменты против вашего домена — или проверяйте из командной строки с помощью приведенного выше фрагмента curl.
🤝 Вклад
Pull request'ы приветствуются! Config API Five9 насчитывает ~180 операций, а этот сервер оборачивает 69 наиболее полезных — паттерн в five9.js + tools.js легко расширить (сначала прочтите заметки о SOAP, чтобы не воевать с WSDL). Пожалуйста, сохраняйте ограничение на отсутствие зависимостей.
📄 Лицензия
MIT · автор — Ryan Shatzkamer
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server that connects AI assistants to Five9 contact center, allowing management of campaigns, agents, lists, and statistics via natural language commands.6MIT
- AlicenseNot gradedqualityCmaintenanceMCP server connecting AI assistants to the Five9 contact center, enabling management of campaigns, agents, IVR flows, and reports via natural language.MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that connects AI assistants to Five9 cloud contact center, enabling management of campaigns, agents, IVR flows, and reports through natural language.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that connects AI assistants to Five9 cloud contact center, exposing 77 tools for configuration, statistics, IVR building, and campaign management via Cloudflare Workers with zero dependencies.MIT
Related MCP Connectors
Official MCP server for OmniDimension. Drive voice agents, dispatch calls, and run bulk campaigns.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
Connect e-commerce and marketing data to AI assistants via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ALP-Dev1710/five9-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server