Model Context Protocol

Claude Code meets BugToMe

The first native MCP integration for bug tracking. Manage bugs directly from Claude Code in your IDE.

What is Model Context Protocol?

The open standard for connecting AI and external tools

MCP (Model Context Protocol) is an open standard developed by Anthropic to connect AI assistants like Claude with external tools and data. It allows Claude Code to interact directly with systems like BugToMe, reading and modifying data securely and in a controlled manner.

Architecture

Claude Code

Host / Client

MCP Protocol

JSON-RPC 2.0

BugToMe

MCP Server

Configuration in 3 Steps

Start using BugToMe with Claude Code in minutes

1

Generate your Bearer Token

Log in to your BugToMe account and go to Settings → API Token. Generate a new token and copy it to a safe place.

Important: The token will only be shown once. Keep it secure.
2

Configure Claude Code

You can configure the integration via CLI or by directly modifying the configuration file.

A CLI Method

Terminal
claude mcp add --transport http bugtome https://mcp.bugto.me \
  --header "Authorization: Bearer YOUR_TOKEN"

B Configuration File

Create or modify the .mcp.json file in your project root:

.mcp.json
{
  "mcpServers": {
    "bugtome": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.bugto.me"
      ],
      "env": {
        "BUGTOME_TOKEN": "your-api-token-here"
      }
    }
  }
}
3

Start using Claude Code

Restart Claude Code and start interacting with your bugs. Claude will have access to all BugToMe tools.

Ready! Now you can ask Claude things like "show me critical bugs" or "update the status of bug #123".

Available MCP Tools

21 tools to completely manage your bugs from Claude Code

Contesto

Tool Count
get_workspace_context READ

Gets complete workspace context in a single call: all organizations with their projects. Use this as an alternative to calling list_organizations then list_projects separately. Ideal for getting a quick overview of available workspaces before performing operations. No parameters required. Returns: Array of organizations, each with nested array of their active projects.

Parameters
include_ticket_counts (boolean) - Include open ticket count per project (default true). Set to false for faster response.
list_organizations READ

Lists all organizations the authenticated user has access to. Use this FIRST to get organization IDs needed by other tools. No parameters required. Returns: Array of organizations with id, name, slug, and your role in each.

Progetti

Tool Count
list_projects READ

Lists all active projects in an organization. Use this to get project IDs needed for creating tickets or filtering. Prerequisite: Call list_organizations first to get the organization_id. Requires: can_view_projects permission (all roles have this). Returns: Array of projects with id, name, slug, code, and open ticket count.

Parameters
organization_id* (string) - UUID of the organization. Example: '550e8400-e29b-41d4-a716-446655440000'

Ticket

Tool Count
list_tickets READ

Lists tickets with optional filters for status, priority, project, and assignee. Use this to browse and filter tickets in an organization. Prerequisite: Call list_organizations first to get the organization_id. Visibility: Managers/developers see all tickets; operations see only their own. Returns: Array of tickets with pagination (default 50, max 100 results).

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
project_id (string) - Filter by project UUID (optional). Get this from list_projects.
status (string) - Filter by status (optional). Values: open, triage, in_progress, closed.
priority (string) - Filter by priority (optional). Values: low, medium, high, critical.
assignee_id (string) - Filter by assignee UUID (optional). Get member IDs from organization.
limit (integer) - Max results (default 50, max 100).
offset (integer) - Number of results to skip for pagination (default 0). Use with limit to paginate through results.
get_ticket READ

Gets detailed information about a specific ticket including all comments. Use this when you need full ticket details like BDD description, comments history, or organization info. Prerequisite: Get ticket_id from list_tickets or search_tickets. Visibility: Operations can only view their own tickets. Returns: Full ticket with given/when/then fields, comments, reporter, assignee, and organization.

Parameters
ticket_id* (string) - UUID of the ticket. Get this from list_tickets or search_tickets.
create_ticket WRITE

