Freshdesk MCP Server
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
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