mcpField
Z
zendesk-mcp-server

zendesk-mcp-server

本地服务
github.com商业与营销143 天前更新

关于 zendesk-mcp-server

zendesk-mcp-server 将 Zendesk Support 和 Help Center 接入 MCP 客户端,供客服人员与客户在对话中查找文章、处理工单和提交请求。它采用每用户 OAuth 2.1 PKCE 权限,并支持文章分段编辑及工单图片内容。

主要功能

  1. 01搜索 Help Center 文章
  2. 02创建、更新和跟进工单
  3. 03草拟、翻译和分段编辑文章
  4. 04查看工单图片附件
  5. 05以客户身份提交和跟踪请求
  6. 06按命名空间筛选工具并设为只读

适用场景

  1. 01客服人员用自然语言筛选并分派工单
  2. 02逐段修订大型 Help Center 文章
  3. 03客户通过助手提交请求并查看回复
  4. 04让每位用户按自己的 Zendesk 权限操作

MCP 相关

此 MCP 服务向客户端提供 Zendesk Support 与 Help Center 的搜索、工单、文章及请求操作。支持本地 stdio 和远程 HTTP 部署,并可配置工具模式及只读范围。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"fruggr-zendesk": {
"command": "npx",
"args": [
"-y",
"@fruggr/zendesk-mcp-server"
],
"env": {
"ZENDESK_SUBDOMAIN": "<ZENDESK_SUBDOMAIN>"
}
}
}
}
启动命令npx -y @fruggr/zendesk-mcp-server
需要配置的环境变量
ZENDESK_SUBDOMAINZendesk subdomain, used when no positional subdomain argument is given.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@fruggr/zendesk-mcp-server3.6.0

工具

3

收录的工具列表 · 更新于 3 天前

参数类型必填说明
paramsobject否所选操作的参数,名称必须与 "operation" 中列出的名称完全一致(* = 必填)。未知名称将被拒绝。
operationstring是以下操作之一。每行格式为 name(parameters): summary,其中参数是 "params" 接受的确切名称,* 表示必填;(write) 表示会更改数据的操作。 - get_ticket(ticket_id*, include_comments): 按 ID 获取 Zendesk 工单;如果适用 SLA 策略,则包含实时 SLA 状态(每项指标的阶段和违约倒计时),并可按要求包含评论。 - get_ticket_history(ticket_id*, page_size, cursor): 按时间顺序(最早优先)读取工单变更历史记录,即审计跟踪,了解谁在何时更改了什么。 - list_ticket_comments(ticket_id*, sort_order, page_size, cursor): 读取工单对话内容,包括完整正文的公开回复和内部备注;每次返回一页游标分页结果,最新评论优先。 - get_ticket_attachments(ticket_id*, attachment_ids): 获取工单附件。 - search_tickets(query*, per_page, page): 使用 Zendesk 查询语法搜索工单;如果适用 SLA 策略,则每条结果均包含实时 SLA 状态(每项指标的阶段和违约倒计时)。 - create_ticket(subject*, description*, priority, type, assignee_id, group_id, tags, custom_fields): 创建新的 Zendesk 支持工单,包含主题、描述以及可选的优先级/类型/受理人/标签。(write) - update_ticket(ticket_id*, status, priority, type, assignee_id, group_id, subject, tags, custom_fields, followers, email_ccs): 更新现有工单(状态、优先级、类型、受理人、组、主题、标签、自定义字段、关注者、邮件抄送)。(write) - add_private_note(ticket_id*, body*, attachments): 向工单添加内部备注(请求者不可见),可选附加文件(通过 Zendesk Uploads API 上传并附加到备注)。(write) - add_public_comment(ticket_id*, body*, attachments): 向工单添加公开评论(请求者可见),可选附加文件(通过 Zendesk Uploads API 上传并附加到评论)。(write) - list_tickets(page_size, cursor): 使用基于游标的分页列出工单,按 Zendesk 默认顺序(工单 ID 升序)排列,而非按最近时间排列。 - get_linked_incidents(problem_id*): 获取关联到问题工单的所有事故工单。 - manage_tags(ticket_id*, add, remove): 添加或移除工单标签。(write) - list_sla_policies(per_page, page): 列出已配置的 SLA 策略及其筛选条件和各优先级的回复/解决目标。 - list_ticket_fields(page_size, cursor): 列出此 Zendesk 中配置的工单字段定义(包括系统字段和自定义字段),并返回每个字段的 ID、类型、是否启用/必填;对于下拉列表和多选字段,还返回有效选项值。 - list_views(page_size, cursor): 列出 Agent 当前启用的 Zendesk 视图——Agent 在 Zendesk UI 中看到的已保存工单队列("Unassigned tickets"、"My open tickets"、"Breaching today")——并提供各视图当前的工单数量,以便快速了解工作量分布。 - get_view_tickets(view*, sort_by, sort_order, page_size, cursor): 按视图自身配置的排序顺序读取其中的工单,即 Agent 在 Zendesk UI 中看到的顺序;这是处理命名队列(如 "Unassigned tickets" 或 "Breaching today")的自然方式。 - list_macros(per_page, page): 列出已通过身份验证的用户可用的启用宏。 - preview_macro_diff(ticket_id*, macro_id*): 预览宏对特定工单所做的确切更改,以变更前 → 变更后的差异形式显示,且不会保存任何内容。(write) - search(query*, per_page, page): 搜索工单、用户和组织。