Creates a new bug ticket using BDD format (Given-When-Then). Use this to report a bug with structured description of context, action, expected and actual behavior. Prerequisite: Call list_organizations then list_projects to get required IDs. Requires: manager or operation role (developers cannot create tickets). Returns: The created ticket with generated code (e.g., WEB-001).

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
project_id* (string) - UUID of the project. Get this from list_projects.
given* (string) - BDD GIVEN: Initial context/state when the bug occurred. Example: 'User is logged in on the dashboard page with admin role'
when_action* (string) - BDD WHEN: Action performed that triggered the bug. Example: 'User clicks the Delete button on a user record'
then_expected* (string) - BDD THEN: Expected behavior that should have happened. Example: 'User record should be deleted and confirmation shown'
then_actual* (string) - BDD ACTUAL: What actually happened (the bug). Example: 'Error 500 Internal Server Error is displayed'
priority (string) - Ticket priority. Values: low, medium (default), high, critical.
story_points (integer) - Story points for effort estimation. Required if organization has sprints enabled. Common values: 1, 2, 3, 5, 8, 13.
update_ticket WRITE

Updates a ticket's status, priority, or assignee. Use this to progress a ticket through the workflow or reassign it. Prerequisite: Get ticket_id from list_tickets or search_tickets. Permissions: Status to triage/in_progress requires work permission; status to closed requires resolve permission. Status flow: open -> triage -> in_progress -> closed. To unassign, set assignee_id to empty string.

Parameters
ticket_id* (string) - UUID of the ticket. Get this from list_tickets or search_tickets.
status (string) - New status (optional). Flow: open -> triage -> in_progress -> closed.
priority (string) - New priority (optional). Values: low, medium, high, critical.
assignee_id (string) - UUID of the account to assign (optional). Set to empty string '' to unassign.
take_ticket READ

Takes ownership of a ticket by assigning it to yourself and setting status to in_progress. Use this to claim a ticket before starting work on it. This prevents conflicts when multiple sessions work on the same project. Prerequisite: Get ticket_id from list_tickets or search_tickets. Permissions: Requires work permission on tickets. Note: If ticket is already assigned to someone else, a warning is returned but assignment proceeds.

Parameters
ticket_id* (string) - UUID of the ticket to take. Get this from list_tickets or search_tickets.
complete_ticket READ

Completes a ticket by setting its status to closed. Use this when you have finished working on a ticket. Optionally add resolution notes that will be saved as a comment. Prerequisite: Get ticket_id from list_tickets or search_tickets. Permissions: Requires resolve permission on tickets. Note: If ticket is assigned to someone else, a warning is returned but completion proceeds.

Parameters
ticket_id* (string) - UUID of the ticket to complete. Get this from list_tickets or search_tickets.
resolution_notes (string) - Optional notes about how the ticket was resolved. Will be saved as a comment.
add_comment WRITE

Adds a comment to a ticket for discussion or status updates. Use this to add notes, progress updates, or communicate with team members on a ticket. Prerequisite: Get ticket_id from list_tickets, search_tickets, or get_ticket. Any authenticated user with access to the ticket can add comments. Returns: The created comment with id, body, author, and timestamp.

Parameters
ticket_id* (string) - UUID of the ticket. Get this from list_tickets, search_tickets, or get_ticket.
body* (string) - Comment text. Example: 'Investigated the issue - root cause is in the payment gateway timeout settings.'
search_tickets READ

Full-text search across tickets in an organization. Use this to find tickets by keywords in their BDD description (given, when, then fields) or ticket code. Prerequisite: Call list_organizations first to get the organization_id. Optionally filter by project_id or status. Use before creating a ticket to check for duplicates. Returns: Matching tickets (default 20, max 50 results) with query and count.

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
query* (string) - Search query. Searches in given, when_action, then_expected, then_actual, and ticket code. Example: 'login error' or 'WEB-001'.
project_id (string) - Limit search to specific project (optional). Get this from list_projects.
status (string) - Filter by status (optional). Values: open, triage, in_progress, closed.
limit (integer) - Max results (default 20, max 50).
offset (integer) - Number of results to skip for pagination (default 0).

Documentazione

Tool Count
save_documentation WRITE

