zammad-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZAMMAD_URL | Yes | REST base URL, e.g. https://mail.example.com/api/v1/. | |
| ZAMMAD_HTTP_TOKEN | Yes | API token (Profile → Token Access in Zammad). | |
| ZAMMAD_SELF_EMAILS | No | Comma-separated list of own addresses that should never appear in CC. Default: empty (no filtering). | |
| ZAMMAD_BANNED_NAMES | No | Comma-separated list of name patterns the reply body must not contain (typically: your own name, because the signature already supplies it). Default: empty. | |
| ZAMMAD_QUOTE_LOCALE | No | Default locale for the quote-block lead-in. Either 'en' (default) or 'de'. Per-call overridable via the 'quote_locale' tool parameter. | |
| ZAMMAD_REQUIRED_GREETING | No | If set, every reply body must contain this string (case-insensitive). Default: empty. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| zammad_create_shared_draft | Create or overwrite the shared draft of a Zammad ticket as a Reply-All email. Auto-detects the most recent customer article and derives to/cc/subject/in_reply_to from it. Renders the agent's signature fresh from Zammad (with placeholder substitution and lazy loading of related objects) and appends the original article as a localised . PUT semantics: any existing draft on the ticket is overwritten. reply_html validation (always on for universal rules, conditional for configured ones): - universal: no top-level , no , no ASCII straight quotes ", no ASCII apostrophe ' inside words - when ZAMMAD_BANNED_NAMES is set: body must not contain any banned name - when ZAMMAD_REQUIRED_GREETING is set: body must contain that greeting |
| zammad_get_ticket_threadA | Fetch a Zammad ticket together with all of its articles in a single call. Combines /tickets/?expand=true and /ticket_articles/by_ticket/ so the model gets ticket meta + full conversation in one round-trip. Use this instead of basher's get_ticket whenever you need the actual article bodies for context (e.g. to write a draft reply). |
| zammad_add_internal_noteA | Add an internal note to a Zammad ticket. Internal notes are visible to agents only and never delivered as email — this tool hard-codes type='note' and internal=true so you cannot accidentally send an email to the customer. If you need to send something to the customer, use zammad_create_shared_draft instead (and let a human send it manually from the Zammad UI). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one adds an internal note, the other fetches a ticket with all articles. No overlap or confusion possible.
Both tools follow the consistent pattern 'zammad_verb_noun' (add_internal_note, get_ticket_thread), making naming predictable.
Only 2 tools for a Zammad ticketing system, which typically requires many more operations (create, list, update tickets, etc.). The set feels insufficient for the domain's scope.
Severely incomplete: basic CRUD operations like create, list, or update tickets are missing. The tool description references 'zammad_create_shared_draft' but it's not available, leaving agents unable to perform customer-facing actions.