ictpbx-mcp
OfficialClick on "Install 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., "@ictpbx-mcphow many extensions and DIDs are configured?"
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.
ictpbx-mcp
A Model Context Protocol server for ICTPBX, the multi-tenant, white-label IP-PBX built on the ICTCore framework by ICT Innovations.
It lets an AI assistant read your PBX state — extensions, DID numbers, SIP trunk providers, tenants and live statistics — over the ICTCore REST API. It is read-only: it never places a call or changes configuration.
Install
npx -y ictpbx-mcp # no install
npm install -g ictpbx-mcpRequires Node.js 18 or newer.
Related MCP server: VoIPbin MCP Server
Configure
Variable | Required | Default | |
| yes | ICTCore REST base, normally ending in | |
| yes | API account email (ICTCore logs in by email) | |
| yes | Password for that account | |
| no |
| Per-request timeout |
| no |
| Skip TLS verification — self-signed test servers only |
Claude Desktop example
{
"mcpServers": {
"ictpbx": {
"command": "npx",
"args": ["-y", "ictpbx-mcp"],
"env": {
"ICTPBX_BASE_URL": "https://your-ictpbx/api",
"ICTPBX_USERNAME": "admin@example.com",
"ICTPBX_PASSWORD": "your-password"
}
}
}
}Tools
Tool | What it does |
| Counts of extensions, devices, ring groups, queues, IVRs, voicemails, conferences, gateways |
| SIP extensions with username, name, tenant |
| DID (inbound) numbers, active state and tenant |
| SIP trunk providers (upstream carriers) |
| Tenants (customer organizations) on the PBX |
How it connects
ICTPBX runs on ICTCore, which authenticates with a JWT from POST /authenticate
(login by email) and reads it back from the Authorization: Bearer header. The
server fetches the token on first use and refreshes it automatically.
About
Built by Tahir Almas at ICT Innovations — the team behind ICTPBX, ICTContact, ICTDialer, ICTFax and the ICTCore framework these products share. Learn more at ictpbx.com.
MIT licensed. Issues and PRs welcome at github.com/ictinnovations/ictpbx-mcp.
Available Tools
5 toolsictpbx_list_didsList DID numbersARead-only
List DID (inbound phone) numbers on the PBX: the number, whether it is active, its tenant and the contact it is tied to.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already communicates that this is a safe read operation. The description adds useful detail about the included fields (number, active status, tenant, contact) but does not disclose additional behavioral traits such as ordering, pagination, or scope limitations. This is consistent with the annotations, and the added value is moderate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one efficient sentence that front-loads the primary action and resource, then lists the returned fields. Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool, the description is complete: it explains what is listed and what fields will be present in the result. Annotations cover the read-only and open-world aspects, and the output field enumeration compensates for the lack of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter burden for the description to carry. The schema coverage is 100% by virtue of having an empty parameters object, and the description appropriately focuses on the output rather than input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a precise resource ('DID (inbound phone) numbers'), and the scope ('on the PBX'). It also enumerates the key fields returned, making the tool's purpose unmistakable and clearly distinct from sibling tools like list_extensions or list_providers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this when you need DID numbers and their related details on the PBX. It does not explicitly name alternatives or exclusions, but the resource type is distinct enough that an agent can infer when to select this over the sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictpbx_list_extensionsList extensionsARead-only
List SIP extensions on the PBX with their username, name, tenant and account id. Use this to answer 'what extensions exist' or to find an extension's tenant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true, so the description doesn't need to restate safety. It adds value by specifying exactly what data the tool returns (username, name, tenant, account id), which is useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The first sentence states the core action and output fields; the second adds practical usage context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is complete: it names the resource, the returned fields, and the use cases. Combined with the annotations, an agent has everything needed to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is an empty object with 100% schema coverage, so there are no parameters requiring documentation. The description correctly omits parameter details, matching the baseline for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the specific resource ('SIP extensions on the PBX'), and enumerates the returned fields. It also provides concrete use cases, making it easily distinguishable from sibling list tools like list_tenants and list_dids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool: to answer 'what extensions exist' or to find an extension's tenant. It does not explicitly mention alternatives or when not to use it, but the use cases are clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictpbx_list_providersList SIP trunk providersARead-only
List the SIP trunk providers (upstream carriers) configured on the PBX: name, host and tenant.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals a safe read operation, and the description adds useful context by scoping the list to the PBX and specifying the fields returned. It does not contradict the annotations and provides reasonable behavioral expectations for a simple no-parameter listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence immediately states the action and resource, then immediately lists the returned fields. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless, read-only list tool, this description is complete: it names the resource, the scope, and the fields in the result. The annotations cover safety, and no output schema exists, but the description sufficiently sets expectations for a simple list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is effectively 100%, so there are no parameter semantics to document. The description's mention of returned fields is a useful bonus and meets the baseline for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and identifies the exact resource ('SIP trunk providers (upstream carriers) configured on the PBX'). It also enumerates the returned fields (name, host, tenant), which clearly distinguishes it from sibling list tools for other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states that this tool lists SIP trunk providers on the PBX, giving enough context for when to call it. It does not explicitly contrast it with siblings, but the resource type is distinct enough that no real ambiguity exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictpbx_list_tenantsList tenantsARead-only
List the tenants (customer organizations) on this multi-tenant PBX: company, contact and limits. Use this to see who the white-label PBX is serving.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only behavior is established. The description adds useful context about the multi-tenant scope and the returned fields (company, contact, limits), but it does not describe pagination, limits of the returned set, or other behavioral nuances. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no filler; the main action and resource are front-loaded, followed by a brief usage cue. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool that mentions its key output fields, the description is complete. There is no output schema, but the description compensates by stating what the listing contains (company, contact, limits), and the annotations cover safety expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema covers 100% of them, so there is nothing for the description to add. With no parameters, the baseline is 4, and the description correctly focuses on the output rather than inventing parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List the tenants (customer organizations) on this multi-tenant PBX', which clearly distinguishes the tool from siblings that list extensions, DIDs, providers, or PBX statistics. It also clarifies the domain-specific term 'tenants' with the parenthetical 'customer organizations'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to see who the white-label PBX is serving,' giving clear context for when the tool is appropriate. It does not name sibling tools or provide exclusion criteria, but for a simple zero-parameter list operation this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ictpbx_pbx_statisticsPBX statisticsARead-only
Counts across the PBX: extensions, devices, ring groups, call queues, IVR menus, voicemails, conferences and gateways. Use this first for a quick health picture of the server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already declared, the description adds context that the tool returns aggregate counts rather than detailed records, making clear it is a summary/overview operation. This augments the annotation meaningfully without contradicting it, though it could have added a bit more detail about the output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence front-loads the core function and scope, and the second sentence gives a practical usage tip. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only statistics tool with no output schema, the description is complete: it states what is counted, that it is a high-level summary, and when to use it. Nothing essential is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and schema coverage is 100%, so there is no parameter burden for the description to carry. The description adequately explains what the tool counts, which is all that is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Counts across the PBX') and enumerates the exact objects counted: extensions, devices, ring groups, call queues, IVR menus, voicemails, conferences, and gateways. This clearly distinguishes it from the sibling list tools, which are all list-oriented rather than aggregate-count-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Use this first for a quick health picture of the server' provides explicit guidance on when to invoke the tool. It does not explicitly name the alternatives, but the 'counts' nature plus the 'use this first' instruction implies it is meant as an aggregate overview before using more specific list tools like ictpbx_list_extensions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource: tenants, PBX-wide statistics, extensions, DIDs, and providers. There is no meaningful overlap, so an agent can reliably select the correct tool based on the resource it needs.
Tool names mostly follow a consistent ictpbx_list_<resource> pattern, with ictpbx_pbx_statistics being the one deviation. The prefix is uniform and the intent of each name is clear.
Five tools is a well-scoped set for a read-only PBX inventory and health-check server. Each tool covers a meaningful area without excess or redundancy.
The server only provides list and count operations, with no create, update, delete, or search capabilities. While statistics mention many PBX resources, only tenants, extensions, DIDs, and providers have detailed list tools, leaving significant gaps for full PBX management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server enabling AI agents to manage Bitrix24 features via standardized protocol
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
FlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server that provides AI agents with seamless access to the NetSapiens VoIP platform for user management, call analytics, and system administration.234
VoIPbin MCP Serverofficial
AlicenseBqualityCmaintenanceAn MCP server that enables AI assistants to interact with the VoIPbin CPaaS platform, exposing tools for managing calls, flows, messaging, conferencing, and more.521MIT- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables AI assistants to manage Cisco Unified Communications Manager (CUCM) via AXL SOAP API, supporting provisioning, configuration, and database queries through natural language.2867MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that connects AI assistants to Five9 contact center, allowing management of campaigns, agents, lists, and statistics via natural language commands.12MIT
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/ictinnovations/ictpbx-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server