Skip to main content
Glama
developerlabsai

debug-mcp-server

Debug MCP Server

An MCP (Model Context Protocol) server that bridges web browsers and Claude Code for seamless debugging workflows.

Overview

This server receives debug data from browser widgets (console logs, error stacks, screenshots) and exposes it to Claude Code via the MCP protocol. It also facilitates interactive Q&A between Claude Code and browser users.

Related MCP server: gotham-browser

Features

  • Debug Data Ingestion: HTTP endpoints to receive debug reports from browsers

  • MCP Tools: Expose debug data to Claude Code through MCP protocol

  • Interactive Q&A: WebSocket-based bidirectional communication for clarification questions

  • File Storage: Organized filesystem storage for reports and screenshots

  • Localhost Only: Secure local-only server for development use

Quick Start

Installation

# Global installation
npm install -g @yourco/debug-mcp-server

# Or use npx
npx @yourco/debug-mcp-server

Running the Server

# Start the server
debug-mcp-server

# Or with custom port
DEBUG_MCP_PORT=4000 debug-mcp-server

Configuration

Create ~/.debug-mcp/config.json:

{
  "port": 3000,
  "storagePath": "~/.debug-mcp",
  "retentionDays": 7
}

Or use environment variables:

  • DEBUG_MCP_PORT - HTTP server port (default: 3000)

  • DEBUG_MCP_STORAGE_PATH - Storage directory (default: ~/.debug-mcp)

  • DEBUG_MCP_RETENTION_DAYS - Report retention period (default: 7)

MCP Integration

Connect Claude Code to Server

Add to your Claude Code MCP configuration:

{
  "mcpServers": {
    "debug-reports": {
      "command": "node",
      "args": ["/path/to/debug-mcp-server/dist/index.js"]
    }
  }
}

Available MCP Tools

  • submit_debug_report - Receive debug data from browser

  • list_debug_reports - List all stored debug reports

  • get_debug_report - Retrieve specific debug report by ID

  • ask_user_questions - Send questions to browser and wait for answers

  • clear_old_reports - Clean up old debug data

Available MCP Resources

  • debug://reports/latest - Get most recent debug report

  • debug://reports/{id} - Get specific report by ID

  • debug://screenshots/{id} - Access screenshot files

API Endpoints

POST /api/debug

Receive debug data from browser widget.

Request Body:

{
  "logs": [
    { "level": "error", "message": "Error message", "timestamp": 1234567890 }
  ],
  "error": {
    "message": "TypeError: Cannot read property...",
    "stack": "Error stack trace..."
  },
  "screenshot": "data:image/png;base64,...",
  "comment": "User description of the issue",
  "url": "https://example.com/page",
  "timestamp": 1234567890
}

Response:

{
  "success": true,
  "data": {
    "reportId": "abc123",
    "timestamp": 1234567890
  }
}

POST /api/questions/answer

Receive answers from browser to Claude's questions.

Request Body:

{
  "sessionId": "session-123",
  "answers": [
    { "questionId": "q1", "answer": "User's answer" }
  ]
}

Development

Setup

# Clone the repository
git clone https://github.com/yourco/debug-mcp-server.git
cd debug-mcp-server

# Install dependencies
npm install

# Run in development mode
npm run dev

Project Structure

debug-mcp-server/
├── src/
│   ├── index.ts              # Entry point
│   ├── mcp/                  # MCP server implementation
│   ├── http/                 # HTTP/WebSocket servers
│   ├── storage/              # File storage layer
│   ├── types/                # TypeScript types
│   └── config/               # Configuration
├── specs/                    # SpecKit specifications
├── tests/                    # Jest tests
└── logs/                     # Session logs

Testing

# Run unit tests
npm test

# Run with coverage
npm run test:coverage

# Run linter
npm run lint

Building

# Build for production
npm run build

# Output: dist/index.js

Architecture

┌─────────────────────┐
│  Browser Widget     │
│  (HTTP/WebSocket)   │
└──────────┬──────────┘
           │
           ↓
┌─────────────────────────────────────┐
│  Debug MCP Server                   │
│  ┌─────────────────────────────┐    │
│  │ HTTP Server (Express)       │    │
│  │  - POST /api/debug          │    │
│  │  - POST /api/questions      │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ WebSocket Server            │    │
│  │  - Push questions to browser│    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ MCP Server                  │    │
│  │  - Tools & Resources        │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ File Storage                │    │
│  │  - ~/.debug-mcp/            │    │
│  └─────────────────────────────┘    │
└──────────┬──────────────────────────┘
           │
           ↓
