# Request Tracker

Enterprise ticket tracker with a Builder-shipped MCP server for search, create, reply, and update.

Request Tracker (RT) is Best Practical's GPL ticketing system, in production since 1996 and now at 6.x. Self-hosting is free; Best Practical sells cloud hosting and support. The same org publishes mcp-server-rt, a stdio MCP server that proxies RT's REST 2.0 API so an agent can search with TicketSQL, read history, create and update tickets, and reply to requestors.

Alternative to: Zendesk, Jira Service Management

- Capabilities: adaptable, operable
- Vertical: support-bookkeeping
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: human-written (recorded, never ranked)
- Repo: https://github.com/bestpractical/rt (GPL-2.0), 1149 stars, last commit 2026-09-01
- Last activity: 2026-09-01
- Page: apps/bestpractical--rt.html
- JSON: apps/bestpractical--rt.json

## Use it when

- we run a shared support or IT queue by email and want tickets triaged, assigned, and answered from our agent without leaving RT's audit trail
- we already have an RT instance and want Claude or Cursor to search TicketSQL and draft replies as a named user

## Gotchas

- MCP server needs RT 6.0+ with REST 2.0 enabled; older RT 4.x/5.x installs must upgrade first
- Everything the agent does is logged as the token's user, including emails sent on replies; a repeated add_reply sends mail again
- Perl stack with a long CPAN dependency install; SELinux default blocks /opt/rt6
- GPL-2.0 copyleft on both RT and the MCP server

## Editions

- Free (self-hosted): Free, open source
  - source: https://github.com/bestpractical/rt
  - installable: ./configure && make install
- Cloud Starter: $15 per user/month, annual, 5-user minimum, closed source
  - hosted: https://requesttracker.com/pricing
- Cloud Business: $29 per user/month, annual, 10-user minimum, closed source
  - hosted: https://requesttracker.com/pricing
- Cloud Growth: $39 per user/month, annual, closed source
  - hosted: https://requesttracker.com/pricing

## Adaptable: make it yours

Effort: config-only (4 things to edit)

Override defaults in etc/RT_SiteConfig.pm; every setting is documented in etc/RT_Config.pm.in. An SMB sets $rtname, $Organization, $CorrespondAddress, $CommentAddress, $WebDomain, $Timezone, mail delivery ($MailCommand, $SetOutgoingMailFrom), and @Plugins, then builds queues, custom fields, and scrips in the admin UI. For the MCP server, set RT_URL and RT_TOKEN in the client config; the token is created under Settings > Auth Tokens and needs the ManageAuthTokens right.

- Env vars: RT_URL, RT_TOKEN
- Config files: etc/RT_SiteConfig.pm, etc/RT_Config.pm.in
- Prompt files: none
- Accounts you'll need: none beyond your own RT instance; Best Practical account only for Cloud editions

## Operable: what an agent can drive

Operability: official. Interface: mcp at https://github.com/bestpractical/mcp-server-rt (published by the builder, local).

### Reach (partial coverage)

- Search tickets: reachable. search_tickets with full TicketSQL; get_ticketsql_grammar for syntax
- Read a ticket and its history: reachable. get_ticket, get_ticket_history, get_transaction, attachment tools
- Create tickets with metadata: reachable. create_ticket sets status, owner, requestors, due dates, custom fields, custom roles, links
- Reply to requestors and add internal comments: reachable. add_reply and add_comment; README example resolves a ticket and notifies the requestor in one step
- Update status, owner, priority, watchers, links: reachable. update_ticket
- Discover queues, custom fields, and users: reachable. list_queues, get_queue, get_queue_fields, lookup_user
- Dashboards, charts, and reports: not reachable. no dashboard or chart tool in the MCP tool table
- Track assets (RT Assets): not reachable. no asset tools; MCP tool table is ticket, queue, user, attachment only
- Configure scrips and automation: not reachable. administration is not in the MCP surface; RT_SiteConfig.pm and the admin UI
- Knowledge base articles: not reachable. no article tools in the MCP tool table

## Code stack

- Languages: Perl, JavaScript
- Frameworks: HTML::Mason
- Package manager: cpan
- Database: MySQL, MariaDB, PostgreSQL, Oracle
- Hosting target: self-host (Apache/nginx FastCGI or mod_perl)

## Model stack

- Providers: any MCP client
- Models: none
- Keys you need (names only): RT_URL, RT_TOKEN
- Prompts live in: none
- Tools: search_tickets, get_ticket, get_ticket_history, get_transaction, get_queue, list_queues, get_queue_fields, lookup_user, get_current_user, get_ticketsql_grammar, create_ticket, update_ticket, add_comment, add_reply, get_ticket_attachments, get_attachment, save_attachment

## Evidence and confidence

- formFactor: README: web app served through FastCGI or mod_perl; rt-server standalone (confidence 0.95)
- executionModel: no model at runtime in core; etc/ai directory exists in the 6.x tree, treated as optional (confidence 0.7)
- operability: github.com/bestpractical/mcp-server-rt is under the same org that ships RT; README lists 17 tools (confidence 0.95)
- effort: README step 6a: configure RT by editing etc/RT_SiteConfig.pm with values from etc/RT_Config.pm; RT_Config.pm.in lists Set($rtname) and 60+ other keys (confidence 0.85)
- editions: README: freely available under GPL v2; requesttracker.com/pricing: Starter $15, Business $29, Growth $39 per user/month (confidence 0.8)
- active: gh api: pushed 2026-09-01; mcp-server-rt pushed 2026-08-31
- reach:  (confidence 0.9)

## Open questions

- What the etc/ai directory in RT 6 does and whether it makes the core hybrid
- Whether Cloud editions expose auth tokens so the MCP server works against hosted RT

## Sources

- https://github.com/bestpractical/rt (sourcing:support-bookkeeping:curated)
- https://github.com/bestpractical/mcp-server-rt (sourcing:support-bookkeeping:registries)
- https://docs.bestpractical.com/rt/latest/RT/REST2.html (sourcing:support-bookkeeping:github)
- https://requesttracker.com/pricing (analysis)