详细介绍

Zendesk MCP 服务

Glama score MCP Registry npm version License: MIT Node.js Container base

一个 Model Context Protocol(MCP)服务,可将 Zendesk 接入你的 AI 助手,服务于对话双方。

面向客服人员:在帮助中心查找答案;起草、更新和翻译文章,同时保持各语言版本同步;端到端处理支持工单,包括评论、分流和图片附件。

面向客户:提供与帮助中心“提交请求”表单相同的入口。客户选择请求类型,按表单实际提出的问题逐步作答,附上屏幕截图,然后跟进工单——阅读回复、回复对方,并在问题解决后关闭工单。请参阅终端用户模式。

整个过程都可以用自然语言完成,无需切换应用。

它大致实现了 Zendesk agent for Microsoft 365 Copilot 的功能,但不局限于某一家供应商:它可接入任何 MCP 客户端(Claude Desktop、Claude Code、Cursor、VS Code 等)。而且,它始终使用每位用户自己的 Zendesk 权限进行操作,绝不使用共享的管理员密钥。

助手可以做什么

用自然语言提问;助手会判断上下文和意图,然后代表你调用合适的工具。

  • 在帮助中心查找答案。“如何申请软件许可证?”或“休假政策是什么?”这类问题会找到相关的文章,匹配依据是含义而非关键词。
  • 无需离开对话即可创建、查看和更新工单:创建工单、查看状态、添加公开回复或内部备注、更改优先级或受理人,以及将工单标记为已解决。
  • 为报告或快速决策总结工单。助手会提取详细信息和完整的评论串,并用一句话概括要点。
  • 阅读工单附带的屏幕截图和照片。错误对话框、界面截图和产品照片会以图像形式交给助手自己的模型,以便它进行描述或据此采取行动。
  • 用自然语言搜索和分流你的工单队列:“显示我本周关于账单的未结工单。”
  • 起草和维护知识库文章。你可以撰写新文章,也可以一次修订大型文章中的一个章节,避免将整个 HTML 正文来回传递给模型。
  • 以客户而非客服人员的身份提交和跟进请求。选择供应商提供的请求类型,只回答表单提出的问题,然后跟踪请求:对方回复了什么、你回复了什么,以及请求是否已完成。

为什么选择此服务

