Skip to main content
Glama
bhargavlukka

TicketDesk MCP

by bhargavlukka

TicketDesk MCP — MCP-сервер и клиент производственного уровня

Сервер на базе Model Context Protocol (MCP), предоставляющий доступ к внутренней очереди заявок службы поддержки, в паре с клиентом, который обнаруживает и вызывает его инструменты, ресурсы и промпты. Создан для лабораторной работы «Build a Production MCP Server & Client» (Module 4, Model Context Protocol).

Содержание

Related MCP server: TicketAI

Архитектура

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")]

Транспорт: Streamable HTTP — обоснование приведено в docs/architecture.md (если коротко: это общий внутренний сервис, к которому подключаются ИИ-приложения нескольких команд, а не одна пара локальных процессов, для которой подходит stdio).

Что предоставляет сервер

  • 4 инструмента: search_tickets, get_ticket, add_ticket_note, close_ticket (последний — действие с высоким уровнем влияния, защищённое запросом подтверждения на стороне клиента)

  • 2 ресурса: ticket://{ticket_id} (шаблонный) и policy://sla (статический)

  • 1 промпт: triage_ticket

Полная документация по каждому элементу: docs/tools-resources-prompts.md.

Настройка и запуск демонстрации

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 подключается с токеном dev-agent-token (права на чтение и запись), выполняет обнаружение, вызывает по одному представителю каждого инструмента/ресурса/промпта, демонстрирует оба режима обработки ошибок (Требование 8), выполняет действие с высоким влиянием close_ticket через запрос подтверждения на стороне клиента (Требование 6) и завершается демонстрацией наименьших привилегий: dev-readonly-token корректно получает отказ в инструменте с правом на запись.

Безопасность

Полное описание: docs/security-summary.md. Если коротко: аутентификация по bearer-токену через StaticTokenVerifier, явные проверки прав (scope) для каждого инструмента (реальный пробел — требований к scope на уровне соединения сами по себе не ограничивают вызовы отдельных инструментов — был обнаружен и исправлен в процессе разработки; честное изложение — в документе по безопасности), а также ToolError + mask_error_details=True, чтобы отделять ошибки, на которые пользователь может отреагировать, от внутренних сбоев, которые никогда не должны доходить до клиента в исходном виде.

Соответствие требованиям

Требование

Где выполняется

≥3 инструментов

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

≥2 ресурсов, каждый является URI

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

≥1 переиспользуемый промпт

triage_ticket (server.py)

Клиент обнаруживает и вызывает каждый элемент

client.py run_discovery_and_demo()

Выбор транспорта обоснован

docs/architecture.md

Функция безопасности на стороне клиента

Запрос подтверждения для close_ticket (client.py elicitation_handler)

Итоговый дизайн безопасности

docs/security-summary.md

Обработка ошибок для реалистичного сбоя

Неверный идентификатор заявки (ToolError) + имитация сбоя хранилища (mask_error_details) — оба в server.py, демонстрация в client.py

Демонстрационные журналы

demo/session_log.txt (реальный записанный запуск)

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