An MCP server implementation that integrates with Freshdesk, enabling AI models to interact with Freshdesk modules and perform various support operations.
- Freshdesk Integration: Seamless interaction with Freshdesk API endpoints
- AI Model Support: Enables AI models to perform support operations through Freshdesk
- Automated Ticket Management: Handle ticket creation, updates, and responses
The server offers several tools for Freshdesk operations:
-
create_ticket
: Create new support tickets- Inputs:
subject
(string, required): Ticket subjectdescription
(string, required): Ticket descriptionsource
(number, required): Ticket source codepriority
(number, required): Ticket priority levelstatus
(number, required): Ticket status codeemail
(string, optional): Email of the requesterrequester_id
(number, optional): ID of the requestercustom_fields
(object, optional): Custom fields to set on the ticketadditional_fields
(object, optional): Additional top-level fields
- Inputs:
-
update_ticket
: Update existing tickets- Inputs:
ticket_id
(number, required): ID of the ticket to updateticket_fields
(object, required): Fields to update
- Inputs:
-
delete_ticket
: Delete a ticket- Inputs:
ticket_id
(number, required): ID of the ticket to delete
- Inputs:
-
search_tickets
: Search for tickets based on criteria- Inputs:
query
(string, required): Search query string
- Inputs:
-
get_ticket_fields
: Get all ticket fields- Inputs:
- None
- Inputs:
-
get_tickets
: Get all tickets- Inputs:
page
(number, optional): Page number to fetchper_page
(number, optional): Number of tickets per page
- Inputs:
-
get_ticket
: Get a single ticket- Inputs:
ticket_id
(number, required): ID of the ticket to get
- Inputs:
-
get_ticket_conversation
: Get conversation for a ticket- Inputs:
ticket_id
(number, required): ID of the ticket
- Inputs:
-
create_ticket_reply
: Reply to a ticket- Inputs:
ticket_id
(number, required): ID of the ticketbody
(string, required): Content of the reply
- Inputs:
-
create_ticket_note
: Add a note to a ticket- Inputs:
ticket_id
(number, required): ID of the ticketbody
(string, required): Content of the note
- Inputs:
-
update_ticket_conversation
: Update a conversation- Inputs:
conversation_id
(number, required): ID of the conversationbody
(string, required): Updated content
- Inputs:
-
view_ticket_summary
: Get the summary of a ticket- Inputs:
ticket_id
(number, required): ID of the ticket
- Inputs:
-
update_ticket_summary
: Update the summary of a ticket- Inputs:
ticket_id
(number, required): ID of the ticketbody
(string, required): New summary content
- Inputs:
-
delete_ticket_summary
: Delete the summary of a ticket- Inputs:
ticket_id
(number, required): ID of the ticket
- Inputs:
-
get_agents
: Get all agents- Inputs:
page
(number, optional): Page numberper_page
(number, optional): Number of agents per page
- Inputs:
-
view_agent
: Get a single agent- Inputs:
agent_id
(number, required): ID of the agent
- Inputs:
-
create_agent
: Create a new agent- Inputs:
agent_fields
(object, required): Agent details
- Inputs:
-
update_agent
: Update an agent- Inputs:
agent_id
(number, required): ID of the agentagent_fields
(object, required): Fields to update
- Inputs:
-
search_agents
: Search for agents- Inputs:
query
(string, required): Search query
- Inputs:
-
list_contacts
: Get all contacts- Inputs:
page
(number, optional): Page numberper_page
(number, optional): Contacts per page
- Inputs:
-
get_contact
: Get a single contact- Inputs:
contact_id
(number, required): ID of the contact
- Inputs:
-
search_contacts
: Search for contacts- Inputs:
query
(string, required): Search query
- Inputs:
-
update_contact
: Update a contact- Inputs:
contact_id
(number, required): ID of the contactcontact_fields
(object, required): Fields to update
- Inputs:
-
list_companies
: Get all companies- Inputs:
page
(number, optional): Page numberper_page
(number, optional): Companies per page
- Inputs:
-
view_company
: Get a single company- Inputs:
company_id
(number, required): ID of the company
- Inputs:
-
search_companies
: Search for companies- Inputs:
query
(string, required): Search query
- Inputs:
-
find_company_by_name
: Find a company by name- Inputs:
name
(string, required): Company name
- Inputs:
-
list_company_fields
: Get all company fields- Inputs:
- None
- Inputs:
To install freshdesk_mcp for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @effytech/freshdesk_mcp --client claude
- A Freshdesk account (sign up at freshdesk.com)
- Freshdesk API key
uvx
installed (pip install uv
orbrew install uv
)
- Generate your Freshdesk API key from the Freshdesk admin panel
- Set up your domain and authentication details
- Install Claude Desktop if you haven't already
- Add the following configuration to your
claude_desktop_config.json
:
"mcpServers": {
"freshdesk-mcp": {
"command": "uvx",
"args": [
"freshdesk-mcp"
],
"env": {
"FRESHDESK_API_KEY": "<YOUR_FRESHDESK_API_KEY>",
"FRESHDESK_DOMAIN": "<YOUR_FRESHDESK_DOMAIN>"
}
}
}
Important Notes:
- Replace
YOUR_FRESHDESK_API_KEY
with your actual Freshdesk API key - Replace
YOUR_FRESHDESK_DOMAIN
with your Freshdesk domain (e.g.,yourcompany.freshdesk.com
)
Once configured, you can ask Claude to perform operations like:
- "Create a new ticket with subject 'Payment Issue for customer A101' and description as 'Reaching out for a payment issue in the last month for customer A101', where customer email is [email protected] and set priority to high"
- "Update the status of ticket #12345 to 'Resolved'"
- "List all high-priority tickets assigned to the agent John Doe"
- "List previous tickets of customer A101 in last 30 days"
For testing purposes, you can start the server manually:
uvx freshdesk-mcp --env FRESHDESK_API_KEY=<your_api_key> --env FRESHDESK_DOMAIN=<your_domain>
- Verify your Freshdesk API key and domain are correct
- Ensure proper network connectivity to Freshdesk servers
- Check API rate limits and quotas
- Verify the
uvx
command is available in your PATH
This MCP server is licensed under the MIT License. See the LICENSE file in the project repository for full details.