bug_tracker_mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bug_tracker_mcplog bug 'Homepage fails to load' severity major"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
bug_tracker_mcp
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 usingfastmcp.FastMCP. Handles argument validation, requires aprojectname on every call, and converts internal exceptions to user-friendlyToolErrorresponses.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.dbif overridden.SQLite Storage Layer (
bug_tracker_mcp.storage): Manages SQLite connections with WAL journal mode, busy timeouts, auto-migrations viauser_version, and full CRUD operations. Every read and write is scoped by aprojectcolumn, 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 syncAgent 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 |
| Overrides the directory holding the shared |
|
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 |
|
| Logs a new bug or improvement into storage and returns the created |
|
| Lists lightweight |
|
| Returns complete details of a specific bug by ID within a project. Raises |
|
| Updates specific attributes of an existing bug within a project. Raises |
|
| Marks a bug as |
|
| Permanently removes a bug by ID within a project. Returns |
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-filesAvailable Tools
6 toolsdelete_bugB
Delete a bug by ID within a project.
| Name | Required | Description | Default |
|---|---|---|---|
| bug_id | Yes | Integer ID of the bug to delete. | |
| project | Yes | Name identifying the project the bug belongs to. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behaviors like permanent deletion, side effects, or required permissions. It only states the action without detailing consequences, leaving the agent underinformed about the destructive nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single sentence that conveys the essential purpose without any extraneous words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to explain return values, but it lacks details about success/failure behavior or whether the deletion is reversible. For a destructive tool, more context is needed to ensure safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (bug_id and project) with 100% coverage. The tool description adds no new semantic information beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Delete a bug by ID within a project' clearly specifies the verb (delete), resource (bug), and scope (by ID within project). It effectively distinguishes this tool from siblings like list_bugs or update_bug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives or when not to use it. The context implies deletion, but there are no warnings about irreversibility or dependencies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bugA
Get full details of a specific bug by ID within a project.
| Name | Required | Description | Default |
|---|---|---|---|
| bug_id | Yes | Integer ID of the bug. | |
| project | Yes | Name identifying the project the bug belongs to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | No | |
| tags | No | |
| title | Yes | |
| status | No | |
| project | Yes | |
| fixed_at | No | |
| location | No | |
| severity | No | |
| created_at | Yes | |
| resolution | No | |
| updated_at | Yes | |
| description | No | |
| found_while | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It only states 'Get full details' implying a read operation, but does not disclose behavioral traits such as idempotency, rate limits, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, 12 words, front-loaded with the purpose. Every word is purposeful with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation with 2 parameters and an output schema, the description is complete. It clearly indicates what the tool does. However, it could explicitly state the operation is read-only and safe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described in the schema. The description adds no additional meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves full details of a specific bug by ID within a project, using a specific verb and resource. It distinguishes from siblings like list_bugs (listing all) and mutation tools like log_bug, delete_bug, update_bug, resolve_bug.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing full details of a specific bug, but does not explicitly state when to use over siblings. No exclusionary language or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag name. | |
| kind | No | Filter by kind ('bug', 'improvement', or 'all'). | |
| limit | No | Max number of items to return. Defaults to 50. | |
| offset | No | Pagination offset. Defaults to 0. | |
| status | No | Filter by status ('open', 'fixed', or 'all'). Defaults to 'open'. | open |
| project | Yes | Name identifying the project to list bugs for. Required — only bugs logged under this exact project name are returned. | |
| severity | No | Filter by severity ('minor', 'major', 'blocking'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| total | Yes | |
| has_more | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since annotations are absent, the description carries the full burden and discloses that the tool returns lightweight BugSummary items omitting description and notes, which is a key behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences with no wasted information, clearly stating purpose and usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and full parameter descriptions, the description adds necessary context about progressive disclosure, making it fairly complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add parameter details; baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists bugs with filtering and pagination, and distinguishes it from get_bug by noting it returns lightweight items for progressive disclosure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance to use get_bug for full details, but does not mention when not to use this tool or specify alternatives beyond get_bug.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_bugB
Log a new bug or improvement into the bug tracking store.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Entry kind ('bug' or 'improvement'). Defaults to 'bug'. | bug |
| tags | No | List of tag strings to categorize the bug. | |
| title | Yes | Short description of the bug. | |
| project | Yes | Name identifying the project these bugs belong to (e.g. the repo name). Required — bugs are isolated per project, so use a consistent name for the same project across calls. | |
| location | No | File location or context reference (e.g. 'src/foo.py:42'). | |
| severity | No | Bug severity level ('minor', 'major', 'blocking'). Defaults to 'minor'. | minor |
| description | No | Detailed explanation or error details. | |
| found_while | No | Context or activity being undertaken when bug was discovered. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | No | |
| tags | No | |
| title | Yes | |
| status | No | |
| project | Yes | |
| fixed_at | No | |
| location | No | |
| severity | No | |
| created_at | Yes | |
| resolution | No | |
| updated_at | Yes | |
| description | No | |
| found_while | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Log a new bug or improvement' without mentioning side effects, duplicate checks, or any prerequisites. The output schema exists but the description does not add behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is concise and front-loaded with the action. Every word is earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters and an output schema, the description is too minimal. It does not explain the return value (though schema does) or any context like required permissions or process quirks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description itself does not add any parameter semantics; all parameter meaning is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Log' and the resource 'new bug or improvement into the bug tracking store'. It is easily distinguishable from sibling tools like delete_bug, list_bugs, etc., which handle different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, but the sibling tool names imply this is for creation. The description lacks explicit when-to-use or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_bugB
Mark a bug as fixed with optional resolution details.
| Name | Required | Description | Default |
|---|---|---|---|
| bug_id | Yes | Integer ID of the bug to resolve. | |
| project | Yes | Name identifying the project the bug belongs to. | |
| resolution | No | Explanation of how the bug was resolved (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | No | |
| tags | No | |
| title | Yes | |
| status | No | |
| project | Yes | |
| fixed_at | No | |
| location | No | |
| severity | No | |
| created_at | Yes | |
| resolution | No | |
| updated_at | Yes | |
| description | No | |
| found_while | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It only states 'mark as fixed' without detailing side effects, permission requirements, or changes to bug status. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no unnecessary words. Front-loaded with action and subject. Highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite output schema existing, the description lacks context for a mutation tool—no mention of prerequisites (e.g., bug must exist, user permissions) or validation. Incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond 'optional resolution details', which aligns with the 'resolution' parameter. No enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark a bug as fixed') and resource (bug). It distinguishes from siblings like 'log_bug' (create) and 'update_bug' (general update) by specifying a fixed state, which is a unique intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a bug is fixed but does not explicitly state when to use it vs alternatives like 'update_bug' or 'delete_bug'. No guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_bugC
Update attributes of an existing bug within a project.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | New kind ('bug' or 'improvement') (optional). | |
| tags | No | New tags list (optional). | |
| title | No | New title (optional). | |
| bug_id | Yes | Integer ID of the bug to update. | |
| status | No | New status ('open' or 'fixed') (optional). | |
| project | Yes | Name identifying the project the bug belongs to. | |
| location | No | New location (optional). | |
| severity | No | New severity (optional). | |
| description | No | New description (optional). | |
| found_while | No | New found_while context (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | No | |
| tags | No | |
| title | Yes | |
| status | No | |
| project | Yes | |
| fixed_at | No | |
| location | No | |
| severity | No | |
| created_at | Yes | |
| resolution | No | |
| updated_at | Yes | |
| description | No | |
| found_while | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states 'update' without disclosing side effects, required permissions, mutability, or any behavioral traits. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded and concise. However, it is too brief and fails to provide necessary information, making it less helpful for accurate tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, mutation, no annotations), the description is incomplete. It does not mention preconditions, return values, or constraints like requiring an existing bug. Output schema exists but description does not leverage it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds no extra meaning beyond 'update attributes', which is generic. Parameters are well-documented in schema, so description need not repeat them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Update attributes of an existing bug within a project', specifying the verb (update) and resource (existing bug). It distinguishes from sibling tools like log_bug (create) and get_bug (read).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like resolve_bug, which may also update status. No prerequisites or conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
delete_bug - First observed
get_bug - First observed
list_bugs - First observed
log_bug - First observed
resolve_bug - First observed
update_bug
TDQS
Each tool targets a distinct action on bugs: create, delete, list, get, update, and resolve. There is no overlap between their purposes.
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.
6 tools cover the essential CRUD operations plus a dedicated resolve action for a bug tracker. This is well-scoped and not excessive.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Voice-powered bug reporting with 13 MCP tools. Record bugs by talking; let AI find and fix them.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn 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
- FlicenseNot gradedqualityBmaintenanceAn 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-
- FlicenseNot gradedqualityDmaintenanceA lightweight MCP server for tracking personal expenses, income, and budget summaries using SQLite.4-
- FlicenseNot gradedqualityAmaintenanceA lightweight MCP server that provides cross-project progress tracking tools (list, refresh, read, update, mark) for agents to query and manage work status across multiple tracked projects.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/realsidg/bug_tracker_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server