Skip to main content
Glama
bug_tracker_mcp

bug_tracker_mcp

by realsidg

bug_tracker_mcp

Python 3.12+ FastMCP

A lean, agent-first Model Context Protocol (MCP) server for tracking bugs, tasks, and context across coding sessions. Designed to give AI agents (like Claude Desktop, Antigravity, and Cursor) zero-friction persistent memory for issues discovered during development.


Overview

When pair-programming with AI agents, bugs and technical debt are frequently discovered mid-task. Without a persistent tracker, these issues get lost when context windows reset.

bug_tracker_mcp solves this with a lightweight SQLite-backed MCP server. It provides 6 fast MCP tools allowing agents to log, inspect, update, resolve, and delete bugs, all isolated per project. Every tool call requires an explicit project name (e.g. the repo name) supplied by the calling agent; the server never infers it from its own working directory, since a single long-lived MCP process can serve many different projects across a session.


Related MCP server: Telebugs MCP Server

Architecture

The system is organized into decoupled Python modules:

  • FastMCP Server (bug_tracker_mcp.server): Defines stdio transport MCP tools using fastmcp.FastMCP. Handles argument validation, requires a project name on every call, and converts internal exceptions to user-friendly ToolError responses.

  • Database Path Resolution (bug_tracker_mcp.scope): Resolves the path to the single shared SQLite database: $XDG_DATA_HOME/bug-tracker-mcp/bugs.db (or ~/.local/share/bug-tracker-mcp/bugs.db) by default, or $BUGTRACKER_ROOT/bugs.db if overridden.

  • SQLite Storage Layer (bug_tracker_mcp.storage): Manages SQLite connections with WAL journal mode, busy timeouts, auto-migrations via user_version, and full CRUD operations. Every read and write is scoped by a project column, so bugs logged under one project are invisible to and cannot be mutated from another.

  • Pydantic Models (bug_tracker_mcp.models): Strict Pydantic models (Bug, BugSummary, BugListResponse) enforcing schema and typed responses.

  • Environment Configuration (bug_tracker_mcp.config): Reads an optional environment variable override for the shared database's storage directory.


Installation & Setup

Install and manage dependencies using uv:

# Clone repository
git clone https://github.com/realsidg/bug_tracker_mcp.git
cd bug_tracker_mcp

# Install dependencies and setup virtual environment
uv sync

Agent Configuration

Register bug-tracker-mcp with your agent workspace or desktop client.

Workspace .mcp.json

Add to .mcp.json in your workspace root:

{
  "mcpServers": {
    "bug-tracker": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/bug_tracker_mcp",
        "bug-tracker-mcp"
      ]
    }
  }
}

Claude Desktop (claude_desktop_config.json)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "bug-tracker": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/bug_tracker_mcp",
        "bug-tracker-mcp"
      ]
    }
  }
}

Environment Variables

You can override the storage location by setting an environment variable:

Variable

Description

Default

BUGTRACKER_ROOT

Overrides the directory holding the shared bugs.db file.

$XDG_DATA_HOME/bug-tracker-mcp or ~/.local/share/bug-tracker-mcp.


Tool Reference

bug_tracker_mcp exposes 6 tools to AI agents. Every tool requires a project name identifying which project the bugs belong to — use a consistent name (e.g. the repo name) for the same project across calls, since bugs are only ever returned to callers passing the matching project.

Tool Name

Parameters

Description

log_bug

project (str, required)title (str, required)description (str, optional)severity (minor | major | blocking, default: minor)kind (bug | improvement, default: bug)location (str, optional)tags (list[str], optional)found_while (str, optional)

Logs a new bug or improvement into storage and returns the created Bug record with auto-incremented ID.

list_bugs

project (str, required)status (open | fixed | all, default: open)severity (minor | major | blocking, optional)kind (bug | improvement | all, optional)tag (str, optional)limit (int, default: 50)offset (int, default: 0)

Lists lightweight BugSummary items within a project with filtering and pagination.

get_bug

project (str, required)bug_id (int, required)

Returns complete details of a specific bug by ID within a project. Raises ToolError if not found.

update_bug

project (str, required)bug_id (int, required)title, description, severity, kind, location, tags, found_while, status (optional)

Updates specific attributes of an existing bug within a project. Raises ToolError if not found.

resolve_bug

project (str, required)bug_id (int, required)resolution (str, optional)

Marks a bug as fixed, sets optional resolution explanation, and records fixed_at timestamp. Raises ToolError if not found.

delete_bug

project (str, required)bug_id (int, required)

Permanently removes a bug by ID within a project. Returns {"deleted": true, "bug_id": bug_id} or raises ToolError if not found.


Development & Testing

Run all quality checks:

# Run pytest test suite
uv run pytest

# Check code formatting and linting
uv run ruff check .
uv run ruff format --check .

# Run static type checker in strict mode
uv run mypy src

# Run pre-commit hooks
uv run pre-commit run --all-files

Available Tools

6 tools
delete_bugB

Delete a bug by ID within a project.

Inputs: bug_id (required), project (required). Returns: object

get_bugA

Get full details of a specific bug by ID within a project.

Inputs: bug_id (required), project (required). Returns: Full detail model for a bug entry.

list_bugsA

List bugs within a project with optional filtering and pagination.

Returns lightweight BugSummary items (omitting full description and notes) for progressive disclosure. Use get_bug to retrieve complete details for a specific bug.

Inputs: project (required), tag, kind, limit, +3 more. Returns: Paginated list response containing bug summaries and pagination metadata.

log_bugB

Log a new bug or improvement into the bug tracking store.

Inputs: title (required), project (required), kind, tags, +4 more. Returns: Full detail model for a bug entry.

resolve_bugB

Mark a bug as fixed with optional resolution details.

Inputs: bug_id (required), project (required), resolution. Returns: Full detail model for a bug entry.

update_bugC

Update attributes of an existing bug within a project.

Inputs: bug_id (required), project (required), kind, tags, +6 more. Returns: Full detail model for a bug entry.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct action on bugs: create, delete, list, get, update, and resolve. There is no overlap between their purposes.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern: log_bug, delete_bug, list_bugs, get_bug, update_bug, resolve_bug. No mixing of conventions.

    Tool Count5/5

    6 tools cover the essential CRUD operations plus a dedicated resolve action for a bug tracker. This is well-scoped and not excessive.

    Completeness4/5

    The set provides full create, read (list and get), update, delete, and resolve. Minor gaps like reassigning or changing status beyond resolve exist but are acceptable for a basic tracker.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server for intelligent project planning and task management featuring task tracking, bug reporting, and feature specification with SQLite persistence. It includes full-text search capabilities and automatic filesystem synchronization to keep project data organized and accessible.
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      An MCP server that enables AI agents to retrieve and analyze error reports from a self-hosted Telebugs instance. It provides tools for listing projects, searching error groups, and fetching detailed reports directly from the Telebugs SQLite database.
      4
      -