A FastMCP-compliant Model Context Protocol (MCP) server for Freshdesk, optimized for deployment on fastmcp.cloud.
- FastMCP 2.0 Compliant: Built with FastMCP 2.0 framework
- Cloud Ready: Optimized for fastmcp.cloud deployment
- 5 Core Tools: Focused set of essential Freshdesk operations
- Header-Based Auth: Secure credential management via HTTP headers
This server provides the following 5 tools:
lookup_contact- Find a contact by email or phone numbercreate_contact- Create a new contact in Freshdeskget_tickets_by_contact- Get all tickets for a contactcreate_ticket- Create a new support ticketupdate_ticket- Update an existing ticket
Credentials are provided via HTTP headers:
X-Freshdesk-API-KeyorFreshdesk-API-Key: Your Freshdesk API keyX-Freshdesk-DomainorFreshdesk-Domain: Your Freshdesk domain (e.g.,yourcompany.freshdesk.com)
Alternatively, you can set environment variables:
FRESHDESK_API_KEYFRESHDESK_DOMAIN
-
Push to GitHub: Push this repository to a GitHub repository
-
Sign in to FastMCP Cloud: Visit fastmcp.cloud and sign in with your GitHub account
-
Create Project:
- Click "Create New Project"
- Select your repository
- Set the entrypoint to:
src/freshdesk_mcp/server.py:mcp
-
Deploy: FastMCP Cloud will automatically build and deploy your server
Your server will be available at: https://your-project.fastmcp.app/mcp
pip install -r requirements.txt# HTTP transport (default)
python -m freshdesk_mcp.server
# Or using the script
freshdesk-mcpFor local development, you can set environment variables:
export FRESHDESK_API_KEY="your-api-key"
export FRESHDESK_DOMAIN="yourcompany.freshdesk.com"from fastmcp.client.transports import StreamableHttpTransport
from fastmcp import Client
transport = StreamableHttpTransport(
url="https://your-project.fastmcp.app/mcp",
headers={
"X-Freshdesk-API-Key": "your-api-key",
"X-Freshdesk-Domain": "yourcompany.freshdesk.com"
}
)
async with Client(transport) as client:
# Lookup a contact
contact = await client.call_tool("lookup_contact", {"email": "user@example.com"})
print(contact)
# Create a ticket
ticket = await client.call_tool("create_ticket", {
"subject": "Support Request",
"description": "I need help with...",
"source": 1, # Email
"priority": 2, # Medium
"status": 2, # Open
"email": "user@example.com"
})
print(ticket)curl -X POST https://your-project.fastmcp.app/mcp \
-H "X-Freshdesk-API-Key: your-api-key" \
-H "X-Freshdesk-Domain: yourcompany.freshdesk.com" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "lookup_contact",
"arguments": {
"email": "user@example.com"
}
},
"id": 1
}'The server provides a health check endpoint:
curl https://your-project.fastmcp.app/healthResponse:
{
"status": "healthy",
"service": "freshdesk-mcp",
"version": "1.0.0"
}1- Email2- Portal3- Phone7- Chat9- Feedback Widget10- Outbound Email
1- Low2- Medium3- High4- Urgent
2- Open3- Pending4- Resolved5- Closed
FASTMCP-Freshdesk/
├── src/
│ └── freshdesk_mcp/
│ ├── __init__.py
│ └── server.py # Main server file
├── pyproject.toml # Project configuration
├── requirements.txt # Python dependencies
└── README.md # This file
[Your License Here]
For issues and questions, please open an issue in the repository.