# mcp-ticket-demo

MCP server demo — tickets, schema discovery, auth, and PII gating. stdio + HTTP.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the package rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 1.0.4
- **Author:** io.github.markusvankempen
- **License:** Unknown
- **npm:** mcp-ticket-demo
- **Source:** https://github.com/markusvankempen/mcp-ticket-demo
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

60/100 (B), scored on the package rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 1 day

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-19T20:35:36.140Z
- **Version scanned:** 1.7.0
- **CVEs:** none found by OSV at scan time

## Tools

13 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `search_tickets` — Find support tickets by status, requester email, or a keyword in subject/body. Use this when someone asks to list, find, or search tickets. Default status is op
- `create_ticket` — Open a support ticket on behalf of a customer. ALWAYS pass requester_email as the real customer email. If you omit it the call still succeeds (201) but the serv
- `add_comment` — Add a comment to an existing ticket. You need a real ticket_id from search_tickets or get_ticket — do not invent TCK- ids. Pass author as the human speaking; om
- `close_ticket` — Resolve and close a support ticket (destructive, idempotent). Sets status to solved and records resolved_at. Optionally appends resolution as the final comment.
- `get_ticket` — Fetch one ticket by id, including comments and attribution (customer vs service_account). Use when you already have a ticket_id like TCK-1001. If you do not hav
- `list_schemas` — List the queryable schemas on this server (tickets, customers, assets). Call this BEFORE run_query. There is no query_tickets, query_assets, or query_with_filte
- `get_schema` — Return fields and filterable keys for one schema. Call after list_schemas and before run_query so you know which filter keys are valid. name must be tickets, cu
- `run_query` — Run one exact-match query against a schema from list_schemas. Pass schema plus optional filter (keys from get_schema.filterable) and fields. This is the only qu
- `lookup_customer` — Look up one customer by email (plan, region, contact). Use this for customer records, not tickets — tickets use search_tickets. Phone is PII: it stays REDACTED 
- `describe_server` — Call this first, and again after any denial or empty tool list: server identity, auth mode, who the server thinks you are, the scopes you hold, your rate-limit 
- `tickets` — Support tickets. Use run_query with schema=tickets — do not invent query_tickets / query_with_filter tools.
- `customers` — Customer directory. Email is the join key to tickets.requester_email.
- `assets` — Demo assets. Same query tool as tickets — this is the 'one query tool plus schema discovery' lesson.

## Install

**Verdict: review** — Installable, but 1 thing to check first: No publisher has proved control of this listing; it is indexed, not vouched for.
**Cautions** (coverage gaps and advisories — never blocking)
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"mcp-ticket-demo\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"mcp-ticket-demo\"\n      ],\n      \"env\": {\n        \"MCP_API_KEY\": \"<YOUR_MCP_API_KEY>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `MCP_API_KEY` — Mcp API Key (optional)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (0 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Moderate blast radius — holds an api key; runs on your machine.
- Floor 23, ceiling 23 (tier: moderate)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/mcp-ticket-demo
- Install plan: https://forgeregistry.com/api/v1/packages/mcp-ticket-demo/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/mcp-ticket-demo
- HTML page: https://forgeregistry.com/registry/mcp-ticket-demo
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
