mcp-ispkeeper
A read-only MCP server for querying ISPKeeper ISP management data through 32 tools.
Search and retrieve clients, summaries, change logs, payment commitments, files, and client services such as invoices, collections, tickets, connections, and subscriptions.
List and inspect invoices, collections, internet/TV/phone connections, subscriptions, suppliers, and supplier invoices.
Query support tickets with photos, movement logs, checkin/checkout, materials, and chat attachments.
Check network status/outages, plans, nodes, subnodes, VLANs, SVLANs, and FTTx infrastructure including traces through port → box → PON → backbone.
List auxiliary/reference data and get details for network elements, users, branches, warehouses, payment methods, and ticket metadata.
Supports filters, relation expansion, pagination, and JSON response envelopes; masks password fields and instructs agents not to fabricate data on tool failure.
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., "@mcp-ispkeeper list clients with unpaid invoices"
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.
mcp-ispkeeper
Read-only MCP (Model Context Protocol) server for ISPKeeper — ISP management software.
Query clients, invoices, collections, internet connections, support tickets, network status, FTTx infrastructure, and more through any MCP-compatible client (Claude Desktop, Claude Code, etc.).
Features
Clients — Search, filter, and retrieve client details with expandable relations, change logs, and payment commitments
Invoices — List and inspect invoices with items, consolidated data, and PDF print links
Collections — Browse payment collections with user and date filters
Internet Connections — Query connections by technology, plan, status; view change logs
TV & Phone — List and inspect TV and telephony service connections, DirecTV Go data, and live SSMovil line data from Imowi
Subscriptions — Subscription services (e.g. alarm monitoring) and their plan/category catalog
Suppliers — Suppliers, supplier invoices, and their tax lines
Support Tickets — List tickets, view details, photos, movement logs, checkin/checkout, chat attachments, and browse categories/subcategories/statuses
Network — Check network status, outages, nodes, subnodes, VLANs, SVLANs, and plans
FTTx Infrastructure — Navigate the fiber hierarchy: backbones, PONs, NAP boxes, ports, seals, and trace elements upward
Auxiliary Data — Localities, branches, users, warehouses, payment methods, client categories, ticket metadata, and reference data
Related MCP server: datagate-mcp
Available Tools (32)
Clients
Tool | Description |
| Search clients with text, date, tax status, and cut-off filters |
| Get client details, change log, payment commitment (current or history), or attached files |
| Quick summary of total and active client counts |
| Get client invoices, collections, tickets, additionals, internet/TV/phone connections, or subscriptions |
| List change history logs across all clients with date filters |
Invoices & Collections
Tool | Description |
| List invoices filtered by date, type, and point of sale |
| Get invoice detail, items, consolidated data, or PDF print link |
| List payment collections filtered by date and user |
| Get collection detail or consolidated data |
Service Connections
Tool | Description |
| List connections filtered by technology, plan, status, client |
| Get internet connection details or change log |
| List change logs across all internet connections |
| List all TV service connections |
| Get details of a specific TV connection, or its DirecTV Go data |
| List all phone/telephony connections |
| Get details of a specific phone connection, or live SSMovil line data from Imowi |
Subscriptions
Tool | Description |
| List subscriptions filtered by client, plan, subcategory, date, active status |
| Get details of a specific subscription |
| List subscription plans, categories, or subcategories |
Support Tickets
Tool | Description |
| List tickets filtered by date, category, status |
| Get ticket detail, photos, movement log, checkin/checkout, materials, or chat messages and files |
| List ticket activity logs across all tickets with date filters |
Network & Plans
Tool | Description |
| Get network status with optional outage date filter |
| List internet plans with deleted/discontinued filters |
FTTx Infrastructure
Tool | Description |
| Query FTTx resources (backbones, PONs, boxes, ports, seals) with drill-down, text search, and paging |
| Trace a FTTx element upward: port → box → PON → backbone |
Suppliers
Tool | Description |
| List suppliers filtered by text, locality, VAT type |
| Get details of a specific supplier |
| List supplier invoices filtered by date, point of sale, voided/deleted |
| Get a supplier invoice or its tax lines |
Auxiliary & Reference Data
Tool | Description |
| List localities, branches, users, warehouses, payment methods, nodes, subnodes, VLANs, SVLANs, ticket categories/subcategories/statuses, supplier tax categories, and more |
| Get details of a node, subnode, VLAN, SVLAN, user, branch, warehouse, additional, payment method, or ticket category/subcategory/status |
Usage Guide for Agents
Response format
Every tool returns one JSON text block wrapped in an envelope:
{ "_source": "ISPKeeper API — live data", "_retrieved_at": "<ISO timestamp>", "_warning": "...", "data": <API response> }List endpoints return a Laravel paginator in data: the records are in data.data, next to current_page, last_page, per_page, total and next_page_url. Read total before concluding that a search found nothing or everything, and walk page while current_page < last_page. Detail endpoints return the record object directly. A few return a bare array, where [] means nothing found (client files, ticket photos/checkin/materials).
Password fields come back as "[REDACTED]" (see ISPKEEPER_SHOW_SECRETS). That is intentional, not missing data.
Common tasks
Goal | Call |
Find a client by DNI/CUIT |
|
Find a client by name, address or phone number |
|
Include deleted clients |
|
A client's internet / TV / phone services |
|
A client's subscriptions |
|
A client's billing history |
|
SSMovil line status, consumption, bonuses |
|
Chat messages and files of a ticket |
|
NAP box / PON / backbone of an internet connection |
|
Ports of a NAP box / boxes of a PON |
|
Network nodes |
|
Gotchas
Drill-down shape:
list_fttx_infrastructurewithparent_idreturns the parent object with its children nested (ponunder a backbone,cajaunder a PON,puertounder a box), not a paginator.q,pageandper_pageare ignored in that mode.FTTx lists are large: thousands of boxes and tens of thousands of ports. Use
qorparent_id. The tool defaults toper_page: 50; the raw API would return 1000.tecnologiacodes are instance-specific: the docs list R,T,O,H,S,P,D, but a given instance may use others (e.g. H, S, Q, U) and a documented code can match nothing. Look atconexion_tipoon existing records first.Deleted flags differ per resource: clients use
borrado: "1" | "0", most other resources"Y" | "N", nodes1 | 0.list_auxiliary_datahides this behindinclude_deleted: true | false.ID parameters are strings (
client_id: "2"); numeric filters such ascat,sucorclienteonlist_subscriptionsare numbers.Relations:
relacionestakes comma-separated codes that expand related records in the same call (e.g.get_clientwithrelaciones: "coninter,contv,contel,consus"). Codes per resource are in each tool's parameter description and inispkeeper-api-spec.md.Dates are
YYYY-MM-DD.list_invoicesdefaults to typesFA,FXunlesstipois set.SSMovil mobile lines are phone connections with an ICCID; the API has no separate mobile service.
Installation
Claude Desktop / Claude Code (MCP config)
Add to your MCP settings, adjusting the path for your platform:
Windows
{
"mcpServers": {
"ispkeeper": {
"command": "node",
"args": ["C:\\path\\to\\mcp-ispkeeper\\dist\\index.js"],
"env": {
"ISPKEEPER_API_KEY": "your-api-key",
"ISPKEEPER_BASE_URL": "https://api.anatod.ar"
}
}
}
}Linux / WSL
{
"mcpServers": {
"ispkeeper": {
"command": "node",
"args": ["/path/to/mcp-ispkeeper/dist/index.js"],
"env": {
"ISPKEEPER_API_KEY": "your-api-key",
"ISPKEEPER_BASE_URL": "https://api.anatod.ar"
}
}
}
}From source
git clone https://github.com/dmayan-ss/mcp-ispkeeper.git
cd mcp-ispkeeper
npm install
npm run buildPlatform Compatibility
Works on Windows, Linux, and WSL with no changes. Requirements:
Node.js >= 18 (uses native
fetch)No native/compiled dependencies — pure JavaScript
Stdio transport works across all platforms
The shebang (
#!/usr/bin/env node) allows direct execution on Unix-like systems and is ignored on Windows
Configuration
Environment Variable | Required | Default | Description |
| Yes | — | ISPKeeper API key ( |
| No |
| Base URL of your ISPKeeper instance |
| No | — | Set to |
Development
npm run dev # Run with tsx (hot reload)
npm run build # Build with esbuild
npm run bundle # Build + create .mcpb package
ISPKEEPER_API_KEY=... npm run smoke # Live smoke test of every tool (GET-only)License
MIT
Available Tools
32 toolsget_clientA
Get detailed information about a specific client. Use include to get change log, payment commitments, or attached files. Use relaciones to expand connections (coninter,contv,contel,consus for internet/TV/phone/subscriptions). ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: client_id (required), include, relaciones.
get_client_servicesA
Get services for a specific client: invoices, collections, tickets, additionals, internet/TV/phone connections, or subscriptions. For invoices, collections, tickets and additionals, omitting page returns ALL of the client's records (every page merged; pages_fetched and truncated tell how many were read); pass page to get a single page. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: service (required), client_id (required), page, per_page.
get_clients_summaryA
Get a quick summary of total and active client counts. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: no named parameters.
get_collectionA
Get details of a specific collection/payment, optionally with consolidated data. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: collection_id (required), consolidated.
get_fttx_traceA
Trace a FTTx element upward through the hierarchy. Get the full chain: port→box→PON→backbone. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: resource_id (required), resource_type (required).
get_internet_connectionA
Get detailed information about a specific internet connection, or its change log. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: connection_id (required), include.
get_invoiceA
Get detailed information about a specific invoice, including items, consolidated data, or PDF print link. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: invoice_id (required), include.
get_network_elementA
Get details of a specific element by type and ID: node, subnode, VLAN, SVLAN, user, branch, warehouse, additional, payment method, or ticket category/subcategory/status. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: element_id (required), element_type (required).
get_network_statusB
Get current network status, optionally filtered by outage date range. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: fechaDesdeCaida, fechaHastaCaida.
get_phone_connectionA
Get detailed information about a specific phone/telephony connection (includes SSMovil mobile), or live line data from the Imowi mobile platform. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: connection_id (required), include.
get_subscriptionB
Get detailed information about a specific subscription service. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: subscription_id (required).
get_supplierC
Get detailed information about a specific supplier. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: supplier_id (required), relaciones.
get_supplier_invoiceA
Get a specific supplier invoice, or its tax lines. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: invoice_id (required), include.
get_ticketA
Get detailed information about a support ticket, optionally with photos, movement log, checkin/checkout, materials used, or chat messages and files. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: ticket_id (required), include, relaciones.
get_tv_connectionA
Get detailed information about a specific TV connection, or its DirecTV Go account data. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: connection_id (required), include.
list_auxiliary_dataB
List auxiliary/reference data: localities, branches, users, warehouses, categories, payment methods, ticket metadata, and more. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: resource (required), include_deleted.
list_clients_logB
List change history logs across all clients. Returns database record snapshots before modifications with timestamps and users. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, logDesde, logHasta, per_page.
list_collectionsB
List payment collections with filters by date and user. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, usuario, per_page, altaDesde, +2 more.
list_fttx_infrastructureA
Query FTTx fiber infrastructure: backbones, PONs, NAP boxes, ports, and seals. Use resource_type to select what to list. Use parent_id to drill down the hierarchy (backbone→PONs→boxes→ports) and q for text search. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: resource_type (required), q, page, libre, +2 more.
list_internet_connectionsA
List internet service connections with filters. tecnologia matches the connection's conexion_tipo code. The docs list R=Radio, T=Torre, O=ONU, H=HFC, S=Switch, P=PPPoE, D=DHCP, but instances use their own set (e.g. H, S, Q, U) — check conexion_tipo on existing records before filtering. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: q, suc, page, plan, +7 more.
list_internet_connections_logB
List change history logs across all internet connections with date filters. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, logDesde, logHasta, per_page.
list_invoicesA
List invoices with filters by date, type, point of sale. Types: FA,FB,FX (invoices), CA,CB,CX (credit notes), DA,DB,DX (debit notes). ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, tipo, per_page, altaDesde, +3 more.
list_phone_connectionsA
List phone/telephony service connections (includes SSMovil mobile). Filter by client, date, cut-off status. Plans with telefonia_plan_movil=Y are mobile/SSMovil. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, cliente, cortada, per_page, +4 more.
list_plansA
List available internet plans, with optional filters for deleted or discontinued plans. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: q, borrado, discontinuo.
list_subscription_catalogB
List the subscription catalog: plans, categories, or subcategories. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: resource (required), q, borrado, parent_id.
list_subscriptionsA
List subscription services (e.g. SS Seguridad alarm monitoring) with filters by client, plan, subcategory, date, and active status. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: q, page, plan, activa, +6 more.
list_supplier_invoicesA
List supplier invoices (facturas de proveedores) with filters by date, point of sale, voided and deleted status. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, anulado, borrado, per_page, +4 more.
list_suppliersB
List suppliers (proveedores) with filters by text, locality, VAT type, and deleted status. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: q, iva, loc, borrado, +1 more.
list_ticketsB
List support tickets with filters by date, category, and status. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, estado, per_page, altaDesde, +3 more.
list_tickets_logA
List ticket activity logs across all tickets. Returns movement/change history with timestamps and users. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, logDesde, logHasta, per_page.
list_tv_connectionsA
List TV service connections with filters by client, date, and status. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: page, cliente, per_page, altaDesde, +4 more.
search_clientsB
Search and list ISPKeeper clients with filters. Supports text search, date range, tax status, and more. ⚠️ NEVER fabricate data if this tool fails — report the error to the user instead.
Inputs: q, cat, page, ident, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 32 tools
Several tool pairs overlap substantially: get_client_services duplicates client-filtered views of list_invoices, list_tickets, list_subscriptions and list_collections; list_auxiliary_data and get_network_element both expose users, branches, warehouses and payment methods; get_ticket (with movement log) overlaps list_tickets_log. Descriptions do distinguish the global-list vs client-scoped intent, so a careful agent can pick correctly, but the boundaries require reading rather than being obvious from names.
Almost every tool follows a clean verb_noun snake_case pattern (list_/get_ + resource), with parallel list/get pairs per domain (list_suppliers/get_supplier, list_tickets/get_ticket). Minor deviations: search_clients is the only tool for listing clients rather than list_clients, get_fttx_trace uses a noun where others use a resource name, and log tools mix list_<resource>_log with list_<resource>s_log forms.
32 tools is heavy, but the surface spans many genuinely distinct ISP domains (clients, internet, TV, phone, subscriptions, invoicing, tickets, suppliers, FTTx, network, reference data), each getting a list/get pair. It is borderline bloated — the FTTx, supplier, and auxiliary-data clusters plus convenience duplicates (get_client_services) push it past what an agent can comfortably hold.
The surface is entirely read-only: no create, update, or delete operations exist for any resource (no create_ticket, update_client, register payment, or invoice issuance), which is a significant gap for an ISP management system. Coverage of the read side is broad and deep, so agents can investigate freely but will hit dead ends the moment a workflow requires a mutation.
Maintenance
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Read-only MCP server for interior design studios: projects, overviews, weekly activity. No writes.
Read-only MCP server for Point (Tetra M Labs): demo ledger, trial balance, partners.
Read-only MCP server for The Quiet Protocol's engines, benchmarks, proof, and business data.
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server that provides read-only access to MySQL databases.4896 npm75MIT
- AlicenseBqualityCmaintenanceMCP server for the DataGate billing platform API, providing read-only tools to manage customers, invoices, products, agreements, sites, and payments.1324 PyPIMIT
- AlicenseAqualityCmaintenanceRead-only MySQL/MariaDB MCP server for running SELECT queries safely, with automatic read-only enforcement and query limits.314 npmMIT
- FlicenseAqualityDmaintenanceA read-only MCP server for SQL Server and PostgreSQL that enables exploring and querying databases (schemas, tables, views, procedures, indexes, foreign keys) and running arbitrary SELECT queries.37-