Skip to main content

triage-mcp

An MCP server over my ai-triage-agent queue. A local LLM classifies support tickets and drafts replies, a human approves or rejects every one, and this server lets any MCP-capable AI client read that queue and the decision log.

It answers questions like "whats waiting for review?" or "what did I reject this week and why?" straight from the files the agent writes. Four tools, all read-only. The model can look at the queue but it cant approve, reject or send anything.

Tools

Tool What it does
queue_status() Counts for inbox, pending review by priority, outbox and logged decisions
pending_items(priority) Tickets waiting for review, most urgent first, optional priority filter
recent_decisions(limit) Latest human decisions from the audit log, newest first
search_decisions(query) Search the decision log by id, outcome, category, priority or reject reason

Setup

python3 -m venv .venv
.venv/bin/pip install mcp

It reads ~/aiProjects/aminWork/automation-portfolio/ai-triage-agent/. Change DATA_DIR at the top of triage_mcp.py if your copy lives somewhere else.

Wire it into Claude Code:

claude mcp add triage -- /path/to/triage-mcp/.venv/bin/python /path/to/triage-mcp/triage_mcp.py

Demo

What it looks like from Claude Code:

> anything urgent sitting in the triage queue?

⏺ triage · pending_items()

  2 pending item(s):
  demo-014 P1 security_incident -> security-team (high): User entered their password on a fake helpdesk link and asks what to do next.
  demo-017 P3 software_issue -> service-desk (medium): Spreadsheet app crashes when opening one monthly report file.

⏺ One P1. demo-014 looks like a phishing hit and is routed to security.
  Id review that one first. The Excel crash can wait.

The tickets above are demo data. The format is exactly what the server returns.

Design notes

  • Read-only by construction. No tool writes to the queue, the outbox or the log. Approving stays in review.py with a human at the keyboard.
  • Only metadata crosses the protocol. Ticket bodies, extracted entities and reply text never leave the server. Summaries and reject reasons are cut to 100 characters with emails and home paths masked.
  • Small on purpose. One file, standard library plus the mcp SDK.

Honest notes

  • It only reads what ai-triage-agent has already written. With an empty pending/ folder most answers are zeros, which is normal between triage runs.
  • The masking is regex based. It catches emails and home paths, not names written into a summary.
  • All ticket content in the demo and the tests is made up. The logic is tested against a synthetic queue in test_server.py. Run python test_server.py.

About

Al Amin Bashir Afara, Dubai · github.com/aminafara123 · linkedin.com/in/aminafara

Release files for triage-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for triage-mcp 1.0.0
File Size Uploaded
triage_mcp-1.0.0.tar.gz 5.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for triage-mcp 1.0.0
File Interpreter ABI Platform
triage_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 11.8 kB

Release files / triage_mcp-1.0.0.tar.gz

Download URL triage_mcp-1.0.0.tar.gz
Size 5.6 kB
Tags Source
SHA-256 checksum
How to use checksums
67963ff6c0488367e66d15c7fa558e370b83906bb427148b74ced0076d55ef31
BLAKE2b-256 checksum
How to use checksums
f4e40fe2fde1f4ca16518080fa6c1788b33490cfaaaf853d4817a1249418dec3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release files / triage_mcp-1.0.0-py3-none-any.whl

Download URL triage_mcp-1.0.0-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9511fbc2e325c68c894a0d978f98c685d39abaebabca204aba3d3d1c84c28186
BLAKE2b-256 checksum
How to use checksums
c9eb4ffd4a0b2f3dbe4c9139147727a86541a7cbe79ecf7b56021f1534879b2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.4

Release history Release notifications | RSS feed

1.0.1

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page