Skip to main content

Zammad MCP Server

An MCP server exposing a Zammad helpdesk to a model. Built on zammad-python-client; it owns tool design, safety and response shaping and no HTTP logic at all.

Fifteen tools shaped like support jobs, not CRUD:

Tool Does Writes
find_customer People and organizations by name, email, login no
search_tickets Zammad query syntax or free text; summaries only no
get_ticket One ticket with conversation (as text), tags, booked time no
reference_data Groups, states, priorities, time types with ids no
create_ticket New ticket for a customer with an internal opening note yes
add_note Internal note, optional time booking yes
reply_to_customer Stores a draft note by default; mails only with send=true yes
update_ticket State, priority, owner, group, title, pending time, with a note yes
log_time Book time on a ticket yes
search_knowledge Knowledge base search as agent (internal + public) no
get_answer One answer, body as text no
write_answer New answer, set to internal (agents only) yes
update_answer Change title/body of one translation, or move the answer; visibility untouched yes
create_category New knowledge-base category, optionally nested yes
kb_structure Knowledge bases, locales, categories with ids no

Deliberately absent: delete anything, merge tickets, publish an answer publicly, mail a customer without send=true. Every write is something an agent does all day and can undo in the UI.

Install

On PyPI as zammad-mcp; the server itself needs no install step:

claude mcp add --scope user zammad -e ZAMMAD_URL=https://zammad.example.com -e ZAMMAD_TOKEN=... -- uvx zammad-mcp

Any MCP client: command uvx, args ["zammad-mcp"], env ZAMMAD_URL and ZAMMAD_TOKEN. Teams on our marketplace install the zammad plugin instead, which asks for the token on install.

From a checkout: uv venv && uv pip install -e ".[dev]", then .venv/bin/zammad-mcp with ZAMMAD_URL / ZAMMAD_TOKEN in .env.

Token: create a dedicated agent user in Zammad (e.g. mcp) with only the groups the model should see, ticket.agent, knowledge_base.reader and, if it may write answers, knowledge_base.editor. Generate the token under that user's profile. Never use an admin token.

Behaviour

  • Lists are capped (ZAMMAD_MCP_DEFAULT_LIMIT, ZAMMAD_MCP_MAX_LIMIT) and say so in notes.
  • Article and answer bodies are HTML-to-text and cut at ZAMMAD_MCP_BODY_CHARS, disclosed in notes.
  • Errors come back as {"error": "<sentence>"}, never as exceptions.
  • One client per worker thread; the SDK runs tool handlers concurrently.

Development

pytest -q   # fake client + one real stdio handshake, no network
mypy
scripts/verify-live.py --ticket <id>   # read-only tools against a real instance (.env)

Releases: bump version in pyproject.toml and __version__ in src/zammad_mcp/__init__.py together, tag vX.Y.Z; CI publishes to PyPI.

Metadata

Release files for zammad-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zammad-mcp 0.1.1
File Size Uploaded
zammad_mcp-0.1.1.tar.gz 19.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for zammad-mcp 0.1.1
File Interpreter ABI Platform
zammad_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 36.2 kB

Release files / zammad_mcp-0.1.1.tar.gz

Download URL zammad_mcp-0.1.1.tar.gz
Size 19.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f487d7a1619a2c9dd2250d2802bff64c62dfad568b082fe4ec719bde4830ee2c
BLAKE2b-256 checksum
How to use checksums
bad8e12d00c79346525121edc7dc47c405215bda3cd2cb10d72f7bc257a6bc54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / zammad_mcp-0.1.1-py3-none-any.whl

Download URL zammad_mcp-0.1.1-py3-none-any.whl
Size 17.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3842be6c6b7fef16083ce4540ddd04a1a7f7e02e020efb1707d3e2ce974185cf
BLAKE2b-256 checksum
How to use checksums
558a52114f126ae53e537e30e5f42562558705ac21e5f241b5ae89788871835e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page