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 Server Show me tickets assigned to me"
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
A Model Context Protocol (MCP) server that exposes Freshdesk helpdesk operations as callable tools. It provides full ticket lifecycle management, two-phase draft/send for replies and notes, contact lookup, and agent/group discovery — all through a standard MCP interface compatible with any MCP client.
Features
14 tools covering tickets, replies, notes, contacts, groups, and agents
Two-phase draft/send pattern for replies and notes — review before posting
Custom fields support on ticket create and update
Predefined filters and full query-syntax search for tickets
Client-agnostic: works with any MCP-compatible host
Related MCP server: Freshdesk MCP Server
Prerequisites
Node.js 18 or later
A Freshdesk account with API access
Getting Your API Key
Log in to your Freshdesk account
Click your avatar in the top-right corner and select Profile Settings
Your API key is displayed in the right sidebar under Your API Key
Installation
git clone https://github.com/ArcaneSK/freshdesk-mcp-server.git
cd freshdesk-mcp-server
npm install
npm run buildEnvironment Setup
Copy the example environment file and fill in your credentials:
cp .env.example .envEdit .env with your values:
FRESHDESK_API_KEY=your_api_key_here
FRESHDESK_DOMAIN=your_subdomainVariable | Description | Example |
| Your Freshdesk API key (see Getting Your API Key) |
|
| Your Freshdesk subdomain — if your URL is |
|
Claude Desktop Configuration
Add the following to your Claude Desktop claude_desktop_config.json, replacing the path with your actual install location:
{
"mcpServers": {
"freshdesk": {
"command": "node",
"args": ["/path/to/freshdesk-mcp-server/dist/index.js"],
"env": {
"FRESHDESK_API_KEY": "your_api_key",
"FRESHDESK_DOMAIN": "your_subdomain"
}
}
}
}Set FRESHDESK_DOMAIN to your Freshdesk subdomain only — for example, if your helpdesk URL is https://acme.freshdesk.com, use acme.
Tools Reference
Tool | Description | Key Inputs |
| List tickets using predefined filters |
|
| Search tickets using Freshdesk query syntax |
|
| Retrieve a single ticket with all fields |
|
| Create a new ticket |
|
| Update ticket fields |
|
| Move a ticket to trash |
|
| Stage a reply for review (does not send) |
|
| Send a previously drafted reply |
|
| Stage a note for review (does not post) |
|
| Post a previously drafted note |
|
| List contacts by email or search term |
|
| Get full contact details by ID |
|
| List all agent groups |
|
| List agents, optionally filtered by group |
|
Two-Phase Draft/Send
Replies and notes use a two-step confirmation pattern to prevent accidental sends:
Call
draft_replyordraft_notewith the content. The tool returns adraft_idand a preview of the content — nothing is sent to Freshdesk.Review the draft, then call
send_replyorsend_notewith thedraft_idto post it.
Drafts are held in memory with a 10-minute expiration window. Each draft can only be sent once. If a draft expires, create a new one.
Development
# Clone and install
git clone https://github.com/ArcaneSK/freshdesk-mcp-server.git
cd freshdesk-mcp-server
npm install
# Build
npm run build
# Run tests
npm test
# Watch mode (TypeScript)
npm run devLicense
MIT
Available Tools
14 toolscreate_ticketA
Create a new Freshdesk ticket. Requires email or requester_id, subject, and description.
Inputs: subject (required), description (required), tags, type, +7 more.
delete_ticketA
Soft-delete a ticket (moves to trash).
Inputs: ticket_id (required).
draft_noteA
Draft a private or public note on a ticket for review. Does NOT post — call send_note with the returned draft_id to post.
Inputs: body (required), ticket_id (required), private.
draft_replyA
Draft a reply to a ticket for review. Does NOT send — call send_reply with the returned draft_id to send.
Inputs: body (required), ticket_id (required), cc_emails, from_email.
get_contactA
Get full details of a contact by ID.
Inputs: contact_id (required).
get_ticketA
Get a single ticket with all fields and custom fields. Optionally include conversations, requester, stats.
Inputs: ticket_id (required), include.
list_agentsB
List agents, optionally filtered by group.
Inputs: page, group_id, per_page.
list_contactsB
List contacts by email or search by name/phone. Use email for exact match, search_term for autocomplete.
Inputs: page, email, per_page, search_term.
list_groupsC
List all agent groups.
Inputs: page, per_page.
list_ticketsB
List tickets using Freshdesk predefined filters. Defaults to all tickets.
Inputs: page, email, filter, order_by, +5 more.
search_ticketsA
Search tickets using Freshdesk query syntax. Max 512 chars, 300 results, excludes archived.
Inputs: query (required).
send_noteA
Post a previously drafted note. Requires a draft_id from draft_note.
Inputs: draft_id (required).
send_replyB
Send a previously drafted reply. Requires a draft_id from draft_reply.
Inputs: draft_id (required).
update_ticketC
Update ticket fields including status, priority, assignee, tags, and custom fields.
Inputs: ticket_id (required), tags, type, status, +6 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 14 tools
Each tool targets a distinct resource-action pair (tickets, contacts, agents, groups) with clear boundaries. Even search_tickets and list_tickets differ by query method vs. predefined filters, and draft/send pairs are explicitly linked via draft_id.
All tool names follow the verb_noun snake_case pattern (search_, list_, get_, create_, update_, delete_, draft_, send_) with consistent noun usage. No camelCase or mixed conventions.
14 tools is well within the typical 3-15 range and each tool covers a meaningful operation for the Freshdesk domain. The count feels proportionate to the server's scope without redundancy.
Ticket lifecycle (CRUD + search/list) and reply/note workflows are fully covered. Minor gaps exist for contacts (only list/get, no create/update/delete) and agents/groups (read-only), but the core helpdesk use case is well supported.
Maintenance
Related MCP Connectors
Freshdesk MCP Pack — helpdesk ticket and contact management via Freshdesk API v2.
Read tickets, contacts, companies, agents and groups; create, update and reply to tickets.
Zendesk MCP Pack — tickets, users, organizations via OAuth.
Search tickets, people, organizations and KB articles in Deskpro, and create tickets and replies.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Freshdesk API v2 to manage support tickets, contacts, agents, companies, and conversations with built-in authentication, rate limiting, and error handling.250 npm12MIT
- AlicenseBqualityCmaintenanceEnables AI agents to interact with Freshdesk, supporting ticket management, customer and company operations, agent lookup, and knowledge base search through natural language.19MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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 retrieval and management of tickets and comments, ticket analysis and response drafting, and access to Help Center articles as a knowledge base via MCP.-