┌─────────────────────┐
│  Claude Code        │
│  (VS Code)          │
└─────────────────────┘

Storage Structure

~/.debug-mcp/
├── reports/
│   ├── 2025-11-26/
│   │   ├── report-abc123.json
│   │   └── report-def456.json
│   └── 2025-11-27/
│       └── report-ghi789.json
├── screenshots/
│   ├── screenshot-abc123.png
│   └── screenshot-def456.png
└── config.json

Troubleshooting

Server won't start

Check if port is already in use:

lsof -i :3000

Use a different port:

DEBUG_MCP_PORT=4000 debug-mcp-server

Claude Code can't connect

  1. Verify server is running: curl http://localhost:3000/api/health

  2. Check MCP configuration in Claude Code settings

  3. Restart VS Code after config changes

Browser widget can't send data

  1. Verify server is running on localhost:3000

  2. Check browser console for CORS errors

  3. Ensure browser has network access to localhost

Contributing

See CLAUDE.md for development guidelines and project constitution.

License

MIT

Support

For issues and feature requests, please open an issue on GitHub.

Available Tools

10 tools
ask_user_questionsA

Send questions to browser user and wait for answers. Opens an interactive Q&A modal in the browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNoTimeout in milliseconds (default: 120000)
questionsYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the burden of behavioral disclosure. It correctly states that the tool sends questions, waits for answers, and opens an interactive modal, implying a blocking, user-facing interaction. However, it does not detail potential failure modes (e.g., timeout handling, user dismissal) or the return format, leaving some behavioral aspects undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is composed of two short, purposeful sentences that immediately convey the core function and user-visible effect. There is no redundant or extraneous information—every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema and no annotations, the description should elaborate on the return value, blocking semantics, and error cases. It covers the basic workflow but leaves out important operational details like what happens on timeout or if the user cancels, making it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add any parameter-level meaning beyond the schema. The schema covers the 'timeout' well with its own description, but the 'questions' parameter (which is required) has no direct description and the tool description does not explain how to structure questions or what each field means. With 50% schema coverage, the description should compensate but fails to do so.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Send questions to browser user and wait for answers') and the mechanism ('Opens an interactive Q&A modal'). This specific verb+resource phrasing distinguishes it from the unrelated sibling tools (debug reports, backlog items), making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: this tool is used when you need to ask the user questions and wait for responses. While it doesn't explicitly mention alternatives or exclusions, the context is unambiguous and there are no direct competing tools among the siblings, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

clear_old_reportsB

Delete debug reports older than specified days

ParametersJSON Schema
NameRequiredDescriptionDefault
olderThanDaysNoDelete reports older than this many days (default: 7)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose side effects and prerequisites. It states deletion but omits irreversibility, confirmation behavior, permissions, or response/return details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It front-loads the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, and the description plus schema cover the basic purpose and parameter. However, it lacks safety/behavioral context for a destructive operation and usage guidance, leaving it minimal but adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents the 'olderThanDays' parameter with its default of 7. The description adds no meaningful semantics beyond the schema, so it earns the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Delete), the resource (debug reports), and the condition (older than specified days). This distinguishes it from sibling tools like list_debug_reports and get_debug_report.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. The purpose implies a cleanup scenario, but there is no mention of when not to use it or alternative approaches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dismiss_backlog_itemB

Dismiss a backlog item (not actionable or duplicate)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBacklog item ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Dismiss', which implies a mutation but does not explain side effects (e.g., whether the item is removed, marked, or recoverable), permissions, or any consequences. Critical behavioral context is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It efficiently communicates the action and the target category, earning every word. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (1 parameter, no output schema) and the description provides enough purpose and selection guidance for basic invocation. However, the absence of annotations and the lack of detail about the dismissal behavior leave gaps regarding side effects and post-condition state, making it only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the single parameter 'id' having a clear description ('Backlog item ID'). The tool description adds no additional parameter semantics, but since the schema fully documents the parameter, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Dismiss a backlog item') and adds a specific scope ('not actionable or duplicate'), which distinguishes it from sibling tools like resolve_backlog_item or process_backlog_item. However, it doesn't explicitly name alternatives or contrast with them, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'not actionable or duplicate' implies when to use this tool—for items that are neither actionable nor duplicates. It gives a selection criterion but does not explicitly state when not to use it or direct to alternatives like resolve_backlog_item. Usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_debug_reportA

