support-system-mcp-server
v1.0.0
Published
MCP server for the Support System: tickets, replies, statistics, apps, subjects, FAQs and users.
Readme
support-system-mcp-server
An MCP server that lets Claude (or any MCP client) run your support desk: read and answer tickets, close them, check statistics, and edit apps, subjects, FAQs and users.
It talks to your Support System backend over its REST API and runs locally over stdio.
Credentials
Pick one:
| Variable | Gives access to | Use when |
|---|---|---|
| SUPPORT_APP_KEY | every app (the server's APP_KEY) | you manage all your sites from one place |
| SUPPORT_APP_TOKEN | one app: "<app_id>.<app_secret>" | you want to limit the assistant to one site |
Also set:
| Variable | |
|---|---|
| SUPPORT_API_URL | required — your backend root, e.g. https://tickets.partnex.in |
| SUPPORT_DEFAULT_APP_ID | optional (with SUPPORT_APP_KEY) — app used when a request doesn't name one |
SUPPORT_APP_KEY has full control of the server (create/delete apps, rotate secrets). Keep it in the MCP config only, never in a repository.
Install
From the repo root:
npm installClaude Code
claude mcp add support -e SUPPORT_API_URL=https://tickets.partnex.in -e SUPPORT_APP_KEY=your-app-key -- node /path/to/support-system/mcp/src/index.jsClaude Desktop
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"support": {
"command": "node",
"args": ["C:/projects/support-system/mcp/src/index.js"],
"env": {
"SUPPORT_API_URL": "https://tickets.partnex.in",
"SUPPORT_APP_KEY": "your-app-key",
"SUPPORT_DEFAULT_APP_ID": "app_xxxxxxxx"
}
}
}
}For a single site, replace SUPPORT_APP_KEY with "SUPPORT_APP_TOKEN": "app_xxx.sk_xxx".
After publishing the package to npm you can use "command": "npx", "args": ["-y", "support-system-mcp-server"] instead.
Tools
| Area | Tools |
|---|---|
| Apps | support_list_apps, support_get_app, support_update_app (name, accent, colour mode, greeting, reply signature, position, ticket rules, allowed websites, email sender, enable/disable), support_create_app, support_rotate_app_secret, support_delete_app |
| Statistics | support_get_stats — open / awaiting / oldest, today's new and closed tickets, 7 & 30-day volume, response times, users, daily series |
| Tickets | support_list_tickets, support_get_ticket, support_reply_to_ticket (with local file attachments and optional close), support_close_ticket, support_set_ticket_status (reopen etc.), support_rename_ticket, support_delete_ticket |
| Subjects & fields | support_list_categories, support_add_category, support_update_category, support_delete_category, support_replace_categories |
| FAQs | support_list_faqs, support_create_faq, support_update_faq, support_delete_faq |
| Users | support_list_users, support_sign_out_user |
support_create_app, support_rotate_app_secret, support_delete_app and enabling/disabling an app need SUPPORT_APP_KEY.
Every tool is annotated (read-only / destructive), so clients can auto-approve reads and ask before deletes.
Read tools accept response_format: "json" for structured output.
Things you can ask
- "Which tickets on World Of Ai are waiting for a reply?"
- "Read ticket #1002 and reply that the prompt book is attached, attach C:/docs/prompt-book.pdf, then close it."
- "How many tickets were opened and closed today on all my apps? Use Asia/Kolkata time."
- "Switch the widget to royal blue in light mode and sign replies as Prasad."
- "Add a Payment subject with a required dropdown 'Please select payment method': Card, PayPal, UPI."
- "Unpublish the FAQ about refunds."
Check it works
SUPPORT_API_URL=https://tickets.partnex.in SUPPORT_APP_KEY=... npm run smoke -w mcpThe self-check starts the server, lists tools and calls the read-only ones. It changes nothing.
For an interactive UI: npx @modelcontextprotocol/inspector node mcp/src/index.js (set the same environment variables).