Saves technical documentation generated by AI for a project. Use this after analyzing a codebase to store documentation sections (models, controllers, services, etc.). Prerequisite: Call list_organizations then list_projects to get required IDs. Sections: overview, models, controllers, services, views, jobs, tests, or 'full' for complete documentation. Requires: can_create_documentation permission (manager role). Returns: documentation_id, section saved, and confirmation message.

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
project_id* (string) - UUID of the project. Get this from list_projects.
section* (string) - Documentation section to save. Values: overview, models, controllers, services, views, jobs, tests, or 'full' for complete documentation.
content* (string) - Markdown content of the documentation. Use proper markdown formatting with headers, code blocks, etc.
metadata (object) - Optional metadata about the documentation analysis.

Sprint

Tool Count
list_sprints READ

Lists sprints for the organization with optional status filter. Use this to browse sprints and their progress. Prerequisite: Call list_organizations first to get the organization_id. Returns: Array of sprints with pagination (default 50, max 100 results).

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
status (string) - Filter by status (optional). Values: planned, active, completed, cancelled.
limit (integer) - Max results (default 50, max 100).
offset (integer) - Number of results to skip for pagination (default 0).
get_sprint READ

Gets detailed information about a specific sprint including its tickets. Use this to see sprint details and all tickets assigned to it. Prerequisite: Call list_sprints to get the sprint ID. Returns: Sprint object with array of sprint tickets including ticket info.

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
sprint_id* (string) - UUID of the sprint. Get this from list_sprints.

Segnalazioni

Tool Count
list_reports READ

Lists bug reports for the organization with optional filters. Use this to browse and filter reports by status or project. Prerequisite: Call list_organizations first to get the organization_id. Returns: Array of reports with pagination (default 50, max 100 results).

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
status (string) - Filter by status (optional). Values: pending, converted, rejected.
project_id (string) - Filter by project UUID (optional). Get this from list_projects.
limit (integer) - Max results (default 50, max 100).
offset (integer) - Number of results to skip for pagination (default 0).
create_report WRITE

Creates a new bug report for a project. Use this to submit a bug report with a free-text description that will be analyzed. Prerequisite: Call list_organizations then list_projects to get required IDs. Requires: permission to create reports. Returns: The created report with generated code (e.g., WEB-R001).

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
project_id* (string) - UUID of the project. Get this from list_projects.
description* (string) - Detailed description of the bug (minimum 20 characters). Describe what happened, steps to reproduce, and any relevant context.

Scenari

Tool Count
list_scenarios READ

List available test scenarios for the current organization. Returns scenarios that can be executed via browser automation (Playwright).

Parameters
organization_id (string) - UUID of the organization. Get this from list_organizations.
status (string) - Filter by status (default: active)
project_id (string) - Filter by project ID
tags (array) - Filter by tags (scenarios must have ALL specified tags)
limit (integer) - Maximum number of scenarios to return (default: 50)
get_scenario READ

Get full details of a test scenario including its description that explains what to test. Use this before executing a scenario to understand the test steps and requirements.

Parameters
organization_id (string) - UUID of the organization. Get this from list_organizations.
scenario_id* (string) - The scenario ID to retrieve
create_scenario WRITE

Creates a new test scenario for browser automation testing. Scenarios describe test steps in natural language that can be executed by Claude for Chrome or Playwright. Prerequisite: Call list_organizations to get the organization ID. Optionally, call list_projects to get a project ID for association. Requires: scenarios:create permission. Returns: The created scenario with its ID.

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
name* (string) - Name of the scenario. Example: 'Login Flow Test'
description* (string) - Test steps in natural language. Example: '1. Navigate to login page\n2. Enter credentials\n3. Click Login button\n4. Verify dashboard is shown'
base_url (string) - Base URL for the test. Optional. Example: 'https://app.example.com'
project_id (string) - UUID of the associated project. Optional. Get this from list_projects.
tags (array) - Tags for categorization. Example: ['login', 'smoke-test']
status (string) - Scenario status. Values: draft (default), active, disabled.
preferred_tool (string) - Preferred browser automation tool. Values: claude_for_chrome (default), playwright.
update_scenario WRITE

Updates an existing test scenario. Only the fields you provide will be updated. To clear optional fields like base_url or project_id, pass an empty string. To clear tags, pass an empty array. Requires: scenarios:update permission. Returns: The updated scenario with a list of modified fields.