Get a specific debug report by ID including full logs, error, and screenshot reference

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesReport ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the contents of the report but does not explicitly state that the operation is read-only or mention any behavioral aspects like error handling or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action and resource, no unnecessary words. All information is relevant and compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool, the description covers the essential content (logs, error, screenshot reference). It lacks details about not-found behavior or return format, but the absence of an output schema makes the description adequate for the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with the 'id' parameter already described as 'Report ID'. The description adds no additional meaning beyond 'by ID', so it does not compensate beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get a specific debug report by ID' with a specific verb and resource, distinguishing it from siblings like list_debug_reports. The inclusion of 'full logs, error, and screenshot reference' further clarifies the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a single report by ID, which contrasts with list_debug_reports. However, it does not explicitly mention alternatives or when not to use, so it lacks formal exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_next_backlog_itemA

Get the next highest-priority pending backlog item to process

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only states that it 'gets' the item without clarifying side effects. It is unclear whether this tool peeks at the item without modifying its state or marks it as in-progress, and what happens when the backlog is empty. This lack of behavioral detail is a significant gap for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that leads with the verb and immediately conveys the tool's core purpose. It contains no fluff or redundant information, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, no annotations, no output schema), the description covers the basic purpose but omits critical behavioral details like whether the retrieval is destructive or consumes the item. While a simple getter might be understandable, the lack of clarity on side effects and edge cases (e.g., empty backlog) leaves the description only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no schema information to elaborate on. The description adds no parameter details, but since there are none to explain, the baseline score of 4 applies because the description correctly implies a parameterless operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' and a clear resource 'next highest-priority pending backlog item to process', making the tool's function immediately apparent. It distinguishes itself from siblings like 'list_backlog' (which lists all) and 'process_backlog_item' (which processes) by focusing on retrieval of the next item in priority order.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('to process') but does not explicitly state when to use this tool versus alternatives like 'list_backlog' or 'process_backlog_item'. No exclusions or alternative guidance is provided, leaving the agent to infer the intended use from the name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_backlogA

List queued debug reports in the backlog with statistics. Returns items sorted by priority (critical > high > medium > low) then by age.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return
statusNoFilter by status
priorityNoFilter by priority
projectPathNoFilter by project path

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully discloses the sorting order (priority then age), but leaves vague what 'statistics' means and does not explain potential truncation or default limits. This is a moderate level of transparency for a read-only list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that clearly states the purpose and sorting behavior. Every word earns its place, with no redundant or vague filler. It is appropriately concise for a straightforward list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should clarify return behavior and side effects. It defines scope and sorting but omits details about 'statistics', pagination, or default limits. For a list tool with four optional parameters, this is a notable gap but not critically incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% description coverage for all four parameters (limit, status, priority, projectPath), including enums and descriptions. The tool description adds no additional parameter semantics beyond what the schema offers, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists queued debug reports in the backlog, using the specific verb 'list' and resource 'queued debug reports'. It distinguishes from sibling tools like list_debug_reports by emphasizing the backlog context and adding a concrete sort order (priority then age).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that this is for the backlog of queued debug reports, which implies when it should be used. It does not explicitly name alternatives or exclusion criteria, but the context is sufficient to differentiate it from sibling tools like get_debug_report or clear_old_reports.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_debug_reportsA

List all stored debug reports with metadata

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool lists all stored debug reports, which is a clear read-only behavior. However, without annotations, it does not mention return format, pagination, ordering, or any potential side effects. It is honest but minimal, adding no context beyond what the sentence itself says.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, succinct sentence that front-loads the action ('List all') and the resource. Every word contributes, with no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, zero-parameter list tool without an output schema, the description sufficiently conveys what it does. It is complete enough for the agent to understand the operation, though it leaves 'metadata' unspecified and does not describe the expected output structure. These are minor gaps given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and an empty input schema, so schema coverage is trivially 100%. No additional parameter description is needed, and the baseline for zero parameters is 4. The description adds no param-specific info, but none is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and clearly identifies the resource as 'all stored debug reports' with 'metadata', distinguishing it from siblings like get_debug_report (specific retrieval) and clear_old_reports (deletion). The scope ('all') is explicit, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. While it is implicitly separate from get_debug_report, it does not state 'use this to browse all reports' or mention any restrictions or prerequisites. There is no when-to-use or when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