大多数 Zendesk 集成都使用共享的管理员 API 密钥,让每位用户都能完全访问所有工单,并附带一组固定的工具。此服务采用了不同的设计。

  • 按用户进行身份验证,仅支持 OAuth。两种传输方式都使用 OAuth 2.1 PKCE:每位用户使用自己的 Zendesk 凭据登录,因此助手只能查看和操作该用户有权访问的内容,与直接登录 Zendesk 时的权限范围相同。我们有意不支持静态 API 令牌(原因)。
  • 一个服务面向两类用户。身份验证按用户进行,而非使用共享管理员密钥,因此同一安装既可服务于客服人员,也可服务于客户——终端用户界面是一个可启用的命名空间,使用 Zendesk 为请求者保留的 API 路径。大多数 Zendesk MCP 服务在设计上仅面向客服人员。
  • 基于章节编辑文章。对于较长的帮助中心文章,可一次读取并改写一个章节(按 h1/h2/h3 标题解析),而不是让助手处理整篇 HTML 正文。针对性编辑可将令牌用量减少 10 到 100 倍。
  • 原生多模态附件。工单图片会以原生 MCP 图片内容的形式返回,因此客户端自己的模型(Claude、GPT、Gemini 等)可以直接查看图像。不需要服务端视觉模型或额外的 API 密钥,也不会受限于某个提供商。非图片附件会以文本引用的形式返回,两种图片上限均可配置。
  • 可按需精简的工具界面。可将每项操作作为独立工具公开,将它们分组成命名空间代理,或合并为一个统一工具。还可以按命名空间或只读操作进行筛选,让每个上下文只加载所需的工具界面(参见工具界面)。
  • 两种部署方式,同一套身份验证机制。可在笔记本电脑上将其作为 stdio MCP 服务运行,也可将其部署为通过 HTTP 访问的私有远程 MCP 服务,每个请求使用独立的 Zendesk 会话,并由每个客户端携带其用户自己的令牌。
  • 精简的技术栈:官方 MCP TypeScript SDK(@modelcontextprotocol/server)和 zod,用于访问 Zendesk Support 和 Help Center(Guide)API。

以下情况请考虑其他方案:

  • 需要使用 Support 和 Guide 以外的 Zendesk 产品(Talk、Explore 分析、Sell)。此服务不涵盖这些端点。
  • 需要单一共享服务帐户或静态 API 令牌身份验证。此服务出于设计考虑,两者均不支持(见下文)。

此服务不做什么

此服务不支持 API 令牌身份验证。它仅使用 OAuth 2.1 PKCE:任何传输方式都不支持 ZENDESK_EMAIL + ZENDESK_API_TOKEN(Basic 身份验证)模式。这是有意为之,原因有二。

  1. API 令牌的安全性不足。 Zendesk API 令牌是长期有效的静态共享密钥,拥有签发者的全部权限。它无法按用户限定权限、不会短期过期,也不支持按用户授权或撤销。OAuth 2.1 PKCE 则会签发按用户区分且可撤销的令牌。
  2. API 令牌无法扩展。 单个静态凭据无法将操作归属到具体用户,也无法按用户单独撤销。它还会使多用户远程部署变得不安全:通过 HTTP 使用时,每位调用者都能获得签发者的权限。

如果你确实需要 API 令牌或服务帐户模式(例如,使用共享帐户进行无头 CI),请使用其他支持此模式的 Zendesk MCP 服务。你可以在灵感与相关项目下找到一些项目。

快速开始:本地(stdio)

默认使用方式:一名开发者、一个 Zendesk 帐户,通过浏览器使用 OAuth 2.1 PKCE。你需要 Node.js >= 22 和一个 Zendesk 实例(Support 或 Suite)。

安装
# Run without installing
npx -y @fruggr/zendesk-mcp-server <your-subdomain>

# Or install globally
npm install -g @fruggr/zendesk-mcp-server
zendesk-mcp-server <your-subdomain>

登录需要 Zendesk OAuth 客户端,因此请先注册一个(见下一节)。

Zendesk OAuth 设置
  1. 前往 Admin Center → Apps and integrations → APIs → OAuth Clients
  2. 创建一个公共客户端:
    • Identifier:<your-subdomain>_zendesk(或设置 ZENDESK_OAUTH_CLIENT_ID)
    • Redirect URL:http://localhost:27439/callback(如果覆盖此端口,请将其改为与 OAUTH_CALLBACK_PORT / --callback-port 相匹配;Zendesk 接受多个重定向 URL,每行一个)

如果客户端限制了允许的作用域,则需要 read;除非服务以 --read-only 运行,否则还需要 write。该选项只会向 Zendesk 请求 read 作用域。

首次调用工具时,服务会启动登录流程:它会打开浏览器窗口,并在工具消息中返回授权 URL。调用不会阻塞等待登录,因此请在浏览器中完成身份验证,然后重试请求。令牌会保存到仅所有者可访问的文件中,并在重启后继续使用,因此 MCP 客户端重新启动服务时,你无需每次都重新进行身份验证(路径和覆盖选项:OAUTH_TOKEN_FILE)。多个实例可以并行运行,例如一个读写实例和一个 --read-only 实例,且无需交换凭据。

