# Freshdesk MCP Server
[](https://smithery.ai/server/@effytech/freshdesk_mcp)
An MCP server implementation that integrates with Freshdesk, enabling AI models to interact with Freshdesk modules and perform various support operations.
## Features
- **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
## Components
### Tools
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
- `update_ticket`: Update existing tickets
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket to update
- `ticket_fields` (object, required): Fields to update
- `delete_ticket`: Delete a ticket
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket to delete
- `search_tickets`: Search for tickets based on criteria
- **Inputs**:
- `query` (string, required): Search query string
- `get_ticket_fields`: Get all ticket fields
- **Inputs**:
- None
- `get_tickets`: Get all tickets
- **Inputs**:
- `page` (number, optional): Page number to fetch
- `per_page` (number, optional): Number of tickets per page
- `get_ticket`: Get a single ticket
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket to get
- `get_ticket_conversation`: Get conversation for a ticket
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket
- `create_ticket_reply`: Reply to a ticket
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket
- `body` (string, required): Content of the reply
- `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
- `update_ticket_conversation`: Update a conversation
- **Inputs**:
- `conversation_id` (number, required): ID of the conversation
- `body` (string, required): Updated content
- `view_ticket_summary`: Get the summary of a ticket
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket
- `update_ticket_summary`: Update the summary of a ticket
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket
- `body` (string, required): New summary content
- `delete_ticket_summary`: Delete the summary of a ticket
- **Inputs**:
- `ticket_id` (number, required): ID of the ticket
- `get_agents`: Get all agents
- **Inputs**:
- `page` (number, optional): Page number
- `per_page` (number, optional): Number of agents per page
- `view_agent`: Get a single agent
- **Inputs**:
- `agent_id` (number, required): ID of the agent
- `create_agent`: Create a new agent
- **Inputs**:
- `agent_fields` (object, required): Agent details
- `update_agent`: Update an agent
- **Inputs**:
- `agent_id` (number, required): ID of the agent
- `agent_fields` (object, required): Fields to update
- `search_agents`: Search for agents
- **Inputs**:
- `query` (string, required): Search query
- `list_contacts`: Get all contacts
- **Inputs**:
- `page` (number, optional): Page number
- `per_page` (number, optional): Contacts per page
- `get_contact`: Get a single contact
- **Inputs**:
- `contact_id` (number, required): ID of the contact
- `search_contacts`: Search for contacts
- **Inputs**:
- `query` (string, required): Search query
- `update_contact`: Update a contact
- **Inputs**:
- `contact_id` (number, required): ID of the contact
- `contact_fields` (object, required): Fields to update
- `list_companies`: Get all companies
- **Inputs**:
- `page` (number, optional): Page number
- `per_page` (number, optional): Companies per page
- `view_company`: Get a single company
- **Inputs**:
- `company_id` (number, required): ID of the company
- `search_companies`: Search for companies
- **Inputs**:
- `query` (string, required): Search query
- `find_company_by_name`: Find a company by name
- **Inputs**:
- `name` (string, required): Company name
- `list_company_fields`: Get all company fields
- **Inputs**:
- None
## Getting Started
### Installing via Smithery
To install freshdesk_mcp for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@effytech/freshdesk_mcp):
```bash
npx -y @smithery/cli install @effytech/freshdesk_mcp --client claude
```
### Prerequisites
- A Freshdesk account (sign up at [freshdesk.com](https://freshdesk.com))
- Freshdesk API key
- `uvx` installed (`pip install uv` or `brew install uv`)
### Configuration
1. Generate your Freshdesk API key from the Freshdesk admin panel
2. Set up your domain and authentication details
### Usage with Claude Desktop
1. Install Claude Desktop if you haven't already
2. Add the following configuration to your `claude_desktop_config.json`:
```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`)
## Example Operations
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"
## Testing
For testing purposes, you can start the server manually:
```bash
uvx freshdesk-mcp --env FRESHDESK_API_KEY=<your_api_key> --env FRESHDESK_DOMAIN=<your_domain>
```
## Troubleshooting
- 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
## License
This MCP server is licensed under the MIT License. See the LICENSE file in the project repository for full details.