process_backlog_itemA

Start processing a backlog item. Marks it as in_progress and returns the associated debug report.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBacklog item ID

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behavioral traits: it mutates state by marking the item as in_progress and returns the associated debug report. This goes beyond a simple 'process' tautology, though it omits error cases or idempotency details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the primary action and outcome with no redundant words. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-parameter design and no output schema, the description adequately covers the action and return value. It does not explicitly position the tool within the backlog lifecycle relative to siblings, but the core information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'id' is already fully described in the schema as 'Backlog item ID' (100% coverage). The description adds no additional semantic meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action ('Start processing') and resource ('a backlog item'), and differentiates from siblings by noting the specific state change to in_progress. This distinguishes it from resolve_backlog_item and dismiss_backlog_item.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as resolve_backlog_item or get_next_backlog_item. The phrase 'Start processing' implies it is a first step, but it lacks any when-not or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_backlog_itemB

Mark a backlog item as resolved (issue fixed)

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBacklog item ID

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does state the outcome (issue fixed), but it does not disclose side effects, reversibility, permissions required, or how it differs from other state-changing operations. A mutation tool needs more behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately communicates the action. Every word earns its place, with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one param, no output schema), but the description lacks context about how this differs from sibling tools and what the agent should know before invoking it. It is minimally viable but leaves gaps in usage guidance and behavioral effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single parameter 'id' as a 'Backlog item ID' with 100% coverage. The description adds no extra parameter detail, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Mark a backlog item as resolved (issue fixed)'. This clearly distinguishes it from siblings like 'dismiss_backlog_item' or 'process_backlog_item' by naming the exact state change.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. There is no mention of prerequisites, when resolution is appropriate, or exclusions (e.g., when to use dismiss or update instead).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_backlog_itemB

Update a backlog item's status, priority, or comment

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesBacklog item ID
statusNoNew status
commentNoUpdated comment
priorityNoNew priority

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description must fully disclose behavioral traits. It only states that fields are updated, but gives no details about side effects, validation, overwrite semantics, permissions, or error handling. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, front-loaded action, and clear target. Every word contributes meaning; highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core action but lacks important context such as whether multiple fields can be updated simultaneously, behavior on invalid IDs, and response details. With a simple schema and no output schema, this is minimally adequate but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptive parameter definitions, so the baseline is 3. The description adds little beyond restating the fields, and its use of 'or' could be interpreted as implying only one field can be updated at a time, which is not specified in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('update') and the resource ('backlog item'), naming the settable fields (status, priority, comment). It distinguishes itself from sibling tools by specifying a general update scope, though it doesn't explicitly contrast with resolve/dismiss variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like resolve_backlog_item, dismiss_backlog_item, or process_backlog_item. The agent is left without decision criteria for selecting this tool over its siblings.

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.

  1. 10 tool updatesv1.0.0
    • First observedask_user_questions
    • First observedclear_old_reports
    • First observeddismiss_backlog_item
    • First observedget_debug_report
    • First observedget_next_backlog_item
    • First observedlist_backlog
    • First observedlist_debug_reports
    • First observedprocess_backlog_item
    • First observedresolve_backlog_item
    • First observedupdate_backlog_item

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct resource and action. The two resource types (debug reports vs backlog items) are clearly separated, and the backlog action verbs (process, resolve, dismiss, update) have distinct meanings.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with lowercase and underscores. Verbs such as list, get, clear, process, resolve, dismiss, and update are uniformly applied.

Tool Count5/5

10 tools is well within the ideal range for a focused debugging workflow. Each tool addresses a necessary operation without unnecessary bloat.

Completeness5/5

The tool set covers the full lifecycle of backlog items (pending, processing, resolved/dismissed) and provides essential report management (list, get, clear old). The inclusion of ask_user_questions fills a critical interactive gap, making the surface comprehensive.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Bridges browser content, developer tools data, and web page interactions with Claude through MCP. Enables page inspection, DOM analysis, JavaScript execution, console monitoring, network activity tracking, and screenshot capture across multiple browser tabs.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude Code to control a real browser using AI for web scraping, competitive intelligence, and UX auditing through the MCP protocol.
    -

Latest Blog Posts

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/developerlabsai/debug-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server