MCP Request Tracker CrunchTools
# MCP Request Tracker CrunchTools
A secure MCP (Model Context Protocol) server for Request Tracker (RT) ticket management.
## Features
- **Secure Credential Handling**: Passwords stored as SecretStr, never logged
- **Full Ticket Management**: Search, view, create, update, and resolve tickets
- **Time Tracking**: Track time worked on tickets
- **Workflow Automation**: Pre-built workflows like checklist completion
- **Cross-Platform**: Works on Linux, macOS, and Windows
## Installation
### Option 1: Using uvx (Recommended)
```bash
uvx mcp-request-tracker-crunchtools
```
### Option 2: Using pip
```bash
pip install mcp-request-tracker-crunchtools
```
### Option 3: Using Container
```bash
podman run -e RT_URL=... -e RT_USER=... -e RT_PASS=... quay.io/crunchtools/mcp-request-tracker
```
## Configuration
Set the following environment variables:
| Variable | Required | Description |
|----------|----------|-------------|
| `RT_URL` | Yes | Base URL of your RT server |
| `RT_USER` | Yes | RT username |
| `RT_PASS` | Yes | RT password |
| `RT_HTTP_USER` | No | HTTP Basic Auth username |
| `RT_HTTP_PASS` | No | HTTP Basic Auth password |
## Usage with Claude Code
### Using uvx
```bash
claude mcp add mcp-request-tracker-crunchtools \
--env RT_URL=https://rt.example.com \
--env RT_USER=your_username \
--env RT_PASS=your_password \
-- uvx mcp-request-tracker-crunchtools
```
### Using Container
```bash
claude mcp add mcp-request-tracker-crunchtools \
--env RT_URL=https://rt.example.com \
--env RT_USER=your_username \
--env RT_PASS=your_password \
-- podman run -i --rm -e RT_URL -e RT_USER -e RT_PASS quay.io/crunchtools/mcp-request-tracker
```
## Available Tools
### Search and View
- `search_tickets` - Search tickets using RT query syntax
- `get_ticket` - Get ticket details
- `get_ticket_history` - Get ticket history/changelog
- `get_my_open_tickets` - Get open tickets for a user
- `get_new_tickets` - Get new/unassigned tickets
### Update Tickets
- `set_ticket_owner` - Set ticket owner
- `set_ticket_status` - Set ticket status
- `open_ticket` - Open a ticket
- `resolve_ticket` - Resolve/close a ticket
- `take_ticket` - Take ownership and open
### Time Tracking
- `set_time_worked` - Set total time worked
- `add_time_worked` - Add time to existing time
### Communication
- `add_ticket_comment` - Add private comment (not visible to requestor)
- `reply_to_ticket` - Add correspondence (visible to requestor)
### Creation
- `create_ticket` - Create a new ticket
### Workflows
- `complete_weekly_checklist` - Complete a weekly checklist ticket with results
## RT Query Syntax Examples
```
Status = 'new'
Status = 'open' AND Owner = 'scott'
Subject LIKE 'checklist'
Queue = 'Professional'
Created > '2025-01-01'
Owner = 'Nobody'
```
## Security
This server is built with security in mind:
- **SecretStr**: Passwords are stored using Pydantic's SecretStr to prevent accidental logging
- **Error Sanitization**: Credentials are scrubbed from all error messages
- **No Filesystem Access**: The server never reads or writes files
- **No Shell Execution**: No subprocess or shell commands
- **Minimal Dependencies**: Only essential packages to reduce attack surface
- **Automated CVE Scanning**: Weekly security scans via GitHub Actions
- **Container Security**: Built on Hummingbird images with minimal CVE count
See [SECURITY.md](SECURITY.md) for the full security design document.
## Development
```bash
# Clone the repository
git clone https://github.com/crunchtools/mcp-request-tracker.git
cd mcp-request-tracker
# Install dependencies
uv sync --all-extras
# Run tests
uv run pytest
# Lint
uv run ruff check src tests
# Type check
uv run mypy src
```
## License
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
See [LICENSE](LICENSE) for details.
<!-- mcp-name: io.github.crunchtools/request-tracker -->
TDQS
Scored across 17 tools
Several tools have overlapping purposes: set_ticket_status_tool overlaps with open_ticket_tool and resolve_ticket_tool, while set_ticket_owner_tool overlaps with take_ticket_tool. get_my_open_tickets_tool and get_new_tickets_tool also largely duplicate functionality available through search_tickets_tool. The descriptions help somewhat, but the boundaries between general tools and workflow shortcuts are unclear.
Tool names consistently use snake_case with a verb-first pattern and a _tool suffix (e.g., get_ticket_tool, set_ticket_status_tool). Minor deviations like reply_to_ticket_tool and complete_weekly_checklist_tool introduce prepositions or workflow-specific phrasing, but the overall pattern remains predictable.
17 tools is on the heavy side for this domain, especially given the functional overlap between several tools. A ticketing system can reasonably support this many operations, but some tools (take_ticket_tool, open_ticket_tool, resolve_ticket_tool) could be consolidated without losing much capability.
The core ticket lifecycle is well covered: create, search, get details/history, update fields, manage owner/status, comment/reply, track time, and resolve. Minor gaps exist, such as no explicit attachment handling, queue management, or dedicated ticket deletion, but status can be set to deleted and most workflows are supported.