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
 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 [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 
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.