Freshservice MCP Server
A comprehensive MCP server that provides 159 tools for interacting with the Freshservice ITSM platform, covering modules such as tickets, assets, and project management. It enables users to manage service desk operations and configuration through the Model Context Protocol.
README
Freshservice MCP Server
A fully-featured MCP (Model Context Protocol) server for Freshservice ITSM, deployed on Cloudflare Workers. Exposes 159 tools covering every Freshservice API v2 endpoint — tickets, assets, changes, problems, releases, projects, service catalog, knowledge base, and more.
Features
- 159 tools across 25 modules covering the full Freshservice API v2
- Cloudflare Workers — globally distributed, serverless, no cold starts
- Streamable HTTP transport (modern MCP standard)
- Bearer token auth to protect the MCP endpoint
- Plan-aware — each tool description indicates the minimum Freshservice plan required (Starter, Growth, or Pro)
Setup
1. Install dependencies
npm install
2. Configure secrets
Copy .dev.vars.example to .dev.vars for local development:
cp .dev.vars.example .dev.vars
Edit .dev.vars with your values:
- FRESHSERVICE_API_KEY: Your Freshservice API key (Profile Settings > API Key)
- FRESHSERVICE_DOMAIN: Your subdomain (e.g.,
yourcompanyforyourcompany.freshservice.com) - MCP_AUTH_TOKEN: Bearer token to protect the endpoint. Generate:
openssl rand -hex 32
3. Local development
npm run dev
Server starts at http://localhost:8787. Health check at GET /, MCP endpoint at POST /mcp.
4. Deploy
npx wrangler secret put FRESHSERVICE_API_KEY
npx wrangler secret put FRESHSERVICE_DOMAIN
npx wrangler secret put MCP_AUTH_TOKEN
npm run deploy
Connecting to Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"freshservice": {
"command": "npx",
"args": [
"mcp-remote",
"https://freshservice-mcp.<your-account>.workers.dev/mcp",
"--header",
"Authorization: Bearer <YOUR_MCP_AUTH_TOKEN>"
]
}
}
}
Available Tools (159 total)
Each tool description is prefixed with the minimum Freshservice plan required: [Plan: Starter+], [Plan: Growth+], or [Plan: Pro+].
Starter+ (all plans)
| Module | Tools |
|---|---|
| Tickets (15) | list_tickets, get_ticket, create_ticket, update_ticket, delete_ticket, list_ticket_conversations, add_ticket_note, reply_to_ticket, list_ticket_time_entries, create_ticket_time_entry, update_ticket_time_entry, delete_ticket_time_entry, list_ticket_tasks, create_ticket_task, list_ticket_approvals |
| Agents/Requesters (8) | list_agents, get_agent, create_agent, update_agent, delete_agent, list_requesters, get_requester, list_requester_fields |
| Knowledge Base (13) | search_articles, get_article, create_article, update_article, delete_article, list_solution_categories, get_solution_category, create_solution_category, list_solution_folders, get_solution_folder, create_solution_folder, update_solution_folder, delete_solution_folder |
| Departments (5) | list_departments, get_department, create_department, update_department, delete_department |
| Locations (5) | list_locations, get_location, create_location, update_location, delete_location |
| Agent Groups (5) | list_groups, get_group, create_group, update_group, delete_group |
| Requester Groups (5) | list_requester_groups, get_requester_group, create_requester_group, update_requester_group, delete_requester_group |
| Roles (2) | list_roles, get_role |
| Announcements (5) | list_announcements, get_announcement, create_announcement, update_announcement, delete_announcement |
| Canned Responses (5) | list_canned_responses, get_canned_response, create_canned_response, update_canned_response, delete_canned_response |
| Surveys (5) | list_surveys, get_survey, create_survey, update_survey, delete_survey |
Growth+ (Growth, Pro, Enterprise)
| Module | Tools |
|---|---|
| Assets (6) | list_assets, get_asset, create_asset, update_asset, delete_asset, list_asset_contracts |
| Asset Types (5) | list_asset_types, get_asset_type, create_asset_type, update_asset_type, delete_asset_type |
| Service Catalog (4) | list_service_catalog_items, get_service_catalog_item, request_service_catalog_item, list_service_catalog_categories |
| Vendors (5) | list_vendors, get_vendor, create_vendor, update_vendor, delete_vendor |
| Products (5) | list_products, get_product, create_product, update_product, delete_product |
| Purchase Orders (5) | list_purchase_orders, get_purchase_order, create_purchase_order, update_purchase_order, delete_purchase_order |
| Business Hours (5) | list_business_hours, get_business_hours_config, create_business_hours, update_business_hours, delete_business_hours |
| Onboarding (3) | list_onboarding_requests, get_onboarding_request, create_onboarding_request |
Pro+ (Pro, Enterprise)
| Module | Tools |
|---|---|
| Changes (10) | list_changes, get_change, create_change, update_change, delete_change, add_change_note, list_change_time_entries, create_change_time_entry, list_change_tasks, create_change_task |
| Problems (10) | list_problems, get_problem, create_problem, update_problem, delete_problem, add_problem_note, list_problem_time_entries, create_problem_time_entry, list_problem_tasks, create_problem_task |
| Releases (10) | list_releases, get_release, create_release, update_release, delete_release, add_release_note, list_release_time_entries, create_release_time_entry, list_release_tasks, create_release_task |
| Projects (8) | list_projects, get_project, create_project, update_project, delete_project, list_project_tasks, create_project_task, add_project_note |
| Contracts (5) | list_contracts, get_contract, create_contract, update_contract, delete_contract |
| Custom Objects (5) | list_custom_objects, get_custom_object, create_custom_object, update_custom_object, delete_custom_object |
Tech Stack
- TypeScript on Cloudflare Workers
agents(Cloudflare's agents-sdk, includes@modelcontextprotocol/sdk)honoweb frameworkzodschema validation
Authentication
The MCP endpoint requires a Bearer token in the Authorization header. The Freshservice API is accessed using Basic Auth with your API key (stored as a Cloudflare Worker secret).
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.