Zammad (Mojood Connect) について
Zammad のサポートチーム向け MCP サーバーです。Claude からチケット、顧客、対応が必要な項目を検索し、確認後に内部メモの追加やチケット更新を行えます。メモは内部向けで、顧客への送信機能はありません。
主な機能
- 01キーワードでチケットを検索・一覧表示
- 02チケットのメッセージと内部メモを確認
- 03顧客と関連チケットを要約
- 04担当者不在や対応待ちのチケットを特定
- 05確認後の内部メモ追加・チケット更新
活用シーン
- 01顧客の未解決チケットを確認
- 02未割り当てや長時間対応待ちのチケットを特定
- 03内部メモを区別しながらチケットを読む
- 04確認後にチケットを割り当て、優先度を変更
MCP 対応
Zammad REST API を通じて、チケット、顧客、要対応項目の照会と、内部メモ追加・チケット更新を MCP クライアントに提供します。変更には一度限りの確認コードが必要で、API トークン所有者の権限で実行されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Zammad MCP サーバー
サポートデスクについて、自然な言葉で Claude に質問できます。ある顧客の未対応チケット、注意が必要なもの、チケットの内容などを確認できます。同じチャットからチケットの担当者を設定したり、内部メモを追加したりすることもできます。変更を加える前には確認ステップがあります。顧客に表示される内容を書き込むツールはありません。
Mojood Connect が Zammad 用の実用的なデモとして構築しました。REST API を通じて、あらゆる Zammad インスタンスに接続して動作します。このリポジトリには、架空の会社 Harbor Trading のサポートデスク向けのサンプルデータを用意したローカル Zammad が含まれているため、実際のインスタンスに影響を与えずに試せます。
ツール
| ツール | 機能 | 変更を加えますか? |
|---|---|---|
find_tickets | キーワードでチケットを検索したり、状態、優先度、担当者、顧客、会社、顧客または自社の対応待ちかどうかで一覧表示したりします | いいえ |
get_ticket | 1 件のチケットについて、すべてのメッセージを順番に表示し、内部メモには印を付けます | いいえ |
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 は、データに触れずに、再起動後の Zammad を再び起動します。
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 のサポートデスクには、3 つのグループ(Orders、Deliveries、Billing)、4 人のエージェント、6 社の顧客企業、7 人の顧客担当者、15 件のチケットがあります。メッセージの時刻はデータを作成した日を基準に設定されるため、担当者のいないチケット、何時間も自社の対応を待っている顧客、期限を過ぎたリマインダー 2 件、完了済みのチケットが常にいくつか存在します。登場する人物や内容はすべて架空です。
テスト
uv run --env-file .env pytest # unit tests (a fake Zammad API), plus live tests when the local Zammad runs
本番環境向けバージョンで追加される機能
このデモでは、1つの API トークンでサインインします。Zammad の顧客向けの本番環境用サーバーでは、各エージェントが自分の Zammad アカウントでサインインできるようにすることで、Claude に各自が閲覧できるグループだけを表示します。また、すべてのツール呼び出しを記録する監査ログを備えたホスティングや、API のその他の機能(タグ、リンク、時間管理、ナレッジベース、エージェントが送信する返信の下書き)も追加します。これを実現するのが Mojood Connect です。
ライセンス
Apache 2.0。Zammad は Zammad GmbH の商標です。このプロジェクトは Zammad GmbH によって開発または承認されたものではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。