Skip to main content
Glama
ictinnovations

ictpbx-mcp

Official

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-mcp

Requires Node.js 18 or newer.

Related MCP server: VoIPbin MCP Server

Configure

Variable

Required

Default

ICTPBX_BASE_URL

yes

ICTCore REST base, normally ending in /api, e.g. https://your-ictpbx/api

ICTPBX_USERNAME

yes

API account email (ICTCore logs in by email)

ICTPBX_PASSWORD

yes

Password for that account

ICTPBX_TIMEOUT_MS

no

30000

Per-request timeout

ICTPBX_TLS_INSECURE

no

false

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

ictpbx_pbx_statistics

Counts of extensions, devices, ring groups, queues, IVRs, voicemails, conferences, gateways

ictpbx_list_extensions

SIP extensions with username, name, tenant

ictpbx_list_dids

DID (inbound) numbers, active state and tenant

ictpbx_list_providers

SIP trunk providers (upstream carriers)

ictpbx_list_tenants

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 tools
ictpbx_list_didsList DID numbersA
Read-only

List DID (inbound phone) numbers on the PBX: the number, whether it is active, its tenant and the contact it is tied to.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 extensionsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 providersA
Read-only

List the SIP trunk providers (upstream carriers) configured on the PBX: name, host and tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 tenantsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 statisticsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A4.3/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness2/5

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

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A 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.
    23
    4
  • A
    license
    B
    quality
    C
    maintenance
    An MCP server that enables AI assistants to interact with the VoIPbin CPaaS platform, exposing tools for managing calls, flows, messaging, conferencing, and more.
    52
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that connects AI assistants to Five9 contact center, allowing management of campaigns, agents, lists, and statistics via natural language commands.
    12
    MIT

Latest Blog Posts

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