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 Streamable — 根拠はdocs/architecture.md(短く言えば、これは stdio が向いている「単一のローカルプロセス間の組み合わせ」ではなく、複数のチームの AI アプリケーションが接続する共有の社内機能として想定されているため)。

この MCP の公開アイテム

サーバーが公開するもの

  • 4 tomのツール: search_tickets, get_ticket, add_ticket_note, close_ticket(最後のものはクライアント側立enthousiastic をゲートに持つ高インパクトなアクション)

  • 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.pydev-agent-token(読み取り+書き込みスコープ)で接続し、ディスカバリを実行、各ツール/リソース/プロンプトを一つずつ呼び出し、エラーハンドリングの二つの障害モード(要件 8)を実演し、close_ticket の高インパ仮クトアクションをクライアント側のエリエーションで実行(要件 6)し、最後に最小権限のデモとして dev-readonly-token が書き込みスコープのツールから正しく拒否されることを示します。

セキュリティ

全体については docs/security-summary.mdを参照。要約:StaticTokenVerifier による bearer-token認証、ツール単位の明示的スコープ検査(接続レベル・スコープ要求だけでは個々のツール呼び出しを制限できな、実際のスキマ・ギャップが開発中に発見・修正された。詳はセキュリテイドキュメントの積率な説明を参照)、そして ToolErrormask_error_details=True により、ユーザが対処可能なエラーと、絶対にそのままクライアントに返してはならない内部障害を区別します。

要件写像

要件

満たされる場所

≥3 りつのツール

search_ticket, 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.pyelicitation_handler)

セキュリテイ設計概要

docs/security-summary.md

リアルな障害モードでのエラー処理

無効なチケットID(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