Parameters
organization_id (string) - UUID of the organization. Get this from list_organizations.
scenario_id* (string) - UUID of the scenario to update. Get this from list_scenarios.
name (string) - New name for the scenario.
description (string) - New test steps in natural language.
base_url (string) - New base URL. Pass empty string to clear.
project_id (string) - New project UUID. Pass empty string to remove project association.
tags (array) - New tags array. Pass empty array [] to clear all tags.
status (string) - New status. Values: draft, active, disabled.
preferred_tool (string) - New preferred browser automation tool.
report_scenario_result WRITE

Report the result of a scenario execution. If the test failed, a ticket will be automatically created in the associated project with details about the failure.

Parameters
organization_id* (string) - UUID of the organization. Get this from list_organizations.
scenario_id* (string) - The scenario that was executed
result* (string) - Test result: 'passed' (test succeeded), 'failed' (test assertions failed), 'error' (execution error)
notes (string) - Execution notes, observations, or detailed explanation of the failure/success
error_details (object) - Details about the error (for failed/error results)
started_at (string) - When the scenario execution started (ISO8601). Defaults to current time if not provided.

Practical Examples

How to use BugToMe from Claude Code

1

View critical bugs

You: "Show me all open critical bugs in the web-app project"

Claude: Will call list_bugs with status="open" and priority="critical", then show you a formatted list with reference number, title and assignee.

2

Analyze a specific bug

You: "Give me the details of bug WEB-0042 and suggest how to fix it"

Claude: Will use get_bug to get Given-When-Then, then analyze the context and suggest a solution based on your project code.

3

Close a resolved bug

You: "Mark bug WEB-0042 as resolved, I fixed the issue in the last commit"

Claude: Will call update_bug_status with status="resolved" and automatically add resolution notes based on your last commit.

Configuration for Other IDEs

Specific instructions for each development environment

Claude Code

Start the dialog to add a new MCP server:

Terminal
/mcp add

Configure

  • Field Name
  • Field Type
  • Field Command
Copilot / VS Code

Install via VS Code CLI:

Terminal
code --add-mcp '{"name":"bugtome","command":"npx","args":["mcp-remote","https://mcp.bugto.me"],"env":{"BUGTOME_TOKEN":"your-token"}}'

Alternative

Cursor

Go to Cursor SettingsMCPNew MCP Server. Use the standard JSON configuration provided above.

Factory CLI

Use Factory CLI to add the MCP server:

Terminal
droid mcp add bugtome "npx mcp-remote https://mcp.bugto.me"
Gemini CLI

Project wide:

Terminal
gemini mcp add bugtome npx mcp-remote https://mcp.bugto.me

Globally:

Terminal
gemini mcp add -s user bugtome npx mcp-remote https://mcp.bugto.me
Gemini Code Assist

Follow the MCP configuration guide using the standard configuration.

JetBrains AI Assistant & Junie

AI Assistant: Go to Settings | Tools | AI Assistant | Model Context Protocol (MCP)Add

Junie: Go to Settings | Tools | Junie | MCP SettingsAdd

Kiro

In Kiro Settings, go to Configure MCPOpen Workspace or User MCP Config and use the standard configuration.

OpenCode

Add the following configuration to the file ~/.config/opencode/opencode.json:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bugtome": {
      "type": "local",
      "command": ["npx", "mcp-remote", "https://mcp.bugto.me"]
    }
  }
}
Qoder / Qoder CLI

GUI: In Qoder Settings, go to MCP Server+ Add

CLI - Project wide:

Terminal
qodercli mcp add bugtome -- npx mcp-remote https://mcp.bugto.me

CLI - Globally:

Terminal
qodercli mcp add -s user bugtome -- npx mcp-remote https://mcp.bugto.me
Visual Studio

Follow the Visual Studio MCP guide and use the standard JSON configuration.

Warp

Go to Settings | AI | Manage MCP Servers+ Add and use the standard configuration. See the Warp documentation.

Windsurf

Follow the MCP configuration guide using the standard configuration.

Ready to power up your workflow?

Sign up now and start using BugToMe with Claude Code in minutes.