Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Find tech debt in a source tree and say how old it is and who added it (real git blame). Start with debt_summary for the overall picture, then list_todos (filter by marker, path glob, author, age, ticket), stale_todos (old markers in hot vs dead files), todo_history (when a specific TODO was introduced and whether it moved), hotspot_debt (debt x churn) and large_files_and_complexity (long files/functions, deep nesting, commented-out code, lint suppressions). All tools are read-only. repo is a directory inside the allowed roots (default: the first root); it may be a subdirectory of a git repository. Markers inside string literals are ignored; a marker must be the first word of a comment.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
debt_summaryA

One-page tech-debt overview of a repo: marker counts (by marker, directory, language), the 5 oldest markers, top authors, markers added per quarter (trend), median age, and how many reference a ticket (TODO(alice): ..., FIXME[JIRA-9], #123) versus orphans. Age and author come from git blame --porcelain -w -M on the marker lines. Default markers: TODO FIXME HACK XXX BUG; pass markers=["TODO","NOTE"] to change. Only real comments count: markers in strings, URLs, regexes and identifiers like TODOS or todo_list are ignored. include_docstrings=True also reads Python triple-quoted docstrings. dir_depth sets how many path components group the by_directory counts.

list_todosA

List markers oldest first, each with file:line, text, parsed tickets, the date it was added, its age in days, the author and the commit (from git blame, mailmap applied; lines not yet committed say "uncommitted"). Filters: markers (e.g. ["FIXME"]), path (glob such as "src/**/.py" or ".ts"), author (substring of name or email, or the (name) in TODO(name)), older_than ("90d", "12w", "6m", "2y"), has_ticket (true = only ticketed, false = only orphans). limit caps the output (default 50); the reply says how many matched in total.

stale_todosA

Old markers split by whether their file is still alive. 'hot': the file had >= min_commits commits in the last active_window (people keep editing next to a stale TODO - fix or delete it); 'cooling': 1 commit; 'dead': untouched (forgotten, candidate for removal). older_than and active_window accept 90d / 12w / 6m / 2y. Needs a git repository.

todo_historyA

Trace one TODO through history. Give location="src/app.py:42" (a line in the working tree) or text="TODO: remove after v2" (searched in all history). Reports the commit that last touched the line (blame -w -M), the blame origin with copy detection (-C -C: moved from another file?), and the commit where that text FIRST appeared (git log -S, or -G when regex=true) with later commits that changed its occurrence count. If a later commit only reworded or reformatted the line, first_appearance shows the true age. Needs a git repository.

hotspot_debtA

Files where debt and churn coincide: debt items (markers + lint/type suppressions) combined with commits and lines changed over the since window (from git log --numstat), ranked by a score (formula in the reply) with debt per 1000 lines. These are the places where debt costs the most because people keep working there. Needs a git repository.

large_files_and_complexityB

Cheap debt signals without git: files over max_file_lines, functions over max_function_lines, deepest nesting (indent levels or brace depth), commented-out code blocks (3+ consecutive code-shaped comment lines), and suppression counts by kind and directory (# noqa, type: ignore, pylint: disable, @ts-ignore, @ts-expect-error, eslint-disable, #[allow(...)], @SuppressWarnings, nolint, rubocop:disable, shellcheck disable ...). Line counters are heuristics (they do not parse code). path is a glob filter.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

Each tool occupies a fairly clear niche: list_todos (flat listing), stale_todos (liveness-split listing), debt_summary (aggregate overview), todo_history (single-marker forensics), hotspot_debt (debt×churn), and large_files_and_complexity (non-git heuristics). The main risk is list_todos vs stale_todos vs debt_summary, which all report marker counts and could be confused, though the detailed descriptions do enough to separate them.

Naming Consistency3/5

All names are snake_case and descriptive, which keeps things readable. However, the conventions are mixed: only list_todos follows a verb_noun pattern, while the rest are noun phrases (debt_summary, todo_history, hotspot_debt) or adjective-led (stale_todos, large_files_and_complexity).

Tool Count5/5

Six tools is well within the sweet spot, and each one covers a distinct analysis angle (listing, staleness, aggregation, history, churn correlation, non-git signals). No tool feels redundant or like filler.

Completeness4/5

Coverage of the debt-analysis domain is strong: detection, aging, ownership, trend, hotspots, and non-git complexity signals are all present, and the surface is read-only by design so no CRUD gaps matter. Minor gaps remain, such as diff/PR-scoped debt detection or exporting a report, but agents can work around these by combining tools.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues