pnlcs-mcp
Click 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., "@pnlcs-mcpWhich invoices are overdue?"
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.
pnlcs-mcp
A Model Context Protocol server for PNLCS, the open-source billing panel. Connect Claude Code, Claude Desktop, Cursor, VS Code or any other MCP client to your PNLCS install and work with it in plain English:
"Which invoices are overdue?" — "Show me this client's services and domains." — "Any orders held as fraud today?" — "Open a ticket for ada@example.com about her domain renewal."
Zero dependencies. The server is one small Node process that talks to the PNLCS admin API you already have. Nothing is installed on the PNLCS side.
npm:
pnlcs-mcpRequires: Node 18+ on the machine your AI client runs on
Transport: stdio (spawned by your client — no port, nothing to host)
1. Create an API credential in PNLCS
Log in to the admin area of your PNLCS install.
Go to Configuration → API Credentials.
Click Create, give it a name like
mcp, and copy the two values it shows you:Identifier — the credential's username
Secret — shown once; store it somewhere safe
That pair is all the server needs, passed through three environment variables:
Variable | Value |
| Your install's address, e.g. |
| The credential's identifier |
| The credential's secret |
| Optional. Set to |
Related MCP server: WHMCS MCP Server
2. Connect your client
Claude Code (CLI)
One command:
claude mcp add pnlcs \
--env PNLCS_URL=https://billing.example.com \
--env PNLCS_IDENTIFIER=your_identifier \
--env PNLCS_SECRET=your_secret \
-- npx -y pnlcs-mcpAdd --env PNLCS_ALLOW_WRITES=1 if you also want the write tools.
Use --scope project to share the entry with your team via .mcp.json
(put the secret in your shell environment, not in the committed file).
Check it with claude mcp list; remove it with claude mcp remove pnlcs.
Claude Desktop
Edit claude_desktop_config.json
(macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"pnlcs": {
"command": "npx",
"args": ["-y", "pnlcs-mcp"],
"env": {
"PNLCS_URL": "https://billing.example.com",
"PNLCS_IDENTIFIER": "your_identifier",
"PNLCS_SECRET": "your_secret"
}
}
}
}Restart Claude Desktop; the tools appear under the hammer icon.
Cursor
Settings → MCP → Add new global MCP server, or create .cursor/mcp.json
in your project (same JSON shape as Claude Desktop above).
VS Code (Copilot agent mode)
Create .vscode/mcp.json:
{
"servers": {
"pnlcs": {
"type": "stdio",
"command": "npx",
"args": ["-y", "pnlcs-mcp"],
"env": {
"PNLCS_URL": "https://billing.example.com",
"PNLCS_IDENTIFIER": "your_identifier",
"PNLCS_SECRET": "your_secret"
}
}
}
}Anything else (Windsurf, Cline, Zed, ...)
Every MCP client that can spawn a stdio server uses the same three pieces:
command npx, args ["-y", "pnlcs-mcp"], and the environment variables
above. From a git checkout, node mcp/server.js works identically.
3. Tools
Read tools — always available
Tool | What it answers |
| Client, order, invoice and revenue totals |
| Health of the install itself |
| Clients, searchable by name/email/company, pageable |
| One client with contacts, by |
| Hosting services of one client |
| Domains of one client |
| Invoices; filter by |
| One invoice with its line items |
| Orders; filter by |
| Support tickets; filter by status |
| One ticket with replies and notes |
| Ticket totals per status |
| Payments, newest first |
| The product catalogue |
| Recent admin and system activity |
Write tools — only with PNLCS_ALLOW_WRITES=1
Tool | What it does |
| Create a client; with |
| Invoice a client with one or more line items |
| Record a payment; marks the invoice paid when covered |
| Open a support ticket |
| Reply to a ticket |
| Suspend a hosting service on its server |
| Lift a suspension |
Without the flag the write tools are not merely hidden — calling one is refused before any HTTP happens. An assistant wired up for reporting cannot even see a suspend button. Give a reporting setup a read-only life by simply not setting the flag.
4. Security notes
The secret only ever travels between the machine running your AI client and your PNLCS install, over the same HTTPS API your admin screens use. It is never sent to the model provider; the model sees tool results.
Prefer a dedicated API credential for MCP so you can revoke it alone.
PNLCS rate-limits API credentials (300 requests/minute per credential), so a runaway agent cannot hammer your install.
Keep
PNLCS_ALLOW_WRITESoff unless you actually want the assistant acting on your books, and read what it proposes before approving tool calls that create or change things.
5. Troubleshooting
Symptom | Cause |
Every tool answers | One of the three variables is missing from the client config |
Every tool answers | Identifier/secret pair is wrong, or the credential was deactivated |
| The install is unreachable from this machine — check the URL and any firewall |
Tools missing in the client | Restart the client after editing its config; check its MCP log for the stderr line above |
Write tools missing | That is the default — set |
6. Tests
npm test runs the offline suite: it spawns the real server process, speaks
the real protocol to it, and checks every tool's HTTP shape against a local
stub — plus the write-gate in both directions, batch requests from older
protocol revisions, version negotiation, timeouts and shutdown draining.
node test/live.mjs runs every tool against a real install — point it at
a demo, never at production books; it creates clearly-named disposable data
for the write tools and prints one PASS/FAIL line per tool.
Development
This package is developed inside the PNLCS monorepo
under mcp/; this repository is its standalone distribution mirror and always
matches the version published on npm.
This server cannot be installed
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 Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage WHM hosting accounts and server administration tasks including account management, server stats, updates, SSL, backups, and email through a secure API.10
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to administrate WHMCS installations through the External API, providing ~50 tools for clients, billing, orders, services, domains, support, and aggregators with safety features and governance.392ISC
- AlicenseBqualityBmaintenanceEnables AI assistants to manage invoices, clients, companies, and ANAF e-Factura through the Storno.ro e-invoicing API.1008Elastic 2.0
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage cPanel hosting accounts including DNS, email, databases, SSL, files, security, and more through natural language using cPanel's UAPI and API2.
Related MCP Connectors
Peru CPE invoices for AI agents - issue, query, void facturas/boletas via SUNAT (2 backends).
Let AI agents add Yolfi crypto checkout, paylinks, webhooks, and status checks.
Chilean DTE/SII invoicing — issue invoices, reconcile payments and manage clients with AI agents.
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/Panelica/pnlcs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server