Skip to main content
Glama
ictinnovations

ictpbx-mcp

Official
README.md
# ictpbx-mcp

A [Model Context Protocol](https://modelcontextprotocol.io) server for
**[ICTPBX](https://ictpbx.com)**, the multi-tenant, white-label IP-PBX built on the
ICTCore framework by [ICT Innovations](https://ictinnovations.com).

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

```bash
npx -y ictpbx-mcp      # no install
npm install -g ictpbx-mcp
```

Requires Node.js 18 or newer.

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

```json
{
  "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](https://ictinnovations.com) — the team
behind ICTPBX, ICTContact, ICTDialer, ICTFax and the ICTCore framework these
products share. Learn more at [ictpbx.com](https://ictpbx.com).

MIT licensed. Issues and PRs welcome at
[github.com/ictinnovations/ictpbx-mcp](https://github.com/ictinnovations/ictpbx-mcp).

TDQS

A4.3/5.0

Scored across 5 tools

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