MCP 客户端配置
Claude Desktop

添加到你的 claude_desktop_config.json:

{
  "mcpServers": {
    "zendesk": {
      "command": "npx",
      "args": ["-y", "@fruggr/zendesk-mcp-server", "<your-subdomain>", "--mode", "single"]
    }
  }
}
Claude Code
claude mcp add zendesk -- npx -y @fruggr/zendesk-mcp-server <your-subdomain> --mode single
VS Code (Copilot / Continue / Cline)

添加到你的 .vscode/mcp.json:

{
  "servers": {
    "zendesk": {
      "command": "npx",
      "args": ["-y", "@fruggr/zendesk-mcp-server", "<your-subdomain>", "--mode", "single"]
    }
  }
}

遇到问题?请参阅故障排除。

快速开始:远程(HTTP)

实验性功能。 HTTP 传输已提供,但尚未在所有 MCP 客户端中针对真实 Zendesk 租户完成端到端测试。本地 stdio 是受支持的方式。

你也可以为一个 Zendesk 账户部署私有远程 MCP 服务。 它是独立的 OAuth 授权服务器:claude.ai 和 ChatGPT 等 Web 客户端可通过 URL 添加该服务并自行注册;每位用户通过它登录 Zendesk, 无需共享管理员密钥,也无需针对每个客户端单独配置 Zendesk。每个版本还会提供经过 强化的 distroless 容器镜像(ghcr.io/fruggr/zendesk-mcp-server),并经过签名和证明。完整指南涵盖镜像、需要添加到 Zendesk OAuth 客户端的唯一重定向 URL、 主密钥和授权存储、反向代理后的 --public-url、受信任客户端、MCP 客户端配置、CORS,以及仍由运营方负责的事项: docs/http-deployment.md。

工具概览

工具分为以下命名空间:工单、帮助中心、用户与组织、搜索、连接器偏好设置(此 MCP 服务自身的用户设置,例如 SLA 提醒阈值,不会写入 Zendesk),以及请求(面向最终用户的功能,可选择启用,详见最终用户模式)。服务会以以下三种模式之一注册这些工具,你可以在功能粒度和上下文预算之间进行权衡:

  • all:每项操作都是独立工具,适合工具选择能力较强的客户端;
  • namespace(默认):每个命名空间对应一个代理工具,兼顾两者;
  • single:所有操作都由单个 zendesk 工具提供,适合工具槽位有限的模型(连接器自身的偏好设置仍会通过旁边的 connector_preferences 代理工具提供)。

代理工具接收 { "operation": "<tool_name>", "params": { … } },并根据原始架构验证 params。--namespace、--tool 和 --read-only 会在创建代理工具之前筛选工具,因此每个代理工具仅描述筛选后保留的操作。

选择工具清单只有一种方式(--namespace / --tool),--mode 决定如何打包,--read-only 则进一步缩小范围。如果这些选项的组合不够直观,请不要猜测——无需凭据,使用 --print-tools 即可让服务列出它会公开的工具。

每个工具及其描述和 read/write 模式见: docs/mcp-tools-reference.md。标志和实际示例见:docs/configuration.md。

最终用户模式

以上内容面向 Zendesk 客服人员。本节则介绍另一类用户:你的客户。

在网页上,客户通过帮助中心的“提交请求”表单创建工单——选择请求类型、填写相应字段、附加文件,之后再回来查看回复。最终用户模式让他们能在自己的助手中完成同样的流程。

适用对象

适用于引导客户使用 MCP 服务的供应商,让客户能够在他们已有的工作环境中获得支持。客户自行安装,并使用自己的帮助中心账户登录,且只能看到属于自己的内容。

启用方法

面向最终用户的工具位于 requests 命名空间中,且需要选择启用:客服人员的安装不应继承为其他用户设计的工具;其中一个工具(将请求标记为已解决)完全无法使用客服人员令牌——Zendesk 会接受请求,但不执行任何操作。建议同时提供 help_center,因为能够搜索知识库的客户往往无需创建工单。

相关标志以及如何让服务列出不同配置组合会公开的内容,详见:docs/configuration.md。

