{"id":50792858,"url":"https://github.com/cryptojones/triagemcp","last_synced_at":"2026-06-12T12:02:24.267Z","repository":{"id":358387996,"uuid":"1241081127","full_name":"CryptoJones/TriageMCP","owner":"CryptoJones","description":null,"archived":false,"fork":false,"pushed_at":"2026-06-04T14:08:54.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-04T16:07:13.716Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CryptoJones.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-16T23:53:37.000Z","updated_at":"2026-06-04T14:09:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CryptoJones/TriageMCP","commit_stats":null,"previous_names":["cryptojones/triagemcp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/CryptoJones/TriageMCP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FTriageMCP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FTriageMCP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FTriageMCP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FTriageMCP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CryptoJones","download_url":"https://codeload.github.com/CryptoJones/TriageMCP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CryptoJones%2FTriageMCP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34243053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-12T12:01:45.893Z","updated_at":"2026-06-12T12:02:24.207Z","avatar_url":"https://github.com/CryptoJones.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n```\n╔══════════════════════════════════════════════════════════════╗\n║                                                              ║\n║                T  R  I  A  G  E  M  C  P                     ║\n║                                                              ║\n║    expose Triage's priority queue as MCP tools for agents    ║\n║                                                              ║\n╚══════════════════════════════════════════════════════════════╝\n```\n\n**An MCP server that turns\n[Triage](https://github.com/CryptoJones/Triage) into a set of tools an\nAI agent can call directly.** Add tasks, recompute priorities, explain\nwhy a task ranks where it does — all from inside a Claude Code (or\nany MCP-compatible) session.\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?logo=apache)](LICENSE)\n[![Python](https://img.shields.io/badge/Python-3.11%2B-3776AB?logo=python\u0026logoColor=white)](https://www.python.org/)\n[![MCP](https://img.shields.io/badge/MCP-server-D97757?logo=anthropic\u0026logoColor=white)](https://modelcontextprotocol.io/)\n[![Triage](https://img.shields.io/badge/wraps-CryptoJones%2FTriage-4f46e5)](https://github.com/CryptoJones/Triage)\n[![Codeberg](https://img.shields.io/badge/Codeberg-CryptoJones%2FTriageMCP-2185D0?logo=codeberg\u0026logoColor=white)](https://codeberg.org/CryptoJones/TriageMCP)\n[![GitHub](https://img.shields.io/badge/GitHub-CryptoJones%2FTriageMCP-181717?logo=github\u0026logoColor=white)](https://github.com/CryptoJones/TriageMCP)\n\n\u003c/div\u003e\n\n\u003e Mirrored on both [GitHub](https://github.com/CryptoJones/TriageMCP)\n\u003e and [Codeberg](https://codeberg.org/CryptoJones/TriageMCP). Issues\n\u003e on either forge are welcome; commits land on both.\n\n---\n\n## What is Triage?\n\n[**Triage**](https://github.com/CryptoJones/Triage) is a meta-scheduler:\na self-aware priority queue. Signals push facts about the world; rules\nturn facts into priority deltas; the queue reorders itself on every\ntick. The human sets the goals — Triage decides the order, and tells\nyou exactly why.\n\nIt already has a clean Python API + a CLI (`triage list`, `triage why`,\n`triage tick`). **TriageMCP is the bridge that makes that API\naddressable from inside an agent's tool-use loop.**\n\nIf you're new to Triage, read its\n[README](https://github.com/CryptoJones/Triage/blob/main/README.md)\nfirst — TriageMCP is a thin wrapper, not a re-implementation.\n\n---\n\n## Tools exposed\n\nEvery tool maps to a method already available on `triage` directly,\nreturning structured data (not stringified CLI output) so the agent\ncan reason about it:\n\n| MCP tool | Read/Write | Mirrors CLI | Returns |\n|----------|------------|-------------|---------|\n| `list_tasks` | read | `triage list` | priority-ordered task list with full rule contributions |\n| `get_task` | read | `triage show` | one task's full record |\n| `why_task` | read | `triage why` | rule-by-rule contribution deltas explaining a task's priority |\n| `status` | read | `triage status` | top-3 + tag counts + active-signal counts |\n| `add_task` | write | `triage add` | the new task + its assigned id |\n| `remove_task` | write | `triage rm` | confirms removal |\n| `tick` | write | `triage tick` | recomputes priorities; returns new top-3 + signal counts |\n| `inject_signal` | write | `triage signal manual` | writes a manual signal that `rule_manual_bump` picks up |\n| `doctor` | read | `triage doctor` | env diagnostics dict (version, python, locale + source signal, store path, drift count) |\n| `lang_check` | read | `triage lang --check` | `{clean, drift_count, report}` — empty `report` means all locales match the English baseline |\n\nThe agent works on the same `~/.triage` store the\n[Triage CLI](https://github.com/CryptoJones/Triage) does — so anything\nyou add via `triage add` from the terminal is visible to the agent on\nthe next call, and vice versa.\n\n---\n\n## Install\n\n```bash\n# 1. Install Triage (TriageMCP imports from it directly — no subprocess shell-out)\npip install git+https://github.com/CryptoJones/Triage.git\n# or, for an editable clone:\ngit clone https://github.com/CryptoJones/Triage.git \u0026\u0026 pip install -e ./Triage\n\n# 2. Install TriageMCP\ngit clone https://github.com/CryptoJones/TriageMCP.git\ncd TriageMCP\npip install -e .\n```\n\nOnce a Triage release is on PyPI, this collapses to a single\n`pip install triagemcp`.\n\n### Wire into Claude Code\n\nEdit (or create) `~/.claude/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"triagemcp\": {\n      \"command\": \"triagemcp\"\n    }\n  }\n}\n```\n\nRestart Claude Code. The ten tools above will be available to the\nagent. Ask it to **\"what should I do next?\"** and it can call\n`list_tasks` + `why_task` to give you a real answer.\n\n### Override the store location\n\nBy default TriageMCP uses Triage's own resolution: `$TRIAGE_HOME` →\n`~/.triage`. To point an agent at a different store (e.g. one task\nqueue per agent), set `TRIAGEMCP_HOME`:\n\n```json\n{\n  \"mcpServers\": {\n    \"triagemcp\": {\n      \"command\": \"triagemcp\",\n      \"env\": { \"TRIAGEMCP_HOME\": \"/home/you/.triage-agent-A\" }\n    }\n  }\n}\n```\n\n---\n\n## Why direct import, not subprocess\n\nSome MCP servers (including [KaliMCP](https://github.com/CryptoJones/KaliMCP),\nits security-tooling sibling) shell out to wrapped binaries. TriageMCP\ndoes **not**:\n\n- **Speed** — no fork/exec overhead per tool call.\n- **Fidelity** — results come back as typed structures with full rule\n  contribution arrays, not text that the agent (or this server) has\n  to parse.\n- **Determinism** — both this server and the `triage` CLI use the same\n  scheduler module, so what the agent sees is exactly what the CLI\n  would compute, no more and no less.\n\nThe cost: TriageMCP requires Triage as a Python dependency. That's\nwhy the install step has two commands. Once a PyPI release of Triage\nexists this collapses to one.\n\n---\n\n## Sample agent transcript\n\n```\nUSER: I just merged the linter fix PR. What's next?\n\nAGENT: [calls tick()] OK, recomputed priorities.\n       [calls list_tasks(limit=5)] Your top 5 are:\n         1. Fix the auth bug             [120]\n         2. Rotate the staging cert       [85]\n         3. Reply to legal about contract [50]\n         4. Open release PR               [12]\n         5. Update README badges           [3]\n\n       [calls why_task(top.id)] Auth bug is at 120 because:\n         + base_score: +10\n         + manual_bump: +100 (from runpodboss signal — pod is idle)\n         + deadline_decay: +10 (deadline in 3 days)\n```\n\nEvery priority is explainable end-to-end via the rule-contribution\narrays the tools return. No black box.\n\n---\n\n## Status\n\n| Version | Feature | Status |\n|---------|---------|--------|\n| v0.1 | eight tools (list / get / why / status / add / remove / tick / inject_signal); direct in-process import of `triage`; matching tests for each | shipped |\n| v0.2 | two new read tools mirroring Triage v0.11's CLI surface: `doctor` (env diagnostics) + `lang_check` (locale-catalog audit) | shipped |\n| v0.2 | streaming watch via `triage watch` mode once Triage ships that (v0.10 milestone) | planned |\n| v0.3 | per-task `update_task` partial-edit tool (description / base_score / tags only — id stays stable) | planned |\n| v0.4 | Dockerfile parity with [KaliMCP](https://github.com/CryptoJones/KaliMCP) so the server can run in a sealed image | planned |\n\nSee [CHANGELOG.md](CHANGELOG.md) for per-release detail.\n\n---\n\n## Development\n\n```bash\n# Triage must be importable (TriageMCP calls it in-process, no subprocess)\ngit clone https://github.com/CryptoJones/Triage.git \u0026\u0026 pip install -e ./Triage\ngit clone https://github.com/CryptoJones/TriageMCP.git \u0026\u0026 cd TriageMCP\npip install -e '.[dev]'\n\nruff check src/ tests/   # lint (E, F, W, B, I, UP)\nmypy                     # type check\npip-audit                # dependency CVE scan\npytest -v                # tests\n```\n\nCI (GitHub Actions + Woodpecker) runs all four on Python 3.11 and 3.12.\n\n---\n\n## Related projects\n\n- [**Triage**](https://github.com/CryptoJones/Triage) — the meta-scheduler this server wraps.\n- [**claude_skill-Triage**](https://github.com/CryptoJones/claude_skill-Triage) — Claude Code skill repository: `TaskPriorityReorder` (manual override) + forthcoming `triage` skill (signal-driven recommender).\n- [**KaliMCP**](https://github.com/CryptoJones/KaliMCP) — sibling MCP server; same authorial conventions, different tool surface (Kali security tools).\n- [**RunPodBoss**](https://github.com/CryptoJones/RunPodBoss) — RunPod credit guardrail with a documented integration recipe into Triage via `extra_notify_command`.\n\n---\n\n## License\n\nApache 2.0. See [LICENSE](LICENSE).\n\nProudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptojones%2Ftriagemcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptojones%2Ftriagemcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptojones%2Ftriagemcp/lists"}