关于 Zammad (Mojood Connect)
面向 Zammad 服务台团队的 MCP 服务,可通过 Claude 查询工单、客户和待处理事项,并在确认后添加内部备注或更改工单。备注仅供内部查看,不提供向客户发送内容的工具。
主要功能
- 01按关键词查找或列出工单
- 02查看工单消息和内部备注
- 03汇总客户及其工单
- 04识别无人负责和待处理工单
- 05确认后添加内部备注或更新工单
适用场景
- 01查看某客户的未结工单
- 02找出无人负责或等待处理过久的工单
- 03阅读工单消息并区分内部备注
- 04确认后分派工单或更新优先级
MCP 相关
该 MCP 服务通过 Zammad REST API 向 MCP 客户端提供工单、客户和待办查询工具,以及内部备注和工单更新操作。变更需经一次性确认码批准,并以 API 令牌用户的权限执行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Zammad MCP server
用日常语言向 Claude 咨询你的支持服务台:某位客户有哪些未处理事项、哪些问题需要关注,以及工单内容是什么。你也可以在同一段对话中分派工单并添加内部备注,每次更改前都会先确认。没有任何工具可以向客户发送内容。
由 Mojood Connect 构建,作为 Zammad 的可用演示。它通过 REST API 连接任意 Zammad。本仓库包含一套本地 Zammad,其中有一家虚构公司 Harbor Trading 的支持服务台示例数据,供你试用,不会影响真实实例。
工具
| 工具 | 功能 | 是否会进行更改? |
|---|---|---|
find_tickets | 按关键词查找工单,或按状态、优先级、负责人、客户、公司以及工单当前正在等待我方还是客户处理等条件列出工单 | 否 |
get_ticket | 获取单个工单及其按顺序排列的全部消息,并标明内部备注 | 否 |
customer_overview | 查看公司或个人:其联系人、未结工单和已结工单数量;如果名称匹配多个对象,会询问你要查看哪一个 | 否 |
needs_attention | 列出无人负责的工单、等待我方处理的工单(按等待时间从长到短排列)、已逾期的待处理提醒和高优先级工单 | 否 |
add_internal_note | 为工单添加内部备注,客户永远不可见 | 是,需确认后才会进行 |
update_ticket | 分派工单,或更改其状态或优先级 | 是,需确认后才会进行 |
如何确保更改安全。 调用 add_internal_note 或 update_ticket 时,如果未提供 confirmation,不会进行任何更改:工具会返回一段简明摘要(“将 #43002(“40 个客房保险箱尺寸不符,订单 HT-SO-5521”)分派给 Karim Nasser。”)和一次性代码。只有在 10 分钟内,使用该代码再次提交相同请求,更改才会生效。代码只能使用一次,且仅适用于发放时对应的请求。服务的指令会要求模型展示摘要并等待用户确认。备注中会注明“via Claude (Mojood Connect demo)”,每项更改也都会以令牌所属用户的身份记录在工单历史中。
服务使用 API 令牌所属用户的身份运行,并遵循该用户的 Zammad 权限。
在本地试用
需要 Docker(含 Compose)、uv 和 Python 3.13。Zammad 需要约 4 GB 内存。
scripts/reset.sh # local Zammad on http://localhost:8090, filled with the SAMPLE desk
uv run --env-file .env zammad-mcp # MCP server on http://127.0.0.1:8003/mcp (Streamable HTTP)
docker/compose.yml 是未经修改的 Zammad 官方 Compose 文件(zammad-docker-compose v17.5.4);
docker/compose.override.yml 将端口绑定到 127.0.0.1,移除备份容器和 Elasticsearch(此时 Zammad 会改为搜索自己的数据库)。scripts/reset.sh 会自行生成所有密码和 API 令牌,并将它们保存在 Git 忽略文件 docker/.env 和 .env 中;不会打印任何内容。重启后,scripts/up.sh 会重新启动服务,且不会触碰数据。
**Claude Desktop:**将以下内容添加到 claude_desktop_config.json(设置 › 开发者),并将路径替换为此文件夹的路径:
{
"mcpServers": {
"zammad": {
"command": "uv",
"args": ["run", "--directory", "/path/to/zammad-mcp", "--env-file", "/path/to/zammad-mcp/.env", "zammad-mcp", "--stdio"]
}
}
}
然后提问:“Al Noor Hotels 有哪些未处理事项?”“服务台有哪些问题需要关注?”“把客房保险箱工单分派给 Karim,并备注 20 升保险箱会在周四发货。”
**使用你自己的 Zammad:**设置 ZAMMAD_URL、ZAMMAD_TOKEN(从个人资料的 Token Access 获取令牌)和 ZAMMAD_SAMPLE=0。
示例支持服务台
Harbor Trading 的支持服务台:三个组(Orders、Deliveries、Billing)、四名 Agent、六家客户公司、七名客户联系人和 15 张工单。消息时间会根据初始化数据的日期动态设置,因此始终会有无人负责的工单、等待我方处理数小时的客户、两条逾期提醒,以及几张已结工单。这里的所有人和事物都是虚构的。
测试
uv run --env-file .env pytest # unit tests (a fake Zammad API), plus live tests when the local Zammad runs
生产版本增加的功能
此演示使用一个 API 令牌登录。面向 Zammad 客户的生产服务器还会支持使用每位 Agent 自己的 Zammad 账户登录,让 Claude 只能看到他们有权查看的群组;提供带有每次工具调用审计日志的托管服务;并接入更多 API 功能(标签、链接、工时记录、知识库,以及供 Agent 发送的回复草稿)。这正是 Mojood Connect 所构建的内容。
许可证
Apache 2.0。Zammad 是 Zammad GmbH 的商标;本项目并非由 Zammad GmbH 制作或认可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。