calls-queues
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership, and forwarding/presence…
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com), the Admin Console + client setup flow, the permission model (fully inherited from the 3CX account that approved the
$ npx -y skills add wyre-technology/msp-claude-plugins --skill api-patterns --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/api-patternsContext preview
The summary Claude sees to decide when to auto-load this skill.
3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com), the Admin Console + client setup flow, the permission model (fully inherited from the 3CX account that approved the
name: "3CX API Patterns" description: > 3CX's native PBX MCP server: the per-PBX endpoint shape (every PBX is its own FQDN and its own OAuth authorization server — there is no shared mcp.3cx.com), the Admin Console + client setup flow, the permission model (fully inherited from the 3CX account that approved the connection), and how to discover the live tool surface since 3CX has not published exact tool-name strings. when_to_use: >- When connecting Claude to a 3CX PBX for the first time, troubleshooting a 3CX MCP connection or authorization failure, or figuring out which 3CX MCP tools are actually available before calling one. Use when: 3cx connect, 3cx mcp, 3cx setup, 3cx oauth, 3cx authenticate, 3cx admin console, 3cx mcp client, 3cx byo, or 3cx pbx url.
3CX added a native MCP server built directly into the PBX, introduced in **3CX V20 Update 10** (announced July 30, 2026 as an **Alpha** release — 3CX's own release notes describe Update 10 Alpha as "intended for testing and evaluation only"). Treat everything in this plugin as based on that Alpha: exact tool names, the permissions reference, and behavior may all shift before 3CX ships Update 10 GA.
This is a different project from the older third-party *SSIG-IT/3cx-mcp-server* on GitHub, a community-built MCP server that talks to 3CX's REST API rather than shipping inside the PBX. Do not mix the two up, and do not carry claims from the community project into this one — in particular, its "Enterprise/Enterprise Plus license required" claim is specific to that project and is **not** confirmed for 3CX's native MCP server.
tool surface, different auth model (its own API-key setup rather than per-PBX OAuth). Nothing in this plugin describes it, and nothing about it should be assumed here.
the PSA, not a 3CX MCP call. Use `halopsa-tickets`, `connectwise-psa-tickets`, or `autotask-tickets` to work the ticket itself; come back to this plugin once you need the PBX-side facts.
structurally, cannot: Conduit's catalog vendors share one fixed endpoint per vendor, and every 3CX PBX is its own origin with its own authorization server. See *Connection & Authentication* below for the two ways this plugin actually reaches a PBX.
Unlike a hosted SaaS MCP server, there is no single 3CX MCP URL. Each PBX exposes its own endpoint at its own FQDN, following the pattern:
https://yourpbx.3cx.eu/mcp
(or whatever FQDN that customer's PBX actually uses). Transport is Streamable HTTP. A skill, command, or agent in this plugin that needs to call a tool always does so against whichever PBX endpoint the current session is already connected to — nothing here can assume a fixed URL across customers.
An admin enables the connection from inside that PBX's own console:
1. Sign into the 3CX Admin Console for the target PBX. 2. **Admin → Integrations → MCP Clients → Add MCP Client**. 3. 3CX displays the MCP Server URL for that PBX — copy it for the client-side step below.
For a technician working standalone in Claude Code, with no MSP gateway in front of it:
claude mcp add --scope project --transport http 3CX "https://yourpbx.3cx.eu/mcp" claude
Then inside Claude:
1. Run `/mcp` and select the `3CX` server. 2. Choose **Authenticate**. Claude opens the 3CX authorization page in the browser. 3. Sign in, review the requested access, and select **Allow**. 4. Claude confirms the connection succeeded.
The new connection also then shows up in that PBX's own **Admin → Integrations → MCP Clients** list — the authorization is visible and revocable from both sides.
An MSP already using WYRE's Conduit gateway for other vendors does not need a separate direct connection per PBX. Conduit has a generic **"Bring Your Own (BYO) MCP server"** feature (`/connect/byo`) built for exactly this shape — a vendor with no fixed shared endpoint. Paste the PBX's MCP URL from the admin step above into that form; Conduit then:
1. Discovers the PBX's own OAuth authorization server at runtime — RFC 9728 protected-resource metadata, then RFC 8414 authorization-server metadata. 2. Registers a client dynamically against that authorization server (RFC 7591 DCR). 3. Runs the normal authorization-code + PKCE flow, validating the callback's `iss` against the discovered issuer (RFC 9207) before persisting tokens.
No 3CX-specific code exists in Conduit for this — the same generic BYO path handles any MCP server shaped this way. See *Tool permission tiers under Conduit BYO* below for how Conduit decides what an operator may call once connected, and this plugin's `GOVERNANCE.md` for the full picture.
Tool access is entirely inherited from the 3CX user account that approved the OAuth connection. Claude can do exactly what that account's 3CX role already permits inside 3CX — nothing more. There is no separate Claude-specific permission layer on the PBX side.
One tool is restricted regardless of role: the `Query` tool (see the `pbx-admin` skill) is hard-restricted server-side to read-only SQL `SELECT` statements, no matter what the connecting account is otherwise allowed to do in 3CX.
3CX's own "MCP Tools and Permissions Reference" documents these tools by human-readable label — find a contact by email, list active calls, drop a call, and so on — but does not publish the literal machine tool-name strings anywhere publicly accessible. The skills in this plugin describe the
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: mcp.wyre.ai
Repo: wyre-technology/msp-claude-plugins
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership, and forwarding/presence…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks, searching contacts synced from an…
3CX's system-and-configuration surface: server time, PBX event log and application log search, service status, database schema and the read-only SELECT-only…
Abnormal Security abuse mailbox cases: user-reported email submissions, case statuses and judgments, the case lifecycle, bulk and remediation actions, and…
Abnormal Security message analysis: message retrieval, email header inspection, attachments, sender reputation, delivery context, and SPF/DKIM/DMARC…
Abnormal Security threat detection: threat types (BEC, phishing, malware, socially-engineered attacks, spam, graymail, credential theft), attack vectors,…