
Zendesk Mcp
io.github.michaelrice由 GitHub 账号 michaelrice 发布v0.1.6更新于 Oct 24, 2026
Zendesk MCP server for Claude Code and other MCP clients
概览
Zendesk MCP 服务器,让助手搜索、读取、创建和更新工单,发布回复与内部备注,并应用视图和宏。
- 可以做什么
- 搜索、分页列出并获取工单、评论和附件,可将附件下载到本地缓存
- 创建和更新工单、设置状态、指派客服,以及添加或移除标签
- 发布公开回复和内部备注,记录或读取工时条目
- 浏览视图和宏,预览宏效果并将其应用到工单
- 查询用户、组、组织以及自定义工单状态
- 把工单整理成 Markdown 问题草稿,并提供工单分析与回复起草两个提示
- 适用场景
- 适合让助手直接在 Zendesk 客服队列中工作:分诊和总结工单、起草或发布客户回复、更新字段与标签,或把工单转交到问题跟踪系统。
- 运行要求
- 以本地 Python 包运行(需 Python 3.10 或更高版本),建议装在虚拟环境中。需要 Zendesk 子域名,以及由管理员创建的 Zendesk OAuth 客户端(客户端 ID 与密钥,权限范围 read 和 write);还需运行交互式 setup,通过浏览器完成授权并把令牌写入配置文件。可选设置可启用帮助中心资源、Git-Zen 链接和额外的附件目录。
安装
在 SourceWeft 中
- 打开 控制台中的 Zendesk Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
zendesk-mcp
A Model Context Protocol server that exposes Zendesk ticket read and write tools to Claude Code and other MCP clients.
What it does
- Search, list (paginated), and fetch Zendesk tickets, comments, and attachments
- Create new tickets and update existing ticket fields (including group, custom status, and tags)
- Post public replies and internal notes
- Set ticket status and assign tickets to agents
- Browse and apply views and macros
- Look up users, groups, organizations, and custom statuses
- Read and write time-tracking entries
- Format a ticket as a Markdown issue draft for handoff to a tracker (GitLab, GitHub, Jira)
- Two MCP prompts (
analyze-ticket,draft-ticket-response) for ticket analysis and response drafting - (Optional) Expose Zendesk Help Center articles as an MCP resource
- (Optional) Read linked GitLab issues / MRs / commits via the Git-Zen Zendesk app
Prerequisites
- Python 3.10 or newer
- A Zendesk OAuth client. A Zendesk admin can create one at:
https://<your-subdomain>.zendesk.com/admin/apps-integrations/apis/zendesk-api/oauth_clientsSet the redirect URL tohttp://localhost:8787/callbackand request scopesread write.
Install
Install into a project-local virtualenv. Using a venv keeps zendesk-mcp and its dependencies isolated from your system Python and from other projects, and is the recommended path for everything below.
From a clone of this repository:
For development (also installs pytest):
Throughout this README, commands use the venv's binaries via
.venv/bin/.... You can insteadsource .venv/bin/activateonce per shell and drop the prefix — the result is the same.
OAuth setup
Run the interactive setup using the venv's Python:
You will be prompted for:
- Your Zendesk subdomain (e.g.
acmeforacme.zendesk.com) - The OAuth client ID created by your admin
- The OAuth client secret
- (Optional) A Git-Zen integration field ID — see Optional: Git-Zen integration
- (Optional) Whether to enable the Help Center knowledge base resource — see Optional: Help Center knowledge base
The setup opens a browser for the OAuth authorization step, then writes a token to ~/.config/zendesk-mcp/config.json (mode 0600).
If you have no browser, the URL is printed to the terminal — open it on any device, click Allow, and paste the resulting redirect URL back into the prompt.
Token expiry and refresh
Zendesk access tokens expire. OAuth clients created on or after 2026-04-30 get a 30-minute default lifetime; older clients issue non-expiring tokens unless an expiry is requested. Setup requests a 24-hour access token and a 90-day refresh token so the behaviour is the same either way, and the server renews the access token automatically — before it expires, and again if Zendesk rejects a token mid-request.
To make that possible, the config file also stores refresh_token, expires_at,
client_id, and client_secret alongside the access token. Keep the file at mode 0600;
it is the same trust level as the access token itself. If your OAuth client returns no
refresh token, setup says so and the token is used as-is.
Re-run .venv/bin/python -m zendesk_mcp setup when:
- the refresh token expires (90 days with no use), or
- you revoke the OAuth grant in Zendesk.
In either case the tools return Zendesk authorization failed: ... Re-run: zendesk-mcp setup
rather than failing opaquely.
Register with Claude Code
Register the MCP server using the venv's Python by absolute path. Claude Code launches the server in a fresh shell that does not inherit your activated venv, so the absolute path is required — pointing at a bare python here will fail to import zendesk_mcp.
Or just inline the absolute path you want:
Then add the read tools to permissions.allow in ~/.claude/settings.json to avoid per-call prompts:
Write tools (zendesk_post_comment, zendesk_post_internal_note, zendesk_set_ticket_status, zendesk_assign_ticket, zendesk_create_ticket, zendesk_update_ticket, zendesk_log_time, zendesk_add_tag, zendesk_remove_tag, zendesk_apply_macro) are intentionally not in the default allow-list — Claude will prompt you per call.
Restricting tools
Every tool is enabled by default. To narrow what a deployment can do, for example where
ticket text is written by customers and the agent should not be able to reply to them, set
either of these in ~/.config/zendesk-mcp/config.json or in the server's environment. Values
from both are combined.
A disabled tool is never registered, so the model cannot see or call it. Names that match no tool are reported on stderr.
Tools
Tickets
Tools that return ticket records include channel, the channel the ticket arrived on (Zendesk's via.channel: web, email, api, ...), or null when Zendesk does not say. zendesk_get_ticket also returns custom_fields as a list of {id, value} pairs; a field that is not set on the ticket has a null value.
Tags
Views & Macros
Users, Groups & Organizations
Time tracking
Git-Zen integration
Prompts
The server exposes two MCP prompts that some clients (e.g. Claude Desktop) surface as slash commands:
Optional: Git-Zen integration
If your Zendesk instance uses the Git-Zen app, the zendesk_get_git_zen_links tool can read its custom-field payload. Find your instance's Git-Zen custom field ID under Admin → Tickets → Fields (it is a numeric ID), then either set it during .venv/bin/python -m zendesk_mcp setup or edit ~/.config/zendesk-mcp/config.json to add:
Without this configured, zendesk_get_git_zen_links returns a "not configured" message.
Optional: Help Center knowledge base
If your Zendesk instance has a published Help Center, you can expose its sections and articles as the zendesk://knowledge-base MCP resource. The resource returns a single JSON document covering all sections and articles, cached for one hour.
This is opt-in. Enable it by either answering "y" to the prompt during .venv/bin/python -m zendesk_mcp setup, or by adding the following to ~/.config/zendesk-mcp/config.json:
When the flag is absent or false, the resource is not registered, keeping the server's resource list empty for instances without a Help Center.
Optional: downloading attachments outside the cache
zendesk_download_attachment writes files to ~/.cache/zendesk-mcp/attachments/<ticket_id>/ by default (configurable via attachment_cache_dir). The dest_dir argument can redirect a download elsewhere, but because attachment contents are controlled by whoever wrote the ticket, the tool only accepts a dest_dir inside the cache or inside a directory you have explicitly allowed. Add the directories you want to permit to ~/.config/zendesk-mcp/config.json:
Paths are resolved before the check, so .. segments and symlinks cannot escape an allowed directory. Any dest_dir outside the allowed set is refused before the download starts.
The download URL itself must be an https URL on <subdomain>.zendesk.com for your configured subdomain; the tool refuses anything else so the OAuth token is never sent to another host. Archives are limited to 10,000 entries and 256 MiB unpacked, and tar members that are not regular files or directories are skipped.
Development
Tests run on Python 3.10, 3.11, and 3.12 in CI (see .github/workflows/test.yml).
Releasing
Bump the version in pyproject.toml, mcpb/pyproject.toml (both the version and
the zendesk-mcp== pin), mcpb/manifest.json, and server.json (both fields),
then push a v* tag. That triggers .github/workflows/release.yml, which publishes
to PyPI, packs the MCPB bundle, publishes server.json to the MCP Registry, and
cuts the GitHub release.
Check the versions agree before tagging — the release fails fast otherwise:
License
来源:README.md,提交 3606125
工具
0版本历史
3- v0.1.6最新Oct 9, 2026
- v0.1.5Oct 7, 2026
- v0.1.1Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分