Skip to main content
Glama

☎️ five9-mcp

Ваш контакт-центр Five9 — в руках вашего ИИ.

Открытый MCP сервер, который подключает Claude, ChatGPT или любой MCP-клиент к облачному контакт-центру Five9 — работает на Cloudflare Workers с нулём зависимостей.

License: MIT Runtime Dependencies MCP Tools

Быстрый старт · Подключить Claude · Подключить ChatGPT · Инструменты · Архитектура


Спросите свой ИИ о чём-нибудь вроде:

"Кто сейчас на звонке и насколько глубока очередь продаж?" 📊 "Создай превью-кампанию для списка возврата клиентов (win-back), привяжи навык продаж и запусти её." 🛠️ "Останови кампанию OUTBOUND_AGED и добавь этих 3 лидов в список обратных звонков." 📞 "Настрой нового агента: создай пользователя, назначь навык биллинга на уровне 2." 🧑💼 "Есть ли 555-867-5309 в нашем DNC? Проверь, прежде чем кто-то наберёт этот номер." 🚫 "Вытащи вчерашний отчёт Call Log и сведи долю брошенных вызовов." 📈 "Собери мне полный IVR: опция 1 — расписание, опция 2 — биллинг, в нерабочее время — на голосовую почту." 🧩

Под капотом этот сервер общается с Five's Configuration (admin) и Statistics (supervisor) SOAP Web Services — теми же API, на которых держится административный интерфейс Five9, — и отдаёт их в виде аккуратных JSON-инструментов через MCP streamable HTTP. Обёртки написаны вручную, XML-парсер на ~60 строк, ни одной npm-зависимости. Каждый инструмент был проверен на живом домене Five9.

✨ Встроенный веб-интерфейс

Разверните его — и ваш Worker отдаёт больше, чем просто API:

Страница

Что он даёт

/

Ухоженная целевая страница: статус сервера в реальном времени, гайд по настройке, пошаговые инструкции по подключению ИИ и полный каталог инструментов

/setup

Мастер настройки — введите учётные данные Five9 в браузере, получите их живую проверку, затем ключ доступа. Никакого терминала и никаких команд для секретов

/console

Интерактивная консоль — вставьте свой ключ доступа, выберите любой из 77 сгруппированных инструментов, заполните форму, сгенерированную по его схеме, и выполните его на живом домене Five9 прямо из браузера

/mcp

Сам endpoint MCP (streamable HTTP, без сохранения состояния)

/health

JSON healthcheck

Консоль — самый быстрый способ проверить учётные данные, посмотреть, что возвращает каждый инструмент, или отладить кампанию — без участия ИИ.

Related MCP server: five9-mcp

🚀 Быстрый старт — терминал не нужен

Вам нужна бесплатная учётка Cloudflare и пользователь Five9 с доступом к API — создайте отдельного пользователя Five9 API с правами только для того, что должны делать ИИ. Не используйте личный администраторский логин.

1 — Разверните в Cloudflare (один клик, прямо в браузере)

Deploy to Cloudflare

Войдите в Cloudflare и пройдите по шагам — создастся ваша собственная копия этого Worker (а также необходимое пространство KV) и даст URL вида https://five9-mcp.you.workers.dev.

2 — Запустите мастер настройки (в браузере)

Откройте /setup на вашем новом сервере. Введите имя пользователя, пароль и регион 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 secrets (секреты имеют приоритет над мастером):

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

Описание

FIVE9_API_HOST

api.five9.com

ЕС: api.eu.five9.com · Канада: api.ca.five9.com

FIVE9_ADMIN_VERSION

v13

Версия WSDL Config Web Services

FIVE9_SUPERVISOR_VERSION

v13

Версия WSDL Statistics Web Services

🔌 Подключение ИИ

Подключение Claude (веб и десктоп)

