{"servers":[{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.syrian963/ticket-ai-mcp","description":"Measures tickets against the ones your team already shipped: sections, length, labels, duplicates.","title":"Ticket AI","repository":{"url":"https://github.com/syrian963/Ticket-AI-MCP","source":"github"},"version":"0.1.1","websiteUrl":"https://github.com/syrian963/Ticket-AI-MCP","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"ticket-ai-mcp","version":"0.1.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Which tracker to read: gitlab, jira or github.","isRequired":true,"name":"TICKET_AI_TRACKER"},{"description":"The project to measure. A GitLab path like acme/shop or its numeric id, a Jira project key like PROJ, or a GitHub owner/repo.","isRequired":true,"name":"TICKET_AI_PROJECT"},{"description":"Base URL of the GitLab instance, for example https://gitlab.example.com. Required when the tracker is gitlab.","name":"TICKET_AI_GITLAB_URL"},{"description":"GitLab personal access token. The read_api scope is enough; nothing here writes.","isSecret":true,"name":"TICKET_AI_GITLAB_TOKEN"},{"description":"Base URL of the Jira instance. Cloud or self-hosted Server and Data Center; which one is detected from the instance.","name":"TICKET_AI_JIRA_URL"},{"description":"Account email, for Jira Cloud's basic auth. Leave unset for a public board or for a Server personal access token.","name":"TICKET_AI_JIRA_EMAIL"},{"description":"Jira API token from id.atlassian.com, or a Server personal access token on its own. Leave unset to read a public instance anonymously.","isSecret":true,"name":"TICKET_AI_JIRA_TOKEN"},{"description":"GitHub token with read access to the repository's issues.","isSecret":true,"name":"TICKET_AI_GITHUB_TOKEN"},{"description":"Checkout to search when gathering context for a subject. Defaults to the working directory, which on a wrong guess produces confident nonsense - the report names the directory it searched.","name":"TICKET_AI_REPO"},{"description":"Force the language tickets should be written in, overriding what was measured in the corpus. Leave unset unless the board is mid-switch: a measurement beats a setting.","name":"TICKET_AI_TICKET_LANGUAGE"},{"description":"Where the learned profile is kept between runs. Defaults to .ticket-ai/ under the working directory.","name":"TICKET_AI_CACHE_DIR"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-11T11:46:27.917279Z","publishedAt":"2026-09-11T11:46:27.917279Z","updatedAt":"2026-09-11T11:46:27.917279Z","isLatest":true}}}],"metadata":{"count":1}}
