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 subject -
description(string, required): Ticket description -
source(number, required): Ticket source code -
priority(number, required): Ticket priority level -
status(number, required): Ticket status code -
email(string, optional): Email of the requester -
requester_id(number, optional): ID of the requester -
custom_fields(object, optional): Custom fields to set on the ticket -
additional_fields(object, optional): Additional top-level fields
-
-
Inputs:
-
update_ticket: Update existing tickets-
Inputs:
-
ticket_id(number, required): ID of the ticket to update -
ticket_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 fetch -
per_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 ticket -
body(string, required): Content of the reply
-
-
Inputs:
-
create_ticket_note: Add a note to a ticket-
Inputs:
-
ticket_id(number, required): ID of the ticket -
body(string, required): Content of the note
-
-
Inputs:
-
update_ticket_conversation: Update a conversation-
Inputs:
-
conversation_id(number, required): ID of the conversation -
body(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 ticket -
body(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 number -
per_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 agent -
agent_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 number -
per_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 contact -
contact_fields(object, required): Fields to update
-
-
Inputs:
-
list_companies: Get all companies-
Inputs:
-
page(number, optional): Page number -
per_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
-
uvxinstalled (pip install uvorbrew 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_KEYwith your actual Freshdesk API key - Replace
YOUR_FRESHDESK_DOMAINwith 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 a101@acme.com 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
uvxcommand 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.