Пользовательские коннекторы доступны на тарифах Free (один коннектор), Pro, Max, Team и Enterprise.

  1. В claude.ai или в настольном приложении Claude откройте Settings → Connectors.

  2. Нажмите Add custom connector.

  3. Назовите его Five9 и вставьте URL вашего сервера с путём /mcp: https://<your-worker>.workers.dev/mcp

  4. Нажмите Add, затем Connect. Claude автоматически обнаружит встроенный OAuth этого сервера и откроет его страницу авторизации.

  5. На экране 🔐 five9-mcp вставьте ваш MCP_AUTH_TOKEN как ключ доступа и нажмите Authorize.

  6. В любом чате откройте меню search & tools (+) и убедитесь, что коннектор Five9 включён.

Team/Enterprise: владелец должен сначала добавить коннектор в Organization settings → Connectors; затем участники нажимают Connect в своих настройках, чтобы авторизоваться.

Подключение ChatGPT

Для пользовательских MCP-коннекторов нужен Developer mode (тарифы Plus/Pro; на Business/Enterprise администратор должен разрешить кастомные коннекторы).

  1. В вебе ChatGPT откройте Settings → Apps & Connectors (иногда — просто Connectors).

  2. В Advanced settings включите Developer mode (переключатель).

  3. Вернитесь на страницу Connectors и нажмите Create.

  4. Назовите его Five9, укажите MCP server URL https://<your-worker>.workers.dev/mcp и выберите аутентификацию OAuth.

  5. Подтвердите сообщение о доверии и сохраните. ChatGPT откроет страницу авторизации этого сервера — вставьте ваш MCP_AUTH_TOKEN и нажмите Authorize.

  6. В новом чате откройте меню + / инструменты и включите коннектор Five9 (коннекторы из Developer mode включаются для каждого диалога). 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 и raw-ключ как bearer-credential.

  • Можно отозвать всё сразу, перевыпустив секрет: npx wrangler secret put MCP_AUTH_TOKEN.

🧰 Набор инструментов

77 инструментов. 🟢 = чтение (всегда безопасно) · ✏️ = запись (изменяет ваш единство — а сервер требует от ИИ подтверждения у вас)

