cxone-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cxone-mcpcreate an outbound skill called Fall Reactivation with Personal Connection"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cxone-mcp
Your CXone tenant, in your AI's hands. An open-source MCP server for NiCE CXone on Cloudflare Workers. Zero dependencies, no terminal required, and its whole purpose is to build: skills (routing AND the outbound dialer config), agents, teams, campaigns, dispositions, hours of operation, points of contact, DNC groups, calling lists - and Studio scripts: real IVRs with nested submenus, composed from plain english, diagrammed in chat before deploy, and validated by CXone's own server-side syntax check on save.
It builds, not just reads.
Prompt Claude (or any MCP client):
"create an outbound skill called Fall Reactivation with Personal Connection, 3 attempts max, retry no-answers after 4 hours, dialing 9 to 7 on weekdays and 10 to 4 on weekends"
"build an IVR: greet callers, press 1 for sales, press 2 for a billing menu with balance, payments, and a way back. show me the diagram first"
"draw my Main Inbound script as a diagram"
"give me the outbound overview - what dials, when, against which DNC lists"
"stage 200 test records on the reactivation skill - do not start anything"
"create a DNC group seeded with these numbers and scrub the reactivation skill against it"
"repoint our main number to the new script"
The IVR builder composes the real web-Studio script JSON, shows you the flow as a Mermaid diagram in chat, then saves through CXone's scripts API - CXone runs its own syntax check server-side before anything lands, and the report comes back verbatim.
What it deliberately does NOT do
No analytics or KPI tools. This is the build side of the house, on purpose.
No dialing ignition. Outbound skills are created not running, calling lists always upload with
startSkill: false(hard-coded), and no tool can start a skill. The raw API tool refuses the start endpoints at the code level. The AI builds the dialer; a human presses go.No live-contact control. No barge, no end-call, no recording toggles - the raw API tool refuses the contacts endpoints.
No deletes. There are no delete tools, and the raw API tool refuses
DELETE. Create-first by design.
Related MCP server: genesys-mcp
Deploy your own in 3 steps
Deploy: click the button (free Cloudflare account), or
git clone+npx wrangler deploy. The CONFIG KV namespace is auto-provisioned.Create a CXone access key: Admin → Employees → (a dedicated least-privilege admin user) → Security tab → Add Access Key. Copy the ID and Secret (the secret is shown once).
Configure: open
/setupon your new Worker and paste the Access Key ID and Secret. That's it - the wizard validates them live against CXone, discovers your tenant and regional API host automatically (no cluster names, no API URLs), then hands you your access key for MCP clients (shown once).
Prefer terminal-managed config? Set Wrangler secrets instead; they override the wizard: CXONE_ACCESS_KEY_ID, CXONE_ACCESS_KEY_SECRET, MCP_AUTH_TOKEN (and optionally CXONE_API_BASE for private clusters).
Connect your AI
The MCP endpoint is https://<your-worker>/mcp.
Claude (web/desktop): Settings → Connectors → Add custom connector → paste the URL. When the authorization screen appears, paste your access key.
Claude Code:
claude mcp add --transport http cxone https://<your-worker>/mcpand authenticate when prompted.ChatGPT: Settings → Connectors → Advanced → Developer mode → add the MCP server URL.
Anything else: standard streamable HTTP MCP with OAuth 2.1 (or send the access key as a Bearer token).
Then try: "check the connection and list my skills."
The toolbox (42 tools)
Group | Tools |
🔌 Tenant & Connection |
|
🎯 Skills (Routing & Dialer) |
|
👥 Agents & Teams |
|
🗂️ Campaigns & Dispositions |
|
🕐 Hours & Codes |
|
📇 Numbers & Entry Points |
|
📤 Outbound Compliance & Records |
|
🏗️ Studio Scripts (IVR Builder) |
|
⚡ Power |
|
✏️ = writes to your tenant. Reads are always safe; connected AIs are instructed to confirm before every write.
CXone vocabulary (worth 30 seconds)
CXone names things differently than Five9 or Genesys, and the server teaches your AI the mapping:
A skill is the workhorse: the queue AND the dialing campaign. Outbound skills carry the dialer config (Personal Connection, retry settings, schedules, CPA).
A campaign is a reporting rollup of skills. It does not dial.
A point of contact wires a phone number (DNIS) to the script it runs. Repointing is the fast cutover.
A script is the Studio IVR. Every save mints a new version; the name is the identity, and history survives.
For the nerds
Zero dependencies. Not one npm package. The Worker is plain JS on
fetchand Web Crypto.Two-field setup. Auth is CXone's User Hub access-key flow; the token's own claims name the tenant, and the public
.well-known/cxone-configurationendpoint maps it to the regional API host. Paste two keys, everything else is discovered.The IVR builder writes the real web-Studio JSON (
header,actions,properties,branches) against CXone's global action library (BEGIN, MENU, PLAY, REQAGENT, MUSIC, HANGUP - the GUIDs are product constants, identical on every tenant), and saves throughPOST /scripts- the same endpoint web Studio itself saves through. CXone's server-side SYNTAX_CHECK validates every save and its errors/warnings are relayed verbatim. Menus nest three levels deep with back-navigation.Round-trip editing.
get_scriptreturns the same JSON shapedeploy_scriptaccepts, so read-modify-deploy works on any web-Studio script.Any script diagrams. Web-Studio scripts render from their JSON; Desktop-Studio-only scripts fall back to a best-effort render of their XML export. Instant documentation either way.
OAuth 2.1 built in (dynamic client registration, PKCE, stateless HMAC-signed tokens), so it plugs straight into Claude and ChatGPT as a connector.
The swagger drifts; the tools encode reality. Verified live and baked in: several create endpoints are batch-shaped and can return HTTP 200 with a per-item failure inside; inbound skills require service-level fields the docs call optional; campaign creation only works on v33.0 with a flat body; call-list creation takes its name as a query param and maps the phone column via
destinationMappings: "PhoneNumber"; the ACD API answers "No known way to render data" unless you send anAcceptheader (Node's fetch does, workerd's doesn't). Every one of these is a comment in the source next to the code that handles it.One honest limitation, stated instead of hidden: the dialing-schedule endpoint only accepts a schedule where all seven days have an active window (any inactive day is rejected however encoded), and disposition-to-skill assignment has no working write API - both are explained by the tools at call time and finished in the CXone UI.
Rate limits are undocumented by design on CXone; the client retries once on 401 and backs off exponentially on 429.
Tested against a live CXone tenant: 17 unit tests plus a 48-step live smoke suite (
npm test,npm run smoke- read-only by default,-- --writesexercises the write tools in a sandbox).
Scoping the access key
The access key inherits the CXone role of the employee it belongs to. Make a dedicated user with a role scoped to what you want the AI to touch (ACD read + the create permissions you actually need), and generate the key on that user. CXone enforces the role server-side no matter what this Worker asks for.
License
MIT. Built by Ryan Shatzkamer (Director, Technical Services @ outboundIQ) - creator of five9-mcp and genesys-mcp. This is platform number three.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP facade over the Nebelus Construction API. ~48 tools give full agent build parity: create/update/probe agents, edit graphs, attach knowledge and vector stores, wire connectors, set governance policies and locked guardrails, enable grounding-trace, and read deployment wiring. Purpose-built for regulated industries: data residency is enforced per region (EU / GCC-KSA), with PII controls and an audit trail. Agents are created as drafts — no deploy tool is exposed over MCP by design; publishing happens in the Nebelus console.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Let AI agents query data and act across all your business apps via MCP.
Build multi-tenant apps over MCP. Schemas, CRUD, deploys — access control enforced server-side.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for Genesys Cloud that enables AI assistants to build and manage queues, skills, users, wrap-up codes, and Architect flows, including a flow builder that renders diagrams and publishes via Genesys' validation pipeline.18MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server that puts your Genesys Cloud org under AI control, enabling natural language creation of queues, skills, users, wrap-up codes, and Architect IVR flows with Mermaid diagrams.-
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to build and manage Genesys Cloud resources such as queues, skills, users, wrap-up codes, and Architect flows through natural language, including flow diagramming and server-side publishing.-
- FlicenseNot gradedqualityCmaintenanceAn MCP server that puts a Genesys Cloud org in an AI assistant's hands, enabling it to build queues, skills, users, wrap-up codes, Architect flows, and outbound contact lists, campaigns, and cadences. It composes flows as diagrams and YAML, then publishes them through Genesys' own validation pipeline.-