Skip to main content
Glama
bhargavlukka

TicketDesk MCP

by bhargavlukka

TicketDesk MCP – Produktionsreifer MCP-Server & -Client

Ein Server auf Basis des Model Context Protocol (MCP), der eine interne Warteschlange für Support-Tickets bereitstellt, gekoppelt mit einem Client, der dessen Tools, Ressourcen und Prompts entdeckt und aufruft. Gebaut für das Labor „Build a Production MCP Server & Client“ (Modul 4, Model Context Protocol).

Inhaltsverzeichnis

Related MCP server: TicketAI

Architektur

flowchart TD
    HOST["Host application\n(e.g. an AI assistant / chatbot)"] --> CLIENT

    subgraph Client["client.py — fastmcp.Client"]
        CLIENT["Discovery: list_tools / list_resources /\nlist_resource_templates / list_prompts"]
        ELICIT["elicitation_handler\n(client-side safety gate for\nhigh-impact actions)"]
        CLIENT <--> ELICIT
    end

    CLIENT <-->|"Streamable HTTP\nAuthorization: Bearer <token>"| SERVER

    subgraph Server["server.py — FastMCP('TicketDesk')"]
        AUTH["StaticTokenVerifier\n(read:tickets / write:tickets scopes)"]
        TOOLS["Tools: search_tickets, get_ticket,\nadd_ticket_note, close_ticket"]
        RES["Resources: ticket://{ticket_id},\npolicy://sla"]
        PROMPT["Prompt: triage_ticket"]
        AUTH --> TOOLS
        AUTH --> RES
        AUTH --> PROMPT
    end

    SERVER --> DATA[("data/tickets.json,\ndata/sla_policy.md")]

Transport: Streamable HTTP – begründet in docs/architecture.md (Kurzfassung: Dies ist als gemeinsame interne Fähigkeit gedacht, an die die KI-Anwendungen mehrerer Teams anschließen, nicht als einzelnes lokales Prozesspaar, wofür stdio geeignet ist).

Was der Server bereitstellt

  • 4 Tools: search_tickets, get_ticket, add_ticket_note, close_ticket (das letzte ist eine Aktion mit großer Auswirkung, die durch eine client-seitige Rückfrage abgesichert ist)

  • 2 Ressourcen: ticket://{ticket_id} (vorlagenbasiert) und policy://sla (statisch)

  • 1 Prompt: triage_ticket

Die vollständige Dokumentation aller Elemente: docs/tools-resources-prompts.md.

Einrichtung & Ausführung der Demo

pip install -r requirements.txt

# Terminal 1
python server.py

# Terminal 2
python client.py                # interactive: real confirmation prompts via input()
python client.py --auto-confirm # non-interactive demo mode (used to produce demo/session_log.txt)

client.py verbindet sich mit dev-agent-token (Scopes für Lesen und Schreiben), führt die Discovery aus, ruft je ein Tool, eine Ressource und einen Prompt auf, demonstriert beide Fehlermodi (Anforderung 8), führt die Aktion close_ticket mit großer Auswirkung über eine client-seitige Rückfrage aus (Anforderung 6) und endet mit einer Least-Privilege-Demo, die zeigt, dass dev-readonly-token korrekt von einem Tool mit Schreib-Scope abgelehnt wird.

Sicherheit

Vollständige Darlegung: docs/security-summary.md. Kurzfassung: Bearer-Token-Authenfiserung über StaticTokenVerifier, explizite Scope-Prüfungen pro Tool (eine echte original Lücke – alleinige Scope-Anforderungen auf Veretzungsebene beschränken die einzelnen Tool-Aufrufe nicht – wurden während der Entwicklung entdeckt and behoben; see das Sicherheitsdokument für den erflichen Rahmen), sowie ToolError + mask_error_details=True, um vom Benutzer behebbare Fehler von Hairinterne Fehler, die niemals unverebndert beim Client ankommen dürfen, zu unterscheiden.

Anforderungszuordnung

Anforderung

Wo die Anforderung erfüllt wird

≥3 Tools

search_tickets, get_ticket, add_ticket_note, close_ticket (server.py)

≥2 Ressourcen, je eine URI

ticket://{icket_id}, policy://sla (server.py)

≥1 wiedervererbares Prompt

triage_ticket (server.py)

Client entdeckt und ruf jede Komponent aus

client.py run_discovery_and_demo()

Transportwahl begründet

docs/architecture.md

Cliente-seitige Sicherheitsfunktion

Rückshrage-Abösicherung für abc close_ticket (client.py elicitation_handler`)

Sicherheitsdesign-Zusammenfassung

docs/security-summary.md

Fehlerbeandlung für einen realische Ausfall-Modus

Ungültige Ticket-ID (ToolError) + simulierter Ausfall des Backing-Stores (mask_error_details) – beede in server.py, demonstriert in client.py

Demo-Logs

demo/session_log.txt (echter aufgezeichneter Lauf)

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.

  • AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.

  • Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bhargavlukka/ticketdesk-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server