Skip to main content
Glama
SShadowS

Zendesk MCP Server

by SShadowS

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MODENoTool mode: 'full' (all 55 tools) or 'lite' (10 essential tools)full
PORTNoHTTP server port (default: 3030, HTTP mode only)
ZENDESK_DEBUGNoEnable debug loggingfalse
ZENDESK_EMAILNoYour Zendesk email address (for API token auth)
SERVER_BASE_URLNoBase URL for the server (HTTP mode only, use https:// in production)
ANTHROPIC_API_KEYNoAnthropic API key for AI image/document analysis features
ZENDESK_API_TOKENNoYour Zendesk API token (for API token auth)
ZENDESK_SUBDOMAINNoYour Zendesk subdomain (e.g., mycompany)
ZENDESK_OAUTH_CLIENT_IDNoOAuth client ID for HTTP mode
ZENDESK_OAUTH_REDIRECT_URINoOAuth redirect URI (e.g., http://localhost:3030/zendesk/oauth/callback)
ZENDESK_OAUTH_CLIENT_SECRETNoOAuth client secret for HTTP mode

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_ticketsA

List ALL tickets in the Zendesk instance (no filtering). Has no parameters for filtering by recipient, assignee, requester, status, tags, or dates — for any filtered query use search instead with operators like type:ticket recipient:<email> or type:ticket assignee:me status<solved. Use list_tickets only when you genuinely want the full chronological feed across all queues (e.g. for a global activity report). Supports pagination and sorting.

get_ticketA

Fetch one ticket by numeric ID, returning the full ticket object plus named_custom_fields (e.g. ado_work_item_id). Pass include_comments:true to also pull the comment thread inline (otherwise comments are omitted to save tokens — fetch them separately with get_ticket_comments if needed). If you have an email/subject/tag rather than an ID, use search first to find the ID.

create_ticketC

Create a new ticket. Supports named_custom_fields (e.g. ado_work_item_id) and raw custom_fields.

update_ticketA

Update an existing ticket. Supports named_custom_fields (e.g. ado_work_item_id, pass null to clear) and raw custom_fields. Pass macro_id to apply a macro's field changes and comment as part of the update — explicit fields you also pass will override the macro's values.

delete_ticketB

Delete a ticket

get_ticket_commentsA

List the comment thread for a ticket (both public replies and internal agent notes). Useful when you need conversation history but already used get_ticket without include_comments:true. Comments are paginated — large tickets may have 50+ comments across multiple pages.

add_ticket_commentA

Append a comment to an existing ticket. Default visibility is internal (agent-only note) — pass type:'public' to send a reply visible to the requester. Use this rather than update_ticket when you only want to add a comment without changing other ticket fields.

get_ticket_attachmentsA

List every attachment across a ticket's comment thread (files and inline images). Use this to discover what's attached before deciding to call analyze_ticket_images or analyze_ticket_documents. Each attachment includes content_type, size, filename, and a content_url for downloading.

analyze_ticket_imagesB

Download and analyze images from a ticket using AI vision with comprehensive analysis. Includes both file attachments and inline images embedded in comment bodies.

list_usersA

List Zendesk users with optional role filter (end-user, agent, admin). For finding a user by email/name/organization/external_id, use search with type:user email:<email> — that's far cheaper than paginating the full directory. list_users is appropriate when you need the full directory feed (e.g. building a snapshot).

get_userA

Fetch one user by numeric ID, returning the full profile (name, email, role, organization, tags, custom_fields). If you only have an email or name, use search with type:user email:<email> first to find the ID.

create_userA

Create a new Zendesk user. Email must be unique across the instance — duplicates return 422. Role defaults to end-user; specify agent or admin for staff accounts. Returns the created user's full profile including the auto-assigned ID.

update_userA

Update an existing user. Pass only the fields you want to change; omitted fields are preserved. Use get_user first to confirm the ID and current state. Pass organization_id: null to detach the user from their current organization. String fields can be cleared by passing an empty string.

delete_userA

Soft-delete a Zendesk user (sets active:false; the record is retained for ticket history). To permanently purge, use Zendesk's GDPR delete endpoint (not exposed by this tool). Cannot delete the account owner.

list_organizationsA

List ALL organizations in the Zendesk instance. No filter parameters — to find an organization by name, domain, external_id, or tag use search with type:organization name:<name> or type:organization tags:<tag>. Supports pagination.

get_organizationA

Fetch one organization by numeric ID, returning name, domain_names, tags, custom_fields, and notes. If you only have a name or domain, use search first to find the ID.

create_organizationA

Create a new organization. Name must be unique within the instance. Use domain_names (array) to auto-associate end-users whose email domain matches.

update_organizationA

Update an existing organization. Pass only the fields you want to change. To clear domain_names or tags, pass an empty array.

delete_organizationA

Delete an organization. Associated users are not deleted but are unlinked from the org.

list_groupsA

List ALL agent groups (teams that own tickets) in the Zendesk instance. Each group has an ID used in ticket routing — use this when you need to discover group IDs for update_ticket group_id:<id> or search type:ticket group:<id>.

get_groupA

Fetch one agent group by numeric ID, returning name, description, and metadata.

create_groupA

Create a new agent group. Group members are added separately via Zendesk's group_memberships endpoint (not exposed by this tool).

update_groupC

Update an existing group's name or description.

delete_groupA

Delete an agent group. Tickets currently assigned to this group will be unassigned (group_id set to null).

list_macrosA

List ALL macros (predefined ticket actions agents can apply) accessible to the API user. Use this to discover macro IDs and inspect what canned responses or ticket updates your team has built.

get_macroA

Fetch one macro's definition by numeric ID, including the title and the array of actions it performs (status change, comment, tag adds, etc.).

create_macroB

Create a new macro. Provide title and an actions array. Each action is {field, value} describing what the macro changes when applied.

update_macroA

Update an existing macro's title or actions. Pass actions to replace the full action set (not merge).

delete_macroA

Delete a macro. Tickets previously modified by it are unaffected.

list_viewsA

List ALL saved ticket views (filtered ticket lists agents use as dashboards) accessible to the API user. Use this to discover view IDs, then call Zendesk's /api/v2/views/{id}/tickets for the actual ticket list (this MCP doesn't yet expose execute_view; use search with the equivalent filters as a workaround).

get_viewA

Fetch one view's definition by numeric ID, returning the filter conditions, title, and metadata. Useful for understanding how an agent's existing dashboard is built.

create_viewA

Create a new ticket view. Pass conditions as an object with optional all and any arrays (Zendesk evaluates all as AND-logic, any as OR-logic). Each condition is {field, operator, value} per Zendesk's view conditions schema. Use output to control which columns appear, plus grouping and sort.

update_viewA

Update an existing view's title, description, conditions, and/or output (columns, grouping, sort). Use get_view first to retrieve and modify the current structure. Only fields you pass are changed — omitted fields are preserved.

delete_viewA

Delete a saved view. Tickets are unaffected.

list_triggersA

List ALL triggers (event-driven rules that fire on ticket create/update). Use this to audit existing triggers before adding new ones, or to discover trigger IDs for inspection. For time-based rules use list_automations instead.

get_triggerA

Fetch one trigger's definition by numeric ID, returning its conditions (all_conditions/any_conditions) and actions array.

create_triggerB

Create a new trigger. Requires title, conditions (when it fires), and actions (what it does). Triggers run on every ticket create/update — be conservative with conditions to avoid performance impact.

update_triggerA

Update an existing trigger. Pass conditions and/or actions to replace those sections (not merge).

delete_triggerA

Delete a trigger. Tickets previously modified by it are unaffected.

list_automationsA

List ALL automations (time-based rules that run hourly — e.g. closing pending tickets after 7 days). Unlike triggers, automations fire on a schedule, not on events. Use this to audit existing time-based workflows.

get_automationA

Fetch one automation's definition by numeric ID, including its conditions and actions array.

create_automationA

Create a new automation (runs hourly on tickets matching the conditions). Requires title, conditions, and actions. Conditions should include a time-based field (e.g. hours_since_update) — otherwise consider a trigger instead.

update_automationA

Update an existing automation. Pass conditions and/or actions to replace those sections (not merge).

delete_automationA

Delete an automation. Tickets previously modified by it are unaffected.

searchA

Search Zendesk tickets, users, organizations, groups, and Help Center articles using Zendesk's full search query language. The query parameter supports operators (combined with spaces, implicit AND): type:ticket|user|organization|group|article, recipient:<email>, assignee:<email|me|none>, requester:<email>, submitter:<email>, status<solved (also >, <=, >=), tags:<tag>, brand:<id>, group:<id>, created>2026-05-01 (also updated, solved_at, due_at), priority:high|normal|low|urgent, via:web|email|chat|phone, plus full-text on subject/description. Combine for precision (e.g. type:ticket recipient:support@acme.com status<solved created>2026-05-01). IMPORTANT: default sort is relevance, not date — for chronological results pass sort_by:created_at (or updated_at) with sort_order:desc. Use this instead of list_tickets whenever you need filtering by recipient/assignee/tag/status/dates or full-text search; list_tickets has no filter parameters. Reference: https://support.zendesk.com/hc/en-us/articles/4408886879258

list_articlesA

List Help Center (knowledge-base) articles. To find articles by title/body/section, use search with type:article title:<text> instead — list_articles has no filtering parameters and the catalog can be large.

get_articleA

Fetch one Help Center article by numeric ID, returning title, body (HTML), section_id, labels, and locale.

create_articleB

Create a Help Center article in a specific section. Body accepts HTML. Specify locale if you support multiple languages (defaults to instance default).

update_articleA

Update an existing Help Center article's title, body, labels, or section. Pass only the fields you want to change.

delete_articleA

Delete a Help Center article. Soft-deletable — Zendesk retains the record briefly for undo. Existing links to the article will 404.

support_infoA

Return the authenticated agent's identity (id, name, email, role) plus account-level Support metadata: subdomain, account settings, brands, and ticket forms. Use this to confirm which Zendesk instance the session is connected to and which ticket forms / brands are available before constructing tickets.

get_talk_statsA

Return Zendesk Talk (voice) aggregate stats: total calls, average wait, abandoned rate, agent availability. Requires Zendesk Talk add-on. Returns the rolling window Zendesk publishes (typically last 30 days).

list_chatsA

List Zendesk Chat conversations (live chat transcripts), most recent first. Requires Zendesk Chat to be enabled on the account. Use this for end-of-day chat reviews or to find a recent chat by visitor name.

analyze_ticket_documentsA

Comprehensively analyze all document attachments from a ticket (PDF, DOCX, TXT, CSV, etc). v2.1 with truncation. Note: This may take 30-60 seconds for multiple documents.

get_document_summaryB

Get a quick summary of all documents attached to a ticket

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/SShadowS/zendesk-mcp-server'

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