Freshdesk MCP Server
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., "@Freshdesk MCP Serversearch open tickets for Acme Corp and summarize the latest conversations"
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.
Freshdesk MCP Server
An MCP server for the Freshdesk API v2. It lets an AI agent search and read tickets and their conversations, contacts, companies, agents, groups, the knowledge base (solutions), SLA policies, business hours and canned responses and, on explicit request, create and update records, reply to tickets, add notes and (with confirmation) delete, merge or convert records.
Transport: MCP Streamable HTTP at
POST /mcp, health probe atGET /healthStateless and multi-tenant: credentials arrive on every request as HTTP headers and are never stored; every tool is listed from the first
tools/listPython 3.12, uv, FastMCP, httpx
License: Apache-2.0, Copyright 2026 MSPbots.ai
Authentication headers
Header | Required | Type | Default | Allowed values | Description | Example |
| Yes | string | none | subdomain, | The account's Freshdesk subdomain |
|
| Yes | string | none | - | API key of the agent the server acts as |
|
Where to get them: the subdomain is the acme in https://acme.freshdesk.com. The API key is
under Profile settings -> View API Key of the agent whose permissions the agent should have;
every action is performed, and audited, as that agent.
How the key is sent to Freshdesk: every call goes to https://{subdomain}.freshdesk.com/api/v2/...
with HTTP Basic authentication (the API key as user name, X as password). Only
freshdesk.com accounts are accepted, so the key is never sent to another host.
A request to /mcp without both headers gets HTTP 401 naming the missing one; a domain that is
not a Freshdesk account gets HTTP 400.
Related MCP server: TicketDesk MCP
Tools
All tools return a JSON string. List tools take page and perPage (max 100) and return
{count, page, has_more, next_page}; search tools return 30 results per page for at most 10
pages. Ticket status: 2 Open, 3 Pending, 4 Resolved, 5 Closed; priority: 1 Low, 2 Medium,
3 High, 4 Urgent. write marks tools that change data; confirm marks tools that also
need confirm: true.
Area | Tools |
Discovery |
|
Tickets |
|
Contacts |
|
Companies |
|
Agents |
|
Groups |
|
Knowledge base |
|
SLA and setup |
|
Errors come back as a JSON envelope instead of an exception:
{"error": {"code": "invalid_argument", "message": "Freshdesk returned HTTP 400 for contacts: Validation failed - email: It should be a valid email address", "retryable": false}}code is one of not_configured, unauthorized, not_found, invalid_argument,
rate_limited, upstream_error; Freshdesk's per-field validation messages are kept. Reads
are retried with backoff on 429, 5xx and network errors; writes only on 429 (honouring
Retry-After). Freshdesk limits API calls per minute according to the plan.
Run locally
uv sync
uv run python -m freshdesk_mcp # listens on 0.0.0.0:8080or with Docker:
docker build --platform linux/amd64 -t freshdesk-mcp:dev .
docker run --rm -p 8080:8080 freshdesk-mcp:devConfiguration (environment variables, all optional): MCP_HTTP_HOST (default 0.0.0.0),
MCP_HTTP_PORT (default 8080), LOG_LEVEL (default INFO). Credentials are never read
from the environment.
Testing example
# list tools
curl -s http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Freshdesk-Domain: acme" \
-H "X-Freshdesk-Api-Key: your-freshdesk-api-key" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# open urgent tickets
curl -s http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Freshdesk-Domain: acme" \
-H "X-Freshdesk-Api-Key: your-freshdesk-api-key" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"freshdesk_tickets_search","arguments":{"query":"status:2 AND priority:4"}}}'Unit tests (no network access needed):
uv run pytestDelivery notes
Tool count (66). Kept as is because the tool names are an existing contract; every tool is listed from the first
tools/list.Confirmation for irreversible actions. Older versions asked the user to confirm deletes mid-call and carried on when the client could not show the prompt, which is always the case behind a stateless gateway. The 12 delete / merge / make-agent tools now need
confirm: trueand otherwise return a "not done" result describing the action.Fixes against the Freshdesk API reference.
freshdesk_contacts_send_invitenow uses PUT (the documented method);freshdesk_agents_createsends the agenttypeas Freshdesk's numericagent_type(support_agent 1, field_agent 2, collaborator 3) instead of an unknowntypefield.Search. Queries are wrapped in the double quotes Freshdesk requires; string values inside take single quotes (
tag:'vip').Notes default to private; replies email the requester, which the description states.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.
Read tickets, users, orgs, macros and satisfaction ratings; create, update and comment on tickets.
Helpdesk tickets from your AI: find, reply, take, hold, complete — within your own role. OAuth.
List, search, create, update, and reply to support tickets across your Dispatch Tickets brands.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to retrieve customer, order, ticket, policy, and agreement information, and to prepare or execute state-changing support actions like escalations and follow-ups with confirmation and access control.-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and retrieve support tickets, add notes, close tickets, and access SLA policies through MCP tools, resources, and prompts over Streamable HTTP.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to query and operate a help desk and service desk through MCP over HTTP, including tickets, requester communications, internal notes, attachments, stage and SLA history, time entries, clients, requesters, desks, knowledge base, contracts, and billing/satisfaction reports.MIT
- FlicenseNot gradedqualityAmaintenanceEnables users to retrieve and manage tickets and comments, and to search Help Center articles as a knowledge base from an AI client. Includes prompts for analyzing tickets and drafting responses, with per-operator OAuth authentication so each person's own Zendesk permissions apply.-