Freshdesk MCP Server (Nguyen Duc Hanh)
Freshdesk REST API operations exposed as tools for your MCP-capable LLM clients.
Data last scanned today · Reviewed today
Overview
This server bridges the Freshdesk public API with AI assistants, offering 194 distinct tools for managing tickets, contacts, agents, and business processes. It utilizes Zod validation to ensure inputs match official API requirements before execution, providing structured error feedback.
Our verdict
This project carries a high-risk security rating of 35/100, primarily due to the lack of a read-only mode, meaning all configurations grant full write access to your Freshdesk instance. Because it is community-maintained rather than official and lacks an editorially reviewed authentication process, it should be treated with caution. Use it only in environments where you have verified the underlying configuration and limited the API key permissions accordingly.
- Supports 194 distinct Freshdesk API endpoints
- Uses Zod for strict input validation
- Small footprint with only 3 direct dependencies
- Supports both stdio and Streamable HTTP transports
- Lacks a read-only mode for restricted API access
- No detected OAuth support for authentication
- Not maintained by the official Freshdesk vendor
- Low project visibility with only 3 GitHub stars
Setup
{
"mcpServers": {
"hashcott-freshdesk-mcp": {
"args": [
"-y",
"freshdesk-mcp"
],
"command": "npx"
}
}
}Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.
- No read-only mode — running this grants full read/write access.
- No built-in authentication — anyone with access to this config can invoke every tool it exposes.
Tools
| Tool | Description | Risk |
|---|---|---|
| get_ticket_fields | Get all ticket field definitions. | low |
| get_tickets | List tickets with pagination + filter support. | low |
| create_ticket | Create a ticket. | medium |
| update_ticket | Update a ticket (partial update; only provided fields are sent). | medium |
| delete_ticket | Soft-delete a ticket. | high |
| get_ticket | Get a single ticket. | low |
| search_tickets | Search tickets using Freshdesk filter syntax. | low |
| bulk_create_tickets | Bulk create up to 100 tickets. | medium |
| bulk_update_tickets | Bulk update tickets (ids + properties or reply). | medium |
| bulk_delete_tickets | Bulk delete tickets. | high |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf | ||||
| ChatGPT |
Frequently asked questions
›What are the system requirements for running this server?
This server requires Node.js version 18 or higher to function, as it utilizes the native fetch API.
›How do I configure the server credentials?
You must set the FRESHDESK_API_KEY and FRESHDESK_DOMAIN environment variables. The domain should be provided as your company's identifier, such as acme.freshdesk.com, without a scheme or trailing slash.
›What transport methods are supported?
The server supports both stdio transport for local clients like Claude Desktop and Cursor, as well as Streamable HTTP for remote or hosted environments.
›How can I check if the server is running when using HTTP mode?
You can perform a liveness check by sending a GET request to the /health endpoint, which returns an object with a status field.
›Does the server provide validation for API inputs?
Yes, the server performs strict Zod validation on all inputs before sending requests to the Freshdesk API, returning structured error messages if input is invalid.
Badge
Maintain this server? Add the live badge to your README.