You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A managed fork of effytech/freshservice_mcp with controlled tool access via allowlists. Designed to run as a standalone Docker container on your network, accessible by any MCP-compatible client.
By default, only read/query tools are exposed. Write tools can be selectively enabled as needed.
This fork uses three sets in server.py to control which tools MCP clients can see:
READONLY_TOOLS -- Read/query/filter/list tools. All enabled by default.
ALLOWED_WRITE_TOOLS -- Write tools you've chosen to enable. Starts empty.
DISABLED_WRITE_TOOLS -- Write tools that exist in the upstream code but are not exposed. This is your menu for future enablement.
Only tools in READONLY_TOOLS or ALLOWED_WRITE_TOOLS are registered with the MCP server. Everything else is invisible to AI clients.
Enabling a Write Tool
Move the tool name from DISABLED_WRITE_TOOLS to ALLOWED_WRITE_TOOLS in server.py
Update your Freshservice API key's RBAC role to permit that action
Rebuild the Docker image and restart the container
Security Model
The Freshservice API key's RBAC role is the primary security boundary. Even if a tool is exposed via the MCP, Freshservice will reject any action the API key doesn't have permission for. The allowlist is defense-in-depth -- it prevents the AI from even attempting operations you haven't approved.
List all tasks on a ticket (includes agent_id, group_id, status, due dates, stack rank)
view_ticket_task
Get a single ticket task by ID
Service Catalog
Tool
Description
list_service_items
List service catalog items
get_requested_items
Get requested items on a ticket
Changes
Tool
Description
get_changes
List changes with filtering
filter_changes
Filter changes by query
get_change_by_id
Get a single change by ID
list_change_fields
Get change form field definitions
Change Approvals
Tool
Description
list_change_approval_groups
List approval groups on a change
view_change_approval
View a single approval
list_change_approvals
List all approvals on a change
Change Notes
Tool
Description
view_change_note
View a single change note
list_change_notes
List notes on a change
Change Tasks
Tool
Description
view_change_task
View a single change task
get_change_tasks
List tasks on a change
Change Time Entries
Tool
Description
view_change_time_entry
View a single time entry
list_change_time_entries
List time entries on a change
Products
Tool
Description
get_all_products
List products with pagination
get_products_by_id
Get a single product by ID
Requesters
Tool
Description
get_all_requesters
List requesters with pagination
get_requester_id
Get a single requester by ID
list_all_requester_fields
Get requester field definitions
filter_requesters
Filter requesters by query
Agents
Tool
Description
get_agent
Get a single agent by ID
get_all_agents
List agents with pagination
get_agent_fields
Get agent field definitions
filter_agents
Filter agents by query
Agent Groups
Tool
Description
get_all_agent_groups
List all agent groups
getAgentGroupById
Get a single agent group by ID
Requester Groups
Tool
Description
get_all_requester_groups
List requester groups
get_requester_groups_by_id
Get a single requester group by ID
list_requester_group_members
List members of a requester group
Canned Responses
Tool
Description
get_all_canned_response
List canned responses
get_canned_response
Get a single canned response
list_all_canned_response_folder
List canned response folders
list_canned_response_folder
Get a single canned response folder
Solution Categories
Tool
Description
get_all_solution_category
List solution categories
get_solution_category
Get a single solution category
Solution Folders
Tool
Description
get_list_of_solution_folder
List folders in a category
get_solution_folder
Get a single solution folder
Solution Articles
Tool
Description
get_list_of_solution_article
List articles in a folder
get_solution_article
Get a single solution article
Workspaces
Tool
Description
list_all_workspaces
List all workspaces
get_workspace
Get a single workspace
Query Syntax for Filtering
When using filter_tickets, filter_changes, get_changes, or filter_agents with a query parameter, the query string must be wrapped in double quotes for the Freshservice API:
Examples:
"status:3" -- Changes awaiting approval
"approval_status:1" -- Approved changes
"approval_status:1 AND status:<6" -- Approved changes that are not closed
"planned_start_date:>'2025-07-14'" -- Changes starting after a specific date