(69 SOAP-инструментов (username/password) + 8 REST-инструментов OAuth New Platform (Consumer Key/Secret — см. OAuth New Platform APIs).

Главная фишка: описываете звонок одним абзацем, а ИИ проектирует его, показывает Mermaid-диаграмму в чате и разворачивает рабочий IVR-скрипт. Модель не импровизирует с FourNine-XML: она заполняет ограниченную JSON-схему потока (play / menu / business-hours / skill transfer / voicemail / hangup), граф-валидатор проверяет все ветки и ссылки, а детерминированный код генерирует XML в формате дизайнера (связки модулей, кодирование промптов нижевыведения порядок полей взяты из реальных экспортированных скриптов).

Инструмент

Что делает

🟢

validate_ivr_flow

Проверка графа flow-спеки + проверка, что упомянутые навыки и промпты существуют в домене

🟢

render_ivr_flow

Рендер flow-спеки или существующего IVR-скрипта в виде Mermaid-блок-схемы

✏️

build_ivr_script

Составляет полный XML-скрипт и создаёт его в домене (dry_run — чтобы сперва инспектировать)

✏️

generate_prompt_audio

Озвучивает промпт современным AI-голосом и выгружает пятизначно-ready WAV в G.711 u-law. Ключ API не нужен: работает на Workers AI (Deepgram Aura, ~40 голосов) прямо в вашем Worker

Рекомендуемый пайплайн: validate → render (показать человеку!) → generate prompts → build → attached к входящей кампании. generate_prompt_audio работает на Cloudflare Workers AI по стойке: внешний TTS-аккаунт не нужен, API-ключ не нужен, доли цента за промпт списываются на ваш уже развёрнутый аккаунт Cloudflare. ElevenLabs/OpenAI тоже работают, если задать их ключи через селеты, а `{tts}......"/> (встроенный робоголос Five9) вообще не требует ничего.

Инструмент

Что делает

🟢

about

Операторный контекст для ИИ — кто управляет этим сервером и его базовые правила.

🟢

check_connection

Проверка, что учётные данные Five9 работают; возвращает число видимых навыков.

🟢

get_api_usage

Текущие счётчики использованное API против лимитов.

Инструмент

Что делает

🟢

list_campaigns

Список кампаний (название, тип, состояние, режим)

🟢

inspect_campaign

Состояние + подключённые списки + DNIS одним вызовом

🟢

get_campaign_details

ПОЛНАЯ конфигурация кампании (режим набора, соотношения, запись, wrap-up…)

✏️

create_campaign

Создание исходящих или входящих кампаний, BASIC или ADVANCED

✏️

modify_campaign

Редактирование любого параметра кампании — read-modify-write, передавайте только изменения

✏️

rename_campaign

Переименование кампании

✏️

delete_campaign

Удаление кампании

✏️

control_campaign

start / stop / force_stop / reset / reset_list_positions

✏️

manage_campaign_lists

Подключение/отключение списков обзвона с приоритетом

✏️

manage_campaign_skills

Добавление/удаление навыков маршрутизации в кампании

✏️

manage_campaign_dnis

Подключение/отключение входящих номеров

✏️

manage_campaign_dispositions

Добавление/удаление кодов завершения (dispositions) агента в кампании

🟢

list_campaign_profiles

Список профилей кампании (ANI, попытки, таймауты)

✏️

manage_campaign_profile

Создание / изменение / удаление профилей кампании

✏️

manage_campaign_profile_filter

Просмотр / редактирование критериев отбора записей CRM и порядка набора профиля

Инструмент

Что делает

🟢

list_dialing_lists

Список списков обзвона и количество записей

✏️

create_list / delete_list

Создание или удаление списка обзвона

✏️

add_record_to_list

Добавление лида в список (асинхронный импорт)

✏️

add_records_to_list

Массовое добавление многих лидов одним асинхронным импортом (настраиваемые режимы CRM/списка)

✏️

delete_record_from_list

Удаление подходящих записей из списка

🟢

get_import_result

Результат асинхронного импорта списка/CRM

Инструмент

Что делает

🟢

search_contacts

Поиск контактов по точным значениям полей

✏️

update_contact

Обновление контакта (по умолчанию безопасность при единственном совпадении)

✏️

bulk_update_contacts

Массовое обновление многих CRM-контактов в одном асинхронном импорте (опрос с типом "crm")

✏️

delete_contact

Удаление контакта (только если совпадает ровно один)

🟢

list_contact_fields

Схема полей контакта домена

✏️

manage_contact_field

Создание / изменение / удаление пользовательских полей CRM

Инструмент

Что делает

✏️

manage_dnc

Проверка / добавление / удаление номеров из списка DNC домена

🟢

get_dialing_rules

Правила набора домена (ограничения по времени и штатам)

Инструмент

Что делает

🟢

list_users

Список пользователей с общей информацией

🟢

get_user_details

Полная запись одного пользователя: роли, навыки, группы

✏️

create_user

Создание пользователя с ролями, навыками и группами

✏️

modify_user

Редактирование данных пользователя — передавайте только изменения

✏️

delete_user

Удаление пользователя

🟢

list_user_profiles

Шаблоны ролей и прав

🟢

list_skills / get_skill_details

Навыки, с закреплёнными пользователями или без

✏️

manage_skill

Создание / изменение / удаление навыков

✏️

manage_user_skills

Назначение навыков пользователям, задание уровней

✏️

set_user_roles

Выдача / отзыв ролей (agent, admin, supervisor, reporting, crmManager) с вкладками прав

🟢

list_agent_groups

Группы агентов и участники

✏️

manage_agent_group

Создание / удаление групп, добавление/удаление агентов

✏️

manage_reason_code

Коды причин Not Ready / Logout

Инструмент

Что делает

🟢

list_dispositions

Коды завершения вызовов (dispositions) и их настройки

✏️

manage_disposition

Создание / изменение / переименование / удаление dispositions (вкл. таймеры повторного набора)

🟢

list_ivr_scripts / get_ivr_script

IVR-скрипты — метаданные или полный XML скрипта

✏️

manage_ivr_script

Создание / изменение / удаление IVR-скриптов (отправка полного xmlDefinition)

🟢

list_prompts

Голосовые подсказки в домене

✏️

manage_tts_prompt

Создание / изменение / удаление text-to-speech подсказок

✏️

manage_wav_prompt

Создание / изменение / удаление предзаписанных WAV-подсказок (base64; G.711 µ-law 8kHz mono)

🟢

list_dnis

Выделенные входящие номера (опционально только для нераспределённых)

🟢

list_call_variables

Переменные вызова и группы переменных

✏️

manage_call_variable

Создание / удаление пользовательских переменных вызова

🟢

list_web_connectors

Интеграции веб-коннекторов

✏️

manage_web_connector

Создание / удаление веб-коннекторов (URL-попапы, инициируемые агентами)

✏️

manage_speed_dial

Список / создание / удаление кодов быстрого набора

🟢

get_vcc_configuration

Настройки VCC на уровне домена

Инструмент

Что делает

🟢

run_report

Запуск любого отчёта по папке и имени, опционально диапазон времени

🟢

get_report_result

Получение CSV-вывода отчёта (поллинг)

🟢

get_realtime_stats

AgentState, ACDStatus, CampaignState, статистика кампаний (вкл. dialer-manager и autodial представления)

Эти инструменты работают с современным REST API OAuth 2.0 New Platform от Five9, а не с SOAP API, которые используют инструменты выше. Для них необходимы учётные данные API Access (Consumer Key/Secret), а не имя пользователя и пароль SOAP — см. OAuth New Platform APIs.

Инструмент

Что делает

🟢

rest_check_connection

Проверка OAuth-учётных данных — получение bearer-токена (без домена)

🟢✏️

rest_call

Универсальный авторизованный вызов к любой конечной точки New Platform (метод + путь + тело), с ограничением/backoff и поддержкой ETag

🟢✏️

manage_circle

Circles — список / получение / создание / удаление (аналога в SOAP нет)

🟢

list_np_prompts

Голосовые подсказки через API New Platform (с пагинацией)

🟢

list_interaction_dispositions

Коды результата через API interactions (длябогаче, чем SOAP-список; только чтение)

🟢

get_domain_info

Метаданные домена (id, name, tenant, конечные точки сервисов)

🟢

list_data_tables

Таблицы данных (структурированные справочные таблицы; аналога в SOAP нет) — используют отдельный credential data-tables

🟢

get_data_table_rows

Строки данных по id (с пагинацией)

🔐 OAuth New Platform APIs

Наряду с SOAP-инструментами, сервер может вызывать более новые REST API OAuth 2.0 New Platform от Five9 (например, Circles, interactions, prompts, domain metadata). Для них требуются другие учётные данные, нежели username/password для SOAP:

  • API Access Control 的 Consumer Key 和 Consumer Secret,在 Five9 Admin Console → API Access Control 中生成(这是一个受控可用性功能)。生成一份需要 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 凭据都属于一个 系列(映射到一个 Apigee API 产品),该系列决定密钥可以调用哪些服务。服务器支持 命名凭据: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 保存着通过 MCP instructions 字段和 about 工具提供给已连接 AI 的文本:谁操作这个服务器、它为什么存在,以及 AI 应该如何表现(例如 “执行写操作前先确认”)。请编辑它来描述你自己的部署方式——它默认附带了原始操作者的上下文作为示例。

🏗️ 架构

无需构建步骤,也无需外部依赖——只有位于 src/ 的纯 JS 模块:

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 调用都会通过 HTTP Basic 认证开启一次全新的 Five9 SOAP 交换。Statistics API 还额外要求调用 setSessionParameters,get_realtime_stats 会在每次调用时执行此操作。

  • Five9 的端点由 JAXB 生成,并会校验子元素的顺序和 WSDL 的顺序一致。如果你要扩展这个服务器,请先拉取 WSDL(https://api.five9.com/wsadmin/v13/AdminWebService?wsdl,使用 HTTP Basic 认证),并严格匹配 <xs:sequence> 的顺序——包括 basicImportSettings 这样的基础类型,它们的元素位于扩展类型的元素之前。

  • addToListCsv 尽管 WSDL 将其中大部分字段标记为 minOccurs="0",仍要求提供 cleanListBeforeUpdate、crmAddMode、crmUpdateMode 和 listAddMode。

  • List/CRM 导入是异步的:调用会立即返回一个导入标识符;请通过轮询 get_import_result 获取结果。

  • 联系人记录值返回时会被包裹(<values><data>…</data></values>);有些响应会返回单个对象,而你可能预期是一个纯元素的数组。five9.js 中的 toArray() 会对此进行归一化。

  • 报告时间条件的顺序是 <end> 在 <start> 之前(JAXB 按字母序排列)。

  • IVR 的 xmlDefinition 是可视化设计器的持久化格式:模块通过 GUID(ascendants / singleDescendant / branches)连接,内联 TTS 文本存储为gzip+base64 编码的 speakElement 文档,工作时间检查会比较 __DAY__(SUN=1..SAT=7)和 __TIME__(自午夜以来的分钟数)系统变量。ivr.js 封装了所有这些。

  • getPrompts 返回的信息(有名称和类型都没有);IVR XML 中的文件提示引用可接受 id 0 + 提示名称,并在服务端被归一化;推送的脚本会附上服务器加盖的 domainId 进行往返。

🛡️ 安全

  • Five9 凭据只存在于你的 Cloudflare 账号中——作为 Worker 机密,或(向导方式)存放在 Workers KV 命名空间中,加密存储。没有任何工具会把它们返回,而且 Wrangler 的机密始终会覆盖 KV 中的值。

  • 设置向导只在一个全新、未配置的服务器上开放——部署后立即运行它。一旦配置完成,任何更改都需要当前访问密钥,并且通过环境变量管理的服务器会完全拒绝向导的更改。

  • 始终完成设置(或设置 MCP_AUTH_TOKEN)。 未配置且没有访问密钥的服务器是开放的——任何找到该 URL 的人都能控制你的联络中心。

  • 写操作工具(上面标有 ✏️)会修改你的域。请将 Five9 API 用户分配给自己实际希望 AI 执行的操作范围——Five9 的权限才是真正的安全边界。

  • manage_dnc remove 和 delete_list 需要格外谨慎;在 about 指令中会要求 AI 在运行某些操作前先确认。

  • 控制台只将你的访问密钥存储在浏览器的 localStorage 中,调用请求全部来自与你 Worker 同源的地址。

💻 开发

npm run dev      # wrangler dev on http://localhost:8787
npm run deploy   # wrangler deploy

把本地机密放在 .dev.vars 中(已被 gitignore):

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 从命令行进行冒烟测试。

🤝 贡献

欢迎 PR!Five9 Config API 有大约 180 个操作,本服务器封装了其中最有用的 69 个——five9.js + tools.js 的模式很容易扩展(建议先阅读 SOAP 注意事项,省得自己和 WSDL 打交道)。请保持这个零依赖约束。

📄 许可证

MIT · 由 Ryan Shatzkamer 构建

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server connecting AI assistants to the Five9 contact center, enabling management of campaigns, agents, IVR flows, and reports via natural language.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that connects AI assistants to Five9 cloud contact center, enabling management of campaigns, agents, IVR flows, and reports through natural language.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that connects AI assistants to Five9 contact centers, enabling natural language management of IVR flows, campaigns, agents, and real-time statistics.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects AI assistants to the Five9 cloud contact center, enabling them to manage campaigns, agents, IVR flows, and monitor call statistics through a secure, zero-dependency MCP server.
    MIT