Skip to main content
Glama
effytech

Freshdesk MCP server

by effytech

update_ticket

Modify ticket details in Freshdesk using the MCP server. Input the ticket ID and updated fields to automate and streamline support ticket management.

Instructions

Update a ticket in Freshdesk.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ticket_fieldsYes
ticket_idYes

Implementation Reference

  • The core handler function for the update_ticket tool, including the @mcp.tool() decorator which also serves as its registration in the FastMCP server. This async function handles updating a Freshdesk ticket by sending a PUT request to the tickets/{ticket_id} endpoint with the provided ticket_fields, handling custom fields separately, and returning success/error responses.
    @mcp.tool()
    async def update_ticket(ticket_id: int, ticket_fields: Dict[str, Any]) -> Dict[str, Any]:
        """Update a ticket in Freshdesk."""
        if not ticket_fields:
            return {"error": "No fields provided for update"}
    
        url = f"https://{FRESHDESK_DOMAIN}/api/v2/tickets/{ticket_id}"
        headers = {
            "Authorization": f"Basic {base64.b64encode(f'{FRESHDESK_API_KEY}:X'.encode()).decode()}",
            "Content-Type": "application/json"
        }
    
        # Separate custom fields from standard fields
        custom_fields = ticket_fields.pop('custom_fields', {})
    
        # Prepare the update data
        update_data = {}
    
        # Add standard fields if they are provided
        for field, value in ticket_fields.items():
            update_data[field] = value
    
        # Add custom fields if they exist
        if custom_fields:
            update_data['custom_fields'] = custom_fields
    
        async with httpx.AsyncClient() as client:
            try:
                response = await client.put(url, headers=headers, json=update_data)
                response.raise_for_status()
    
                return {
                    "success": True,
                    "message": "Ticket updated successfully",
                    "ticket": response.json()
                }
    
            except httpx.HTTPStatusError as e:
                error_message = f"Failed to update ticket: {str(e)}"
                try:
                    error_details = e.response.json()
                    if "errors" in error_details:
                        error_message = f"Validation errors: {error_details['errors']}"
                except Exception:
                    pass
                return {
                    "success": False,
                    "error": error_message
                }
            except Exception as e:
                return {
                    "success": False,
                    "error": f"An unexpected error occurred: {str(e)}"
                }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/effytech/freshdesk_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server