mcp-request-tracker-crunchtools 0.1.0
Secure MCP server for Request Tracker (RT) ticket management
Requires Python: >=3.10
Keywords: fastmcp, mcp, request-tracker, rt, tickets

# 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.