Searches, drafts and updates tickets and Help Center articles — the whole loop rather than a read-only view of the queue.
Customer support desk
Reads the ticket, finds whether it is a bug or a billing question, and drafts the reply in your own voice.
Built for: The support lead who spends half of every ticket deciding which team it belongs to.
The button opens the checkout, where the 7 servers and 4 skills are listed one by one. Every member is free, so the checkout lists them and asks for no card.
What your agent can do with this
The reason to buy a stack rather than five listings: each line below needs more than one member connected at the same time.
- 01
Search and update tickets and Help Center articles in Zendesk or Freshdesk, end to end.
- 02
Check whether the customer's error is a known issue in Sentry before promising them a fix.
- 03
Answer a billing question from Stripe's own revenue and subscription data rather than from a guess.
- 04
Draft the reply and strip the tells that make a support answer read as machine-written.
The assembly, part by part
What each part contributes, and why it was picked over the obvious alternative. Prices and permissions are read from the listings, so nothing here can disagree with the catalogue.
The same ticket work for teams on Freshdesk, over stdio or streamable HTTP.
The half of support that never became a ticket, read with scope-gated access rather than a full mailbox token.
The community channel where problems appear before they are reported, across guilds and with the tools to answer there.
Tells support whether the customer's error is known, how often it happens and which release it started in.
The internal knowledge base the answer is supposed to come from, so replies converge instead of each agent inventing one.
Revenue, subscriptions, refunds and churn from Stripe, so a billing question is answered from the account rather than escalated.
Deliverability and authentication done properly, because the support reply that lands in spam is indistinguishable from the one nobody sent.
The lookup for SSO and identity questions — the exact field, endpoint or environment variable — instead of a guess about somebody else's dashboard.
Generates the payment link when the answer to the ticket is that something needs paying for, without handing the desk a live key.
Removes the patterns that make a reply read as generated, which matters more in support than anywhere else on this site.
What it costs, and on what assumption
Every member is free, so the monthly figure is $0 whatever you do with the stack: nothing here is billed by the call, and only adding a paid member could change it.
| Part | What you are paying for | Monthly, as quoted |
|---|---|---|
| Zendesk | Free | — |
| Freshdesk | Free | — |
| Gmail | Free | — |
| Discord | Free | — |
| Sentry | Free | — |
| Notion | Free | — |
| Stripe Analytics | Free | — |
| Skills | ||
| email-best-practices | Free · context cost only | — |
| WorkOS | Free · context cost only | — |
| Payment | Free · context cost only | — |
| Stop Slop | Free · context cost only | — |
| Everything above | $0 of servers plus $0 of skills, the same in a quiet month and a busy one | $0/mo |
Subscriptions at their monthly plan price; one-off licences spread over 12 months.
Install only these and the bill is nothing: 7 servers and 4 skills, and all 44 tools.
Nothing in this stack carries a call allowance, so nothing here can run out before the month does. The bill is decided when you install it, not when you use it.
The spend cap is one figure for the whole account, set in your dashboard and checked when an order is placed. On the call path what stops a retry loop is the plan's call allowance and its rate limit, and a refused call is never billed.
Setting it up, in order
The steps below come before the install lines: what to decide and scope before connecting anything, in the order it matters. The lines themselves follow, part by part, for the client you pick.
npx mcprush@latest stack add support-desk writes all 7 servers into Claude Code’s config in one go — or run the lines below one by one. The 4 skills are not included — add them with lines 08–11.
- Zendesk
ZENDESK_SUBDOMAIN— Zendesk subdomain, used when no positional subdomain argument is givenZENDESK_EMAIL— Email of the Zendesk agent the token belongs toZENDESK_API_TOKEN— Zendesk API token (Admin Center → Apps and integrations → Zendesk API)- Freshdesk
FRESHDESK_API_KEY— Your Freshdesk API key (Profile settings)FRESHDESK_DOMAIN— Your Freshdesk domain, e.g. yourcompany.freshdesk.com- Discord
DISCORD_TOKEN— Discord bot token- Sentry
SENTRY_ACCESS_TOKEN— Your Sentry user authentication token- Notion
NOTION_API_TOKEN— Notion integration token (notion.so/my-integrations)- Stripe Analytics
STRIPE_SECRET_KEY— Your Stripe secret API key
Set them where you start Claude Code — export ZENDESK_SUBDOMAIN=… in your shell profile on macOS and Linux, setx ZENDESK_SUBDOMAIN "…" on Windows, then open a new terminal. Claude Code reads them at start; the config keeps only the names.
Gmail needs one step before it answers — run this once, on its own:
npx -y @klodr/gmail-mcp auth# 01 · Zendesk
claude mcp add --scope user --env 'ZENDESK_SUBDOMAIN=${ZENDESK_SUBDOMAIN}' --env 'ZENDESK_EMAIL=${ZENDESK_EMAIL}' --env 'ZENDESK_API_TOKEN=${ZENDESK_API_TOKEN}' --transport stdio zendesk-mcp '--' npx -y @fruggr/zendesk-mcp-server
# 02 · Freshdesk
claude mcp add --scope user --env 'FRESHDESK_API_KEY=${FRESHDESK_API_KEY}' --env 'FRESHDESK_DOMAIN=${FRESHDESK_DOMAIN}' --transport stdio freshdesk-mcp '--' npx -y freshdesk-mcp
# 03 · Gmail
claude mcp add --scope user gmail-mcp '--' npx -y @klodr/gmail-mcp
# 04 · Discord
claude mcp add --scope user --env 'DISCORD_TOKEN=${DISCORD_TOKEN}' --transport stdio discord-mcp '--' npx -y @pasympa/discord-mcp
# 05 · Sentry
claude mcp add --scope user --env 'SENTRY_ACCESS_TOKEN=${SENTRY_ACCESS_TOKEN}' --transport stdio getsentry-sentry-mcp '--' npx -y @sentry/mcp-server
# 06 · Notion
claude mcp add --scope user --env 'NOTION_API_TOKEN=${NOTION_API_TOKEN}' --transport stdio notion-mcp '--' npx -y @suekou/mcp-notion-server
# 07 · Stripe Analytics
claude mcp add --scope user --env 'STRIPE_SECRET_KEY=${STRIPE_SECRET_KEY}' --transport stdio stripe-analytics-mcp '--' npx -y mcp-stripe-analytics
# 08 · email-best-practices
npx mcprush@latest skill add resend/email-best-practices
# 09 · WorkOS
npx mcprush@latest skill add workos/workos
# 10 · Payment
npx mcprush@latest skill add second-state/payment
# 11 · Stop Slop
npx mcprush@latest skill add hardikpandya/stop-slopRequirements and Windows tips
- Node.js — the current LTS (24) is the safe choice (for
npx). - Windows PowerShell says 'running scripts is disabled on this system'? Run
Set-ExecutionPolicy -Scope CurrentUser RemoteSignedonce, or typenpx.cmdinstead ofnpx(codex.cmd,gemini.cmd,grok.cmdlikewise). PowerShell 7 needs neither.
Nothing is connected until you approve it in Claude Code. mcprush is not in the path and meters nothing here.
- 1 member authorises over OAuth — you are sent to their consent screen once each.
- 3 members want an API key, set in your own client’s config on your machine — this marketplace never holds it.
- 3 members have not declared what credential they need — check each one’s own page before you start.
- What this stack can write is not recorded — 5 members of 7 have no imported tool surface. Section 05 says what is known before you approve anything.
- 7 members are connected straight from their own package or address — nothing in them goes through mcprush.
What the whole stack can reach
Installed together, these tool surfaces add up. It is the first thing a security reviewer asks for, so what has been counted — and what nobody has counted yet — is on the page rather than in a PDF.
| Member | Tool surface | Write tools |
|---|---|---|
| Gmail | imported | 22 |
| Discord | not imported | not recorded |
| Freshdesk | not imported | not recorded |
| Notion | not imported | not recorded |
| Sentry | not imported | not recorded |
| Zendesk | not imported | not recorded |
A stack's blast radius is the union of its members, not the worst of them. That union cannot be taken here, because 5 members of 7 have no imported tool surface — so the figure a review asks for is missing rather than low, and a member marked not imported is one nobody has counted rather than one that cannot write.
Sensible swaps
A stack is a default, not a verdict. These are the substitutions the maintainer would make, and what each one costs or saves.
Where the internal knowledge base is a Confluence space, the answers come from there and support stops keeping a second copy.
Where support arrives by SMS rather than in a community channel, the messaging server replaces the chat one and the reply path stays a single tool.
Where this stack stops
Written by the maintainer, kept on the page rather than in a support thread.
It cannot issue a refund. The billing member here reads revenue, customers and churn; moving money is outside it, deliberately.
It does not close tickets on its own. Drafts and findings come out; sending a reply to a customer is a person's decision.
It is not the account system. Identity questions are looked up, not changed — a password or an SSO setting is fixed in the tool that owns it.
Who keeps this current
A stack has an owner: whoever keeps it re-checks the combination when a member changes, and the members themselves are published by the people named on each row.
Stacks that share parts with this one
On-call
Tools to investigate alerts, check recent changes and follow the runbook.
Sales desk
Researches the account, writes the sequence, keeps the CRM current, and books the meeting without four tabs.
Personal desk
One place for the notes, the tasks, the calendar and the inbox, with a memory that survives the session.