
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 分