Skip to main content
Glama
Freshdesk MCP Server

Freshdesk MCP Server

by ArcaneSK

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

  1. Log in to your Freshdesk account

  2. Click your avatar in the top-right corner and select Profile Settings

  3. 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 build

Environment Setup

Copy the example environment file and fill in your credentials:

cp .env.example .env

Edit .env with your values:

FRESHDESK_API_KEY=your_api_key_here
FRESHDESK_DOMAIN=your_subdomain

Variable

Description

Example

FRESHDESK_API_KEY

Your Freshdesk API key (see Getting Your API Key)

abcdef123456

FRESHDESK_DOMAIN

Your Freshdesk subdomain — if your URL is https://acme.freshdesk.com, use acme

acme

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

List tickets using predefined filters

filter, email, requester_id, page

search_tickets

Search tickets using Freshdesk query syntax

query (max 512 chars)

get_ticket

Retrieve a single ticket with all fields

ticket_id, include (conversations, requester, stats)

create_ticket

Create a new ticket

subject, description, email or requester_id

update_ticket

Update ticket fields

ticket_id, status, priority, responder_id, custom_fields

delete_ticket

Move a ticket to trash

ticket_id

draft_reply

Stage a reply for review (does not send)

ticket_id, body, cc_emails

send_reply

Send a previously drafted reply

draft_id

draft_note

Stage a note for review (does not post)

ticket_id, body, private

send_note

Post a previously drafted note

draft_id

list_contacts

List contacts by email or search term

email, search_term, page

get_contact

Get full contact details by ID

contact_id

list_groups

List all agent groups

page, per_page

list_agents

List agents, optionally filtered by group

group_id, page

Two-Phase Draft/Send

Replies and notes use a two-step confirmation pattern to prevent accidental sends:

  1. Call draft_reply or draft_note with the content. The tool returns a draft_id and a preview of the content — nothing is sent to Freshdesk.

  2. Review the draft, then call send_reply or send_note with the draft_id to 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 dev

License

MIT

Available Tools

14 tools
create_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

    A3.7/5.0

    Scored across 14 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      Enables AI agents to interact with Freshdesk, supporting ticket management, customer and company operations, agent lookup, and knowledge base search through natural language.
      19
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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