支持的流程
  • 查看有哪些请求类型。 查看供应商提供的表单及其面向客户的名称。
  • 了解表单需要填写哪些内容。 查看表单中的问题、必填项,以及下拉菜单中的确切选项,这样助手就能在对话中收集这些信息,而不是猜测请求参数。
  • 提交请求,并附加文件。
  • 跟进请求。 列出自己的请求,查看包含完整对话记录的单条请求(注明每条回复的发送者,并标明客服人员),回复,以及在请求解决后将其标记为已解决。
Zendesk 账户的要求

除客服人员模式已有的要求外,还需要一项条件:至少有一个标记为对最终用户可见的工单表单,因为客户需要从中选择。登录过程按设计必须通过浏览器交互完成——没有通过脚本或无头方式获取最终用户令牌的途径。这一保护机制同样能防止其他人冒充你的客户登录。

完整的前置条件见:docs/configuration.md。面向不使用终端的用户的分步指南见:docs/end-user-onboarding.md。

客户无法做什么——也不应该做什么

客户能做的比 Agent 少。这是设计如此,并非功能缺失:

  • 只能处理自己的工单。 由 Zendesk 强制执行,而非我们。
  • 不能添加内部备注,无论是哪个方向。仅 Agent 可见的备注永远不会出现在此界面返回的内容中——Zendesk 会在请求者查看工单时将其完全过滤掉。
  • 不能设置优先级或类型。 客户设置这两项时,Zendesk 都会将其丢弃;分流仍由 Agent 负责。
  • 只有 Agent 接手工单后,才能关闭工单。 在此之前,Zendesk 不会允许请求者解决工单,因此工具会如实说明,而不会假装可以操作。
  • 不能搜索所有工单,不能查找用户,也不能访问视图或宏。

帮助中心上下文

除了工具之外,服务端还会向大模型提供你的帮助中心结构:已启用的区域设置、带 ID 的类别 → 分区树、可见性细分和权限组。有了这些信息,它就能使用真实 ID,而不是猜测或模糊匹配名称。所有内容都通过 MCP 原生渠道传递,即在 initialize 时发送的 instructions 数据块,以及用于获取拓扑信息和读取(或固定)单篇文章的只读资源。资源使用调用者自己的令牌获取,不支持资源的客户端会静默忽略它们。

公开的内容、预先列出推荐文章会产生多少请求,以及如何分别关闭各项功能:docs/help-center-context.md。

配置

CLI 标志(--mode、--namespace、--read-only、--transport、--public-url 等)和环境变量(ZENDESK_SUBDOMAIN、OAUTH_TOKEN_FILE、PUBLIC_URL、附件视觉处理上限)的完整参考,请参阅 docs/configuration.md。每个变量都有自己的锚点,因此你可以直接链接到特定设置。

故障排查

OAuth 登录期间浏览器未打开、回调端口已被占用、每次都必须重新进行身份验证,以及 Guide 管理端点上的 Permission denied,详见 docs/troubleshooting.md。使用 LOG_LEVEL=debug 重启,可查看完整的 OAuth 流程跟踪信息。

开发

仓库设置、工具链、开发模式以及如何测试 PR 分支,详见 CONTRIBUTING.md。架构和代码风格规范见 AGENTS.md。

常见问题

支持哪些 Zendesk 产品? Zendesk Support(工单、用户、组织)和 Help Center / Guide(文章、分区、类别、翻译、标签、内容标签、细分、附件)。Talk、Explore 和 Sell 不在支持范围内。

我需要 Zendesk 管理员 API 密钥吗? 不需要,而且服务端不支持使用此类密钥。每位用户都使用自己的凭据进行身份验证,服务端严格按照其权限执行操作 (原因)。

通过 npx 运行安全吗? 发布版本通过 CI 使用 npm Trusted Publishing(OIDC)发布,因此每个版本都带有构建来源证明,可在其 npm 页面上验证。服务端绝不会记录任何机密信息。

贡献

欢迎提交拉取请求,也包括 AI 辅助完成的请求,但作者必须亲自阅读并验证每一行内容。贡献指南、作者检查清单和审查工作流见 CONTRIBUTING.md。

版本遵循 SemVer 规范,并根据 Conventional Commits 自动发布;版本历史见 CHANGELOG.md。

灵感与相关项目

本项目的开发参考了:

许可证

MIT


由 Digital4better 为 Fruggr 项目构建并维护。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。