Skip to main content
Glama
Freshdesk MCP Server

Freshdesk MCP Server

by Sidd07Dev

Freshdesk MCP Server

Hey! This is a custom Model Context Protocol (MCP) server for Freshdesk. It's built on top of FastMCP to let your AI agents (like Claude Desktop or custom LangChain setups) read and write directly to your Freshdesk account.

What can it do?

I've packed in a bunch of tools so the AI can handle almost any helpdesk task:

Tickets & Responses

  • get_tickets: Search and filter incoming tickets.

  • get_ticket: Pull all details for a specific ticket.

  • create_ticket: Open a new support ticket.

  • update_ticket: Change status or priority.

  • delete_ticket: Trash a ticket (be careful with this one).

  • reply_ticket: Send a reply to the customer.

  • add_note: Drop an internal or public note on a thread.

  • list_conversations: Grab the entire back-and-forth history of a ticket.

  • create_outbound_email: Send proactive emails (fully supports CC, BCC, tags, and custom fields).

Customers & Companies

  • search_contacts: Look up customers by email or phone.

  • get_contact / create_contact / update_contact: Manage your user base.

  • get_company / create_company: Manage companies.

Agents & Knowledge Base

  • list_agents / get_agent: See who is working on what.

  • search_solution_articles / get_solution_article: Let the AI search your help docs so it can answer questions better.

Related MCP server: Freshservice MCP Server

How to run it locally

If you just want to run this locally on your own machine (like inside Claude Desktop), it's super simple:

  1. Clone this repo and set up your environment:

    python -m venv venv
    source venv/bin/activate
    pip install -e .
  2. Copy the .env.example file to .env and drop in your Freshdesk domain and API key.

  3. Start it up:

    mcp dev src/freshdesk_mcp/server.py

Running it on a Network (Secure JWT Auth)

If you're hosting this on a cloud server so multiple remote agents can talk to it, you don't want just anyone hitting your API. I built a lightweight, database-free JWT authentication layer over the SSE connection to keep it safe.

Here's how to use it:

  1. In your .env, set up your JWT_SECRET_KEY and define who is allowed to connect using ALLOWED_CLIENTS=agent1:pass123,agent2:secure456.

  2. Run the secure server wrapper:

    python -m freshdesk_mcp.serve
  3. Your clients will first need to send a POST request to /token (using Basic Auth with their agent credentials) to get a 1-hour JWT.

  4. They can then connect to the main MCP stream by passing Authorization: Bearer <their_token> in the headers.

(Pro-tip: If you want to make sure an AI agent can only read data and doesn't accidentally delete anything, just set STRICT_MODE=True in your .env and it will lock down all destructive tools).

License

MIT License - feel free to use and modify it however you need!

Available Tools

19 tools
add_noteC

Add a note to a ticket. private=True means it is an internal note.

Inputs: body (required), ticket_id (required), private. Returns: result

create_companyC

Create a new company.

Inputs: name (required), description. Returns: result

create_contactC

Create a new customer contact.

Inputs: name (required), email (required), phone. Returns: result

create_outbound_emailC

Create and send an outbound email from Freshdesk. Supports cc, bcc, tags, and custom fields.

Inputs: email (required), subject (required), description (required), email_config_id (required), +7 more. Returns: result

create_ticketB

Create a new Freshdesk ticket. Priority: 1=Low, 2=Medium, 3=High, 4=Urgent. Status: 2=Open, 3=Pending, 4=Resolved, 5=Closed.

Inputs: email (required), subject (required), description (required), status, +1 more. Returns: result

delete_ticketC

Delete a specific ticket.

Inputs: ticket_id (required). Returns: result

get_agentC

Get specific agent details by ID.

Inputs: agent_id (required). Returns: result

get_companyC

Retrieve company details by ID.

Inputs: company_id (required). Returns: result

get_contactB

Retrieve contact details by ID.

Inputs: contact_id (required). Returns: result

get_solution_articleC

Retrieve the content of a specific knowledge base article.

Inputs: article_id (required). Returns: result

get_ticketB

Get detailed information about a specific ticket by ID.

Inputs: ticket_id (required). Returns: result

get_ticketsC

List tickets in Freshdesk. Optionally filter by requester email.

Inputs: page, email. Returns: result

list_agentsB

List support agents. Optionally filter by email.

Inputs: email. Returns: result

list_conversationsB

Fetch all replies and notes associated with a ticket.

Inputs: ticket_id (required). Returns: result

reply_ticketC

Reply to an existing ticket.

Inputs: body (required), ticket_id (required). Returns: result

search_contactsB

Find a contact by email, phone, or mobile.

Inputs: email, phone, mobile. Returns: result

search_solution_articlesC

Search for knowledge base articles by keyword.

Inputs: keyword (required). Returns: result

update_contactC

Update an existing contact's details.

Inputs: contact_id (required), name, email, phone. Returns: result

update_ticketC

Update a ticket's status or priority.

Inputs: ticket_id (required), status, priority. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 19 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action. While add_note, reply_ticket, and create_outbound_email all relate to ticket communication, their purposes are clearly separated: notes, replies, and outbound emails respectively. No two tools could be easily confused.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case, such as create_ticket, get_contact, list_agents. The verbs are consistently chosen (create, get, list, update, delete, search, reply, add) and the nouns are singular or plural as appropriate.

    Tool Count4/5

    With 19 tools, the server is slightly above the ideal range of 3-15, but each tool serves a distinct and necessary function within the Freshdesk domain. The count is justifiable given the variety of entities (tickets, contacts, companies, agents, knowledge base) and operations.

    Completeness4/5

    The tool set provides comprehensive coverage for tickets (CRUD, notes, replies, conversations, outbound emails). Contacts and companies have create, read, and update operations but lack delete and listing capabilities. Knowledge base supports search and retrieval but not curation. Overall, core workflows are well-supported with minor gaps.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      C
      maintenance
      Integrate AI models with Freshdesk to automate support operations. Create, update, and manage support tickets seamlessly through the Freshdesk API. Enhance your customer support experience with automated ticket management and AI-driven interactions.
      59
      71
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI models to interact with Freshservice IT service management platform, allowing automated ticket management, change requests, asset tracking, and solution article operations through natural language commands.
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables AI assistants to connect with Freshservice ITSM for managing tickets, assets, agents, and organizational data through natural language. It provides a comprehensive set of tools for performing CRUD operations on service desk records and searching across the Freshservice platform.
      53
      293 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides AI assistants with structured access to the Freshdesk customer support platform, including tickets, contacts, companies, agents, groups, knowledge base, and SLA configuration. Features decision-tree navigation and destructive-action guardrails.
      256 npm
      MIT