ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

在 Hive Multi-Agent 中集成 Zendesk:基于 MCP 的工单管理与搜索实战指南

2026/9/24 15:00:23 拓冰建站 浏览量
在 Hive Multi-Agent 中集成 Zendesk:基于 MCP 的工单管理与搜索实战指南 人工智能AI Agent多智能体MCP 服务工具调用浏览器控制【免费下载链接】hiveMulti-Agent Harness for Production AI项目地址https://gitcode.com/gh_mirrors/hive48/hive点击查看免费下载Zendesk Tool 是 Hive 仓库中 Aden Tools 套件的一员它通过 FastMCP 协议将 Zendesk Support API 封装为 8 个可被 AI Agent 直接调用的工具覆盖工单的列出、查看、创建、更新、搜索、评论管理以及用户列表查询。本文以 tools/src/aden_tools/tools/zendesk_tool/README.md 为骨架结合 zendesk_tool.py 的源码实现与测试用例讲解从凭据配置到真实调用的完整链路读完即可在自有 Agent 工作流中接入 Zendesk 工单自动化。工具总览8 个 MCP 工具覆盖工单全生命周期Zendesk Tool 的核心定位是Ticket management, comments, user listing, and search via the Zendesk Support API即围绕 Zendesk 工单系统提供增、查、改、搜的完整能力。所有工具都以zendesk_前缀命名通过 MCP 暴露给 Agent与 Aden Tools 中其他 SaaS 集成Slack、Salesforce、HubSpot 等保持一致的接入范式。ToolDescriptionzendesk_list_ticketsList tickets in the accountzendesk_get_ticketGet full details of a specific ticketzendesk_create_ticketCreate a new support ticketzendesk_update_ticketUpdate ticket status, priority, or tagszendesk_search_ticketsSearch tickets using Zendesk query syntaxzendesk_get_ticket_commentsList all comments on a ticketzendesk_add_ticket_commentAdd a public reply or internal note to a ticketzendesk_list_usersList users filtered by role从源码结构看这 8 个工具全部定义在 zendesk_tool.py 的register_tools(mcp: FastMCP, credentials)函数内以mcp.tool()装饰器注册到 FastMCP 服务器。该模块通过 tools/init.py 中的register_zendesk(mcp, credentialscredentials)挂载进 Aden Tools 的验证工具集合属于默认注册的 verified 工具无需include_unverifiedTrue即可启用。环境配置三个凭据变量与 CredentialSpec 声明Zendesk 工具使用 HTTP Basic 认证邮箱 API Token需要三个环境变量ZENDESK_SUBDOMAINyour-subdomain ZENDESK_EMAILagentyourcompany.com ZENDESK_API_TOKENyour-api-tokenZENDESK_SUBDOMAINis the part before.zendesk.com. Forhttps://acme.zendesk.com, useacme.在 Zendesk 管理后台创建 API TokenLog in to your Zendesk admin panelGo toAdmin → Apps and integrations → APIs → Zendesk APIEnableToken Accessand create a new API token源码中的凭据获取逻辑_get_credentials()zendesk_tool.py展示了两种凭据来源的优先级若register_tools被传入CredentialStoreAdapterHive 框架的凭据存储适配器则通过credentials.get(zendesk_subdomain)、credentials.get(zendesk_email)、credentials.get(zendesk_token)读取否则回退到os.getenv()直接读取上述三个环境变量。对应的凭据声明位于 credentials/zendesk.py三个凭据均被标记为requiredTrue、startup_requiredFalse即运行时按需校验而非启动时强制并且都挂载到全部 8 个工具上。这意味着 Agent 只有在真正调用 Zendesk 工具时才会触发凭据校验。认证头的构造细节源码用邮箱与 Token 组合构造 Basic Authdef _auth_header(email: str, token: str) - str: encoded base64.b64encode(f{email}/token:{token}.encode()).decode() return fBasic {encoded}注意这里的特殊格式email/token:api_token是 Zendesk API 约定的 Basic 认证用户名格式Token 作为密码的一部分与邮箱拼接后整体 Base64 编码这是 Zendesk CloudBasic auth with email/token API token的标准认证方式。请求统一走https://{subdomain}.zendesk.com/api/v2端点见_base_url()并设置 30 秒超时。工具使用示例从查询到工单流转以下示例均来自 README 原始用法可直接在 Agent 会话或 MCP 客户端中调用。List open tickets列出工单zendesk_list_tickets(page_size25)源码中page_size取值范围被钳制在 1–100max(1, min(page_size, 100))默认 25。返回结构为{tickets: [...], count: n}每个工单经_extract_ticket()裁剪为 id、subject、description截断 500 字符、status、priority、type、tags、requester_id、assignee_id、created_at、updated_at。Get a specific ticket查看工单详情zendesk_get_ticket(ticket_id12345)ticket_id为必填缺省时返回{error: ticket_id is required}。成功时返回与 list 相同的精简字段结构_extract_ticket。Create a new ticket创建工单zendesk_create_ticket( subjectLogin button not working, bodyUsers are reporting that the login button on mobile is unresponsive., priorityhigh, ticket_typeincident, tagsmobile,login,bug, )参数说明对应 源码subject、body必填缺一即返回错误priority默认normal合法取值urgent / high / normal / lowticket_type可选合法取值question / incident / problem / tasktags为逗号分隔字符串源码会split(,)后去空白生成标签数组创建成功后额外返回urlhttps://{subdomain}.zendesk.com/agent/tickets/{id}与result: created便于 Agent 直接向用户给出工单链接。Update a ticket status更新工单状态zendesk_update_ticket( ticket_id12345, statuspending, priorityurgent, )zendesk_update_ticket支持同时更新status、priority、comment附comment_public布尔值控制是否对请求者可见默认True以及替换tags。只要传入任一字段即发起PUT请求若全部为空则返回{error: At least one field to update is required}而非空请求。Add a public reply to a ticket公开回复zendesk_add_ticket_comment( ticket_id12345, bodyWe have identified the issue and a fix is being deployed., publicTrue, )Add an internal note内部备注zendesk_add_ticket_comment( ticket_id12345, bodyEscalated to the backend team via Slack #incidents., publicFalse, )zendesk_add_ticket_comment与zendesk_update_ticket的关键区别在于前者专用于追加评论publicFalse即生成内部备注仅客服侧可见对请求者不可见适合 Agent 记录内部处理过程实现上两者最终都通过PUT /tickets/{id}携带{ticket: {comment: {...}}}完成。Search tickets按 Zendesk 查询语法搜索zendesk_search_tickets( querystatus:open priority:urgent, sort_byupdated_at, sort_orderdesc, )zendesk_search_tickets走 Zendesk/api/v2/search端点支持sort_byupdated_at / created_at / priority / status默认updated_at与sort_orderasc / desc默认desc。源码还有一个贴心细节若查询串中未包含type:字段会自动补全为type:ticket前缀避免搜索结果混入用户、组织等其他对象。Search by assignee and tag按处理人与标签搜索zendesk_search_tickets(queryassignee:agentcompany.com tags:billing)List all agents按角色列出用户zendesk_list_users(roleagent, page_size50)zendesk_list_users的role可选end-user / agent / admin空则列出全部page_size同样钳制在 1–100。返回字段为 id、name、email、role、active、created_at。Ticket Status Values工单状态取值Zendesk 工单状态是zendesk_update_ticket的核心枚举语义如下StatusMeaningnewNewly created, unassignedopenAssigned and being worked onpendingWaiting for requester responseholdWaiting on a third partysolvedResolved by agentclosedPermanently closed推荐的状态流转Agent 收到新工单 → 检索历史zendesk_search_tickets→ 阅读评论zendesk_get_ticket_comments→ 需要客户补充信息时置pending并附公开评论 → 等待第三方时置hold→ 解决后置solved最终人工归档为closed。Error Handling错误处理所有工具在失败时都返回统一的错误字典结构而不是抛出异常方便 Agent 直接读取并作出下一步决策。README 给出的典型错误响应[ {error: ZENDESK_SUBDOMAIN, ZENDESK_EMAIL, and ZENDESK_API_TOKEN not set, help: Create an API token in Zendesk Admin Apps and integrations APIs Zendesk API}, {error: Unauthorized. Check your Zendesk credentials.}, {error: Forbidden. Check your Zendesk permissions.}, {error: Rate limited. Try again shortly.}, ]源码层的错误映射规则_request()zendesk_tool.py对 HTTP 状态码与异常做了完整映射401→Unauthorized. Check your Zendesk credentials.凭据错误403→Forbidden. Check your Zendesk permissions.Token 有效但权限不足404→Not found.429→Rate limited. Try again shortly.触发 Zendesk 速率限制可配合重试策略其他非 200/201→Zendesk API error {code}: {resp.text[:500]}截取前 500 字符响应体便于排查httpx.TimeoutException→Request to Zendesk timed out30 秒超时其他异常→Zendesk request failed: {e}。三个凭据任一缺失时工具统一返回_auth_error()字典含error与help两个键help 字段直接指引用户到管理后台创建 API Token。源码级验证测试用例如何保障工具行为仓库在 tools/tests/tools/test_zendesk_tool.py 中为 Zendesk 工具提供了完整的单元测试覆盖了 README 描述的每类场景缺凭据分支test_missing_credentials清空环境变量后断言返回error键成功路径test_successful_list/test_successful_get通过 mockhttpx.get验证返回结构与字段裁剪如 subject、priority参数校验test_missing_id、test_missing_params、test_missing_query分别验证ticket_id、subject/body、query缺失时的错误字典写操作test_successful_createmock 201 响应断言result created、test_successful_updatemockhttpx.put断言 status 更新生效搜索test_successful_search验证查询语法与count字段。这些测试与源码共同印证工具的契约是**要么返回结构化数据要么返回带 error 键的字典**Agent 端只需统一判断error in result即可安全处理所有失败路径。测试环境变量ZENDESK_SUBDOMAINtest等也说明该工具面向 Zendesk Cloud 而非本地/私有化部署。接入 Agent 工作流的建议从 Aden Tools 的注册机制tools/init.py可以看到Zendesk 工具与其余 60 个 SaaS 集成共享同一套register_all_tools入口。实际接入时注意三点凭据注入优先通过 Hive 框架的CredentialStoreAdapter传入调用链register_all_tools(mcp, credentials...)Agent 子进程无需自行管理环境变量独立运行mcp_server.py时则回退到进程环境变量。状态语义pending表示等待请求者响应Agent 应在置pending时同时追加公开评论说明所需信息内部流转信息一律用publicFalse内部备注避免向客户暴露内部处理细节。搜索语法zendesk_search_tickets的 query 遵循 Zendesk 原生语法如assignee:email、tags:xxx、status:open工具会自动补充type:ticket前缀但复杂组合如按组、按时间区间需要 Agent 按 Zendesk 官方字段语法构造。赞分享人工智能AI Agent多智能体MCP 服务工具调用浏览器控制【免费下载链接】hiveMulti-Agent Harness for Production AI项目地址https://gitcode.com/gh_mirrors/hive48/hive点击查看免费下载相关推荐在 CAI 中集成 MCP Git Server基于 MCPServerStdio 的仓库分析 Agent 实战指南在 CAI 中集成 MCP Git Server基于 MCPServerStdio 的仓库分析 Agent 实战指南 本篇技术指南以 examples/mcp人工智能AI Agent网络安全渗透测试工具调用AI 评测在 mcp-agent 中集成 CrewAI 工具SerperDevTool 与 FileWriterTool 实战指南在 mcp agent 中集成 CrewAI 工具SerperDevTool 与 FileWriterTool 实战指南 本文以 mcp agent 仓库中的人工智能AI AgentAgent 框架MCP ClientsAgent 工作流Flue 实战基于 Zendesk Webhook 构建工单驱动的 Agent 频道Zendesk channel example 深度解析Flue 实战基于 Zendesk Webhook 构建工单驱动的 Agent 频道Zendesk channel example 深度解析 导读 本文围人工智能大模型AI AgentAgent 框架工具调用Agent 沙箱MCP Clients上一篇Paperless-ngx Docker 部署怎么安装第三方解析器插件并验证加载成功下一篇ffsend快捷键设置提升命令行操作效率创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考