Bugasura MCP Server
Imports documents from Coda into a Bugasura project's knowledge base (available in the local STDIO server only; takes a Coda API token as an argument).
Imports content from Confluence into a Bugasura project's knowledge base (available in the local STDIO server only; takes a Confluence API token as an argument).
Imports from Figma into a Bugasura project's knowledge base (available in the local STDIO server only; takes a Figma API token as an argument).
Imports content from Jira into a Bugasura project's knowledge base (available in the local STDIO server only; takes a Jira API token as an argument).
Click on "Deploy 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., "@Bugasura MCP Servercreate a test case for user login with valid credentials"
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.
Bugasura MCP Server
Connect AI assistants directly to your test management workspace.
Bugasura MCP Server enables AI tools like Claude, VS Code Copilot, and Cursor to interact with your Bugasura projects—manage test cases, track issues, plan sprints, and more—all through natural language.
⚠️ Breaking changes in 3.3
What changed | 3.2 | 3.3 |
Requirement ↔ test case links |
|
|
Coda, Jira, Confluence and Figma imports (10 tools) | Offered on every transport | Local (STDIO) only. They take that service's API token as an argument, so the hosted server no longer lists them and refuses calls to them |
Related MCP server: Zebrunner MCP Server
⚠️ Breaking changes in 3.0
Authentication moved to OAuth 2.0 sign-in. If you're upgrading from 2.x:
What changed | 2.x | 3.0 |
Hosted (HTTP) authentication |
| Sign in from the MCP client: it opens the Bugasura login + consent page once, then refreshes tokens silently. No key in any config file. |
| Present on every tool | Removed. Tools never accept a key; the assistant must not ask for one. |
STDIO (local subprocess) |
| Unchanged — the env var is the only credential source for STDIO. |
Prompt |
|
|
Server requirements (HTTP) | none |
|
⚠️ Breaking changes in 2.0
If you're upgrading from 1.x, update your client configuration:
What changed | 1.x | 2.0 |
Tool names |
|
|
Default HTTP endpoint |
|
|
List/find responses |
| Standard pagination envelope |
1.x clients pointed at /sse must migrate to /mcp — SSE has been removed.
Features
📋 Test Case Management - Create, update, delete, and search test cases
💬 Test Case Comments - Add, update, delete, and list comments on test cases with pagination and filtering
🐛 Issue Tracking - Report, manage, and delete bugs with rich context
💬 Issue Comments - Add, update, delete, and list comments on issues with pagination and filtering
📝 Requirements Management - Create, organize, and manage product requirements with folder structure
📚 Knowledge Base - Upload, list, star, and delete documents in a project's knowledge base, with folders created on demand; import from a website, Coda, Jira, Confluence or Figma
🏃 Sprint Planning - Create, update, delete, and manage agile sprints
🏁 Test Runs - Create one-time or scheduled (recurring) runs, edit/rerun/delete them, pick environments and app builds, and add test cases — all by name or ID
🧪 Test Data - Manage a project's test data environments (create, rename, duplicate, delete), their variables and the Globals scope, plus test data files (upload, read, download, delete), app builds and file categories — all by name or ID
🤖 Testpert Sprints - Full AI-driven test enrichment flow: upload specs, answer requirement questions, edit the test plan, and generate test cases automatically
👥 Team Collaboration - Assign work using names or emails (auto-resolves to user IDs)
👤 Team Member Management - Add, update roles, and remove team members using team names or IDs
🔍 Smart Discovery - Find projects and teams without memorizing IDs
🤖 Interactive Workflows - Guided context selection for all operations
Quick Start
1. Have a Bugasura account
That's all the hosted server needs. On first use your AI tool opens the Bugasura sign-in page in your browser; approve once and you're connected. Tokens refresh automatically for 30 days.
An API key is only needed for the local STDIO setup described under Local Development.
2. Install the MCP Server
Add the server URL to your AI tool. No headers, no keys: the client discovers the OAuth sign-in from the server and walks you through it.
Open Claude Desktop → Settings → Connectors → Add Custom Connector
Name:
BugasuraURL:
https://mcp.bugasura.io/mcp
Click Connect, sign in to Bugasura, and click Allow on the consent page.
Install in VS Code, or add to your VS Code MCP config:
{
"servers": {
"bugasura": {
"type": "http",
"url": "https://mcp.bugasura.io/mcp"
}
}
}VS Code detects the OAuth sign-in and opens the browser the first time a tool is used.
claude mcp add --transport http bugasura https://mcp.bugasura.io/mcpThen run /mcp inside Claude Code, choose Bugasura → Authenticate, and complete the sign-in in the browser.
Settings → Apps & Connectors → Advanced → turn on Developer mode, then Create:
Name:
BugasuraMCP Server URL:
https://mcp.bugasura.io/mcpAuthentication: OAuth
Click Create, sign in to Bugasura, and click Allow.
codex mcp add bugasura --url https://mcp.bugasura.io/mcp
codex mcp login bugasuraAdd to Cursor, or add to ~/.cursor/mcp.json:
{
"mcpServers": {
"bugasura": {
"url": "https://mcp.bugasura.io/mcp"
}
}
}Cursor shows a Needs login badge next to the server; click it to sign in.
Add to your Windsurf MCP config:
{
"mcpServers": {
"bugasura": {
"serverUrl": "https://mcp.bugasura.io/mcp"
}
}
}Windsurf opens the sign-in page on first use.
Open Cline
Click ☰ → MCP Servers → Remote Servers tab
Click Edit Configuration
Add:
{
"mcpServers": {
"bugasura": {
"url": "https://mcp.bugasura.io/mcp",
"type": "streamableHttp"
}
}
}{
"mcpServers": {
"bugasura": {
"type": "streamable-http",
"url": "https://mcp.bugasura.io/mcp"
}
}
}3. Start Using It
Once installed, just talk naturally to your AI assistant:
"List all my Bugasura teams and projects""Create a test case for login functionality with high severity""Create a requirement for user authentication feature""Show me all critical bugs in sprint 5"How It Works
No IDs Required
Bugasura MCP features interactive context selection. You don't need to know team IDs, project IDs, or user IDs—just describe what you want in natural language.
Example: Creating an issue without knowing any IDs:
You: "Create a bug for the login button not working"
AI: [Calls MCP server]
"Which team should I use?
1. Acme Corp (Admin)
2. Client Project (Member)"
You: "Acme Corp"
AI: "Which project?
1. Mobile App
2. Web App"
You: "Mobile App"
AI: "Which sprint?
1. Sprint 5 (IN PROGRESS)
2. Sprint 6 (SCHEDULED)"
You: "Sprint 5"
AI: ✓ "Created issue #ISSUE-123 in Sprint 5"The system guides you through team → project → sprint selection automatically.
Smart Assignee Resolution
Assign work using names, emails, or user IDs—the system automatically converts them:
"Assign issue 123 to John Doe""Add jane@example.com and user 789 to issue 456""Remove Sarah from issue 321"Works for both issues and test cases.
Discovery Tools
Find resources without memorizing IDs:
"Find my mobile app project"
→ Searches across ALL teams automatically"Show me all projects I have access to"
→ Returns complete context in one callWhat You Can Do
📋 Test Cases
Create an API test case for user authentication with priority P1List all test cases for the mobile app projectUpdate test case 123 to mark it as PASSAssign test case 456 to john@example.comDelete test case 789Delete test case with key "TES5"Delete test case named "Verify login with valid credentials"💬 Test Case Comments
List all comments on test case 123List comments on test case "Verify login with valid credentials"List only user comments on test case 456 (exclude system comments)Get details of comment 789Add a comment "Test passed on Chrome and Firefox" to test case 123Add a private comment to test case 456Update comment 789 with new textDelete comment 456📝 Requirements
Create a requirement titled "User Authentication" with details and priority P1List all requirements for the mobile app projectGet requirement details for requirement ID 2036Update requirement 2036 to change severity to HIGHAssign requirement 456 to john@example.comCreate a folder named "Sprint 1 Features" for organizing requirementsList all requirement folders in a projectDelete requirement 789Link test cases to requirement 2036🐛 Issues & Bugs
Create a critical bug for login page crash in sprint 5Show me all open issues assigned to meUpdate issue 789 to change status to "Fixed"Add John and Jane as assignees to issue 123Delete issue 456Delete issue with key "ISS09"Delete issue with summary "Login button not working"💬 Issue Comments
List all comments on issue 123List comments with pagination (start at 10, show 20 results)List only user comments, exclude system commentsGet details of comment 456Add a comment "Fixed in latest build" to issue 789Add a private comment to issue 123Update comment 456 with new textDelete comment 789🏃 Sprints
Create a new sprint called "Sprint 15" for the mobile appList all sprints for project 456Update sprint 789 to mark it as COMPLETEDShow sprint details including issue statisticsDelete sprint 321Delete sprint named "Sprint 15"🏁 Test Runs
List the test runs for the "Login Sprint"Show me the environments and app builds for this projectCreate a test run called "Smoke run" for the "Login Sprint" using the "Staging" environmentSchedule a daily run "Nightly" for the "Login Sprint" at 09:00, ending after 10 runsSchedule a run every 2 weeks on Monday and Friday at 09:00Add test cases 12, 15, 18 to the "Smoke run" runRename the "Smoke run" run and mark it COMPLETEDPause the "Nightly" schedulerRerun the "Nightly" schedulerDelete the "Smoke run" runNote: Reports/suites, environments, app builds, runs, and schedulers can all be referenced by name or numeric ID — names are resolved automatically (with a helpful prompt if a name is ambiguous).
🧪 Test Data
List the test data environments for this projectCreate a "Staging" environment and set its baseUrl to https://staging.example.comAdd a variable loginEmail = qa@example.com to the Staging environmentShow me everything in the Staging environmentDuplicate Staging as "UAT"Deactivate the legacyToken variable in GlobalsList the App Build files in ProductionUpload /home/me/users.csv to the Staging environment as Sample Data FilesShow me what's in users.csv in StagingDownload app-release.apk from Production to /home/me/builds/Which app builds does this project have?Add a custom file category "Payment Fixtures"Delete the "Old QA" environmentNote: Environments, variables and files can be referenced by name or numeric ID; use "Globals" for the project-wide global scope. Writes and deletes need the scope named explicitly and match names exactly; only the read tools accept part of a name. Deleting an environment that still holds custom variables or files asks for confirmation first (delete_contents=true). The default baseUrl / apiBaseUrl variables can have their value changed but cannot be renamed or deleted.
🤖 Testpert Sprints
TestPert is a paid, project-level feature that uses AI to generate a full test plan and test cases from your requirement documents.
Normal flow (with document upload):
Create a TestPert sprint called "Login Feature Sprint"Upload /path/to/login-spec.pdf to the knowledge baseStart the analysis and answer the requirement questionsReview the test plan focus areas and feature treeGenerate test cases for the sprintSkip-enrich flow (driven from existing requirements):
Create a TestPert sprint with skip_enrich_requirements=trueLink requirement IDs 101 and 102 to the sprintBuild the test plan from those requirements📋 Projects
List all projects in team 123Find project by name "Mobile App"Get detailed information for project 456Create a new project "E-commerce Web App" in team 123Update project 789 name to "Mobile Application"Update project "Mobile App" to change issue prefix to "MOB"Delete project 321Delete project "Old Test Project"👥 Team Management
List all my teamsFind team by name "Acme"Get detailed information for team 123Get detailed information for team "Engineering"Create a new team called "Mobile App Team"Update team 456 name to "Web Development Team"Rename team "Mobile Team" to "Mobile App Development"List all members in team "Acme Corp"Add john@example.com and jane@example.com to team "Engineering"Invite user@example.com to team 123Promote user 456 to admin in team "Marketing"Demote user to regular member in team "Sales"Remove john@example.com from team "Sales"Remove user by name "John Doe" from team 123Show all projects in team 456Available Tools
bugasura_get_user_context- Get all teams and projects in one callbugasura_find_team_by_name- Search teams by namebugasura_find_project_by_name- Search projects across all teamsbugasura_list_teams- List all teams you belong tobugasura_get_team- Get detailed team information including settings and subscription details (supports team_id or team_name)bugasura_create_team- Create a new team (creator becomes owner/admin)bugasura_update_team- Update team name (admin-only, supports team_id or team_name)bugasura_delete_team- Delete team permanently (admin-only, DESTRUCTIVE, supports team_id or team_name)bugasura_list_team_members- List team members with IDs, names, emails, and rolesbugasura_list_projects- List projects for a specific teambugasura_get_project_details- Get detailed project informationbugasura_create_project- Create a new project (supports interactive team selection) (NEW)bugasura_update_project- Update project name, prefix, and settings (supports project_id or project_name, admin privileges may be required) (NEW)bugasura_delete_project- Delete project permanently (supports project_id or project_name, admin-only, DESTRUCTIVE) (NEW)
Smart Team Resolution: The bugasura_get_team, bugasura_update_team, and bugasura_delete_team tools support both team_id (numeric ID) and team_name (text name with partial matching). Use whichever is more convenient.
Smart Project Resolution: The bugasura_update_project and bugasura_delete_project tools support both project_id (numeric ID) and project_name (text name with partial matching) for flexible identification. (NEW)
Note: Team deletion is permanent and removes all associated projects, sprints, issues, test cases, and requirements. Project deletion is also permanent and removes all associated sprints, issues, and test cases. Use with extreme caution!
bugasura_add_team_members- Invite users to a team by email addresses (supports team_id or team_name)bugasura_update_team_member- Change team member role (admin/member) (supports team_id or team_name)bugasura_delete_team_user- Remove a user from team (supports team_id or team_name, auto-resolves user by ID/email/name)
Smart Team Resolution: All team member tools support both team_id (numeric ID) and team_name (text name with partial matching). Use whichever is more convenient.
Smart User Resolution: The bugasura_delete_team_user tool can identify users by:
User IDs (e.g., "123")
Email addresses (e.g., "john@example.com")
Names or partial names (e.g., "John", "John Doe")
Note: Only team admins can manage team members. Team owner cannot be removed.
bugasura_list_sprints- List all sprints for a projectbugasura_get_sprint_details- Get sprint info and statisticsbugasura_create_sprint- Create a new sprintbugasura_update_sprint- Update sprint details (partial updates supported)bugasura_delete_sprint- Delete a sprint permanently (supports ID or name)
Note: All sprint tools support interactive context selection. Delete operations can be performed using either numeric IDs or names.
bugasura_list_issues- List issues with optional sprint filterbugasura_get_issue- Get detailed issue informationbugasura_create_issue- Create a new bug/issue, optionally with attachments (upload_id/file_paths)bugasura_add_issue_attachments- Attach files (screenshots, logs, recordings) to an existing issuebugasura_delete_issue_attachments- Delete issue attachments by file name (DESTRUCTIVE; names are checked against the issue first)bugasura_update_issue- Update issue details (partial updates supported)bugasura_delete_issue- Delete an issue permanently (supports ID, issue key like "ISS09", or summary/title)bugasura_get_issue_assignees- Get list of assignees for an issue with names, emails, and profile imagesbugasura_add_issue_assignees- Add assignees by name, email, or IDbugasura_remove_issue_assignees- Remove assignees by name, email, or ID
Note: All issue tools support interactive context selection. Delete operations can be performed using numeric IDs, issue keys (e.g., "ISS09"), or issue summaries.
bugasura_list_issue_comments- List comments for an issue with pagination and filtering (supports creator_id filter, exclude system comments)bugasura_get_issue_comment- Get single comment details with full content and metadatabugasura_add_issue_comment- Create a new comment on an issue (supports public/private visibility, HTML formatting, attachments)bugasura_update_issue_comment- Update existing comment text and add attachments (author-only, supports interactive comment selection)bugasura_delete_issue_comment- Delete comment permanently (author or admin, supports interactive comment selection)
Key Features:
Pagination: List comments with
start_atandmax_resultsparameters (default: 10 results, max: 100)Filtering: Filter by comment author (
creator_id) or exclude system comments (get_user_comments_only)Interactive Selection: Prompts for team → project → issue → comment if not provided
Comment Types: User comments (editable) vs System comments (auto-generated, read-only)
Visibility Control: Public comments (visible to all) vs Private comments (team members only)
HTML Support: Comments support HTML formatting and user mentions (@username)
Note: All comment tools support full interactive context selection, including comment selection for update/delete operations. System comments cannot be edited or deleted.
bugasura_list_test_cases- List test cases for a projectbugasura_get_test_case- Get detailed test case informationbugasura_create_test_case- Create a new test casebugasura_update_test_case- Update test case (partial updates supported, assignees by name/email/ID)bugasura_delete_test_case- Delete a test case permanently (supports ID, test case key like "TES5", or scenario name)bugasura_link_test_cases_to_sprint- Add existing test cases to a sprint (comma-separated test case IDs)bugasura_unlink_test_cases_from_sprint- Remove test cases from a sprint; they stay in the projectbugasura_list_agents- List the AI agents (API, Browser, Mobile) enabled on a project and what each one runsbugasura_assign_test_cases_to_agent- Assign sprint test cases to the agent for their platform, in the sprint or in a test runbugasura_run_agent_test_cases- Queue a test run's agent test cases (action='start') or report their progress (action='status')
Note: All test case tools support interactive context selection. Delete operations can be performed using numeric IDs, test case keys (e.g., "TES5"), or scenario names.
bugasura_list_test_run_environments- List test data environments and app builds for a project (use to pick an environment / app build by name)bugasura_list_test_runs- List test run executions and schedulers for a test suite (report)bugasura_get_test_run_details- Get details for a single test run executionbugasura_create_test_run- Create a run — one-time or scheduled (recurring) with friendly recurrence options, environment, app build, and seeded test casesbugasura_update_test_run- Update a single execution run (name, status, environment, app build)bugasura_update_test_run_scheduler- Edit a run/scheduler (rename, environment/build, switch single↔scheduled, change frequency/recurrence, pause/resume)bugasura_rerun_test_run- Trigger a fresh execution from an existing schedulerbugasura_add_test_cases_to_run- Add (copy) test cases into an existing runbugasura_delete_test_run- Delete one or more execution runs (soft by default, permanent withis_permanent_delete=1)bugasura_delete_test_run_scheduler- Delete one or more schedulers (soft by default, permanent withis_permanent_delete=1)
Note: All test run tools support interactive context selection. Reports/suites, environments, app builds, runs, and schedulers can be referenced by name or numeric ID (names resolved automatically, with disambiguation when needed). Recurrence is set with friendly options (frequency, repeat_value/repeat_unit, selected_days, recurrence_type) rather than raw JSON.
API endpoints used:
Tool | Method & endpoint | What it does |
|
| Lists environments and app builds for picking by name. |
|
| Lists run executions and schedulers for a suite. |
|
| Fetches one run (filtered by run id). |
|
| Creates a single or scheduled run. |
|
| Updates a single execution run. |
|
| Edits a run/scheduler (the UI edit-run modal). |
|
| Reruns from an existing scheduler. |
|
| Adds test cases into a run. |
|
| Deletes execution run(s). |
|
| Deletes scheduler(s). |
Names are resolved via bugasura_list_sprints (report ↔ sprint), bugasura_list_test_run_environments (environment / app build), and /v1/testrunsExecution/getList (run / scheduler).
bugasura_list_test_data_environments- List a project's test data environments with their baseUrl / apiBaseUrl (optionally with the Globals scope)bugasura_get_test_data_environment- Get one environment (or Globals) with all its active variables and filesbugasura_create_test_data_environment- Create an environment (starts with empty baseUrl / apiBaseUrl variables)bugasura_rename_test_data_environment- Rename an environmentbugasura_duplicate_test_data_environment- Copy an environment, or the Globals scope, with its variables and files into a new environmentbugasura_delete_test_data_environment- Delete an environment with its variables and files (DESTRUCTIVE; needsdelete_contents=truewhen it is not empty)bugasura_list_test_data_variables- List the variables of an environment or Globals (filter by key or active state)bugasura_create_test_data_variable- Add a variable to an environment or Globalsbugasura_update_test_data_variable- Change a variable's value, key, description or active state (partial update)bugasura_delete_test_data_variable- Delete one variable (DESTRUCTIVE; default variables are protected)bugasura_list_test_data_files- List the files of an environment or Globals (filter by category or name), with download URLs and the project's categoriesbugasura_upload_test_data_files- Upload one or more files to an environment or Globals under a category, from an upload link, a share link or local paths (terminal)bugasura_get_test_data_file- Get one file's details, download link and (Office files) preview link; optionally read a text file's contentbugasura_download_test_data_file- Get a file's direct download link, optionally saving it to the server's disk (terminal)bugasura_list_test_data_app_builds- List the app builds (App Build category) across all environments and Globalsbugasura_delete_test_data_file- Delete one file (DESTRUCTIVE)bugasura_list_test_data_categories- List the built-in and custom file categoriesbugasura_create_test_data_category- Add a custom file category
Key Features:
Environments, variables and files accept a name or numeric ID;
"Globals"names the project-wide global scopeDeletes always target a single resolved ID, never a whole scope
Update keeps every field you do not pass; the default
baseUrl/apiBaseUrlvariables only take value and active-state changes, as in the web app
Note: All test data tools require team_id and project_id; the create/update variable and upload tools also require environment (pass "Globals" for the global scope). File types follow the web app: the 'App Build' category takes apk, aab, ipa, apks, apkm, xapk; other categories take documents, spreadsheets, csv/json/xml/yaml, images, audio/video and app builds, up to 1024MB per file.
Uploading. bugasura_upload_test_data_files sends the files themselves to /v1/projectTestDataFiles/add as multipart testData[] parts, so it works wherever the server runs. Local paths (file_paths) are STDIO-only; on the hosted server the user uploads their own file through bugasura_create_upload_link(purpose='test_data') and the tool takes its upload_id (up to 100 MB per link), or passes a Google Drive, Dropbox or other public link as source_url (up to 1024 MB). Large builds get a longer timeout, and if Bugasura is still slower than that, the tool checks whether the files arrived before reporting the upload as unconfirmed, so a retry does not create duplicates.
API endpoints used:
Tool | Method & endpoint | What it does |
|
| Lists environments (and the Globals row). |
|
| Fetches a scope's active variables and files. |
|
| Creates an environment. |
|
| Renames an environment. |
|
| Copies an environment or Globals. |
|
| Deletes an environment and its contents. |
|
| Lists variables. |
|
| Creates a variable. |
|
| Updates a variable. |
|
| Deletes a variable. |
|
| Lists files and custom categories. |
|
| Sends the files as multipart |
|
| Fetches a file's details (content read from the CDN). |
|
| Resolves the file's CDN download link. |
|
| Lists App Build files across all scopes. |
|
| Deletes a file. |
|
| Reads the custom categories. |
|
| Adds a custom category. |
bugasura_list_testcase_comments- List comments for a test case with pagination and filtering (supports creator_id filter, exclude system comments)bugasura_get_testcase_comment- Get single test case comment details with full content and metadatabugasura_add_testcase_comment- Create a new comment on a test case (supports public/private visibility, HTML formatting)bugasura_update_testcase_comment- Update existing test case comment text (author-only, supports interactive comment selection)bugasura_delete_testcase_comment- Delete test case comment permanently (author or admin, supports interactive comment selection)
Key Features:
Pagination: List comments with
start_atandmax_resultsparameters (default: 10 results, max: 100)Filtering: Filter by comment author (
creator_id) or exclude system comments (get_user_comments_only)Interactive Selection: Prompts for team → project → test case → comment if not provided
Comment Types: User comments (editable) vs System comments (auto-generated, read-only)
Visibility Control: Public comments (visible to all) vs Private comments (team members only)
HTML Support: Comments support HTML formatting and user mentions (@username)
Attachments:
upload_id/file_pathsattach files to a new comment or add them to an updated one; a comment is the only place a test case holds files. An update keeps the comment's existing attachments unlesscomment_attachmentslists the ones to keep.
Note: All test case comment tools support full interactive context selection, including comment selection for update/delete operations. System comments cannot be edited or deleted.
bugasura_list_requirements- List all requirements for a project or sprintbugasura_get_requirement_details- Get detailed requirement information including parent/child hierarchybugasura_create_requirement- Create a new requirement with interactive folder selection, optionally with attachmentsbugasura_add_requirement_attachments- Attach files to an existing requirementbugasura_update_requirement- Update requirement details (partial updates supported, preserves all fields)bugasura_delete_requirement- Delete a requirement permanentlybugasura_link_requirement_testcases- Link test cases to a requirement (comma-separated IDs)bugasura_unlink_requirement_testcases- Unlink test cases from a requirement; the test cases are keptbugasura_create_requirement_folder- Create a folder for organizing requirementsbugasura_list_requirement_folders- List all folders in a projectbugasura_list_requirement_comments- List a requirement's comments (paginated)bugasura_get_requirement_comment- Get one comment with its attachment URLsbugasura_add_requirement_comment- Comment on a requirement, with optional attachments or as a threaded replybugasura_update_requirement_comment- Edit a comment and add attachments (existing ones are kept unlesscomment_attachmentssays otherwise)bugasura_delete_requirement_comment- Delete a comment and its attachments (DESTRUCTIVE)
Key Features:
Folder Organization: Requirements must be organized in folders. Interactive folder selection helps you choose or create folders during requirement creation.
Parent-Child Hierarchy: Requirements can have parent requirements for multi-level organization (EPICs → STORYs → TASKs).
Smart Assignee Resolution: Assign by name, email, or user ID (automatically resolved).
Field Preservation: Update operations fetch existing data and preserve all fields not being updated.
Test Case Linking: Link requirements to test cases for traceability.
Note: All requirement tools support interactive context selection. The folder_id field is required for all requirement operations and will be auto-fetched or interactively selected.
The knowledge base is a project-level document library, organized in folders and shown on the project's Knowledge Base page. It is separate from a TestPert sprint's own knowledge base (see the Testpert tools below).
Documents
bugasura_list_knowledge_base_documents- List documents in a folder or across the whole project (supportsstarred_onlyand pagination)bugasura_download_knowledge_base_document- Get a direct download link for an uploaded document, and optionally save it to diskbugasura_star_knowledge_base_document- Star or unstar a document (starred=Falseremoves the star)bugasura_delete_knowledge_base_document- Delete a document permanently (admin-only, DESTRUCTIVE)
Imports (all in tools/knowledge_base.py)
The six entries in the Knowledge Base page's "+" menu, plus the document editor's own Import menu. Everything except the file upload runs in the background — the tool returns as soon as the crawl/sync is queued, and bugasura_list_knowledge_base_documents shows its progress in stage. Connector credentials are supplied per call and are never stored by this server.
Local (STDIO) only: the Coda, Jira, Confluence and Figma imports and their listing tools take that service's API token as an argument, so the hosted server (
/mcp) does not offer them: a token typed into a hosted chat would pass through the conversation. Run the server locally to use them; on the hosted server, import a website or upload a file instead.
bugasura_create_upload_link- A short-lived, single-use upload link on this server for a file on the user's own computer (hosted server only).purposepicks the consuming tool:knowledge_base,document_import,testpert_kb,attachment(issues, issue/test case comments, requirements; any file type), ortest_data(bugasura_upload_test_data_files)bugasura_upload_knowledge_base_document- Upload document(s) (.txt,.pdf,.doc,.docx,.md) from an upload link, a share link or a local pathbugasura_import_website_to_knowledge_base- Crawl a website (max_pages,include_linked_pages)bugasura_import_coda_to_knowledge_base- Import a Coda doc's pages ("Superhuman Import"); needs a Coda API key and the doc's URL, id or namebugasura_import_jira_to_knowledge_base- Import Jira issues, one page per Jira project; whole projects by default, or specificissue_keysbugasura_import_confluence_to_knowledge_base- Import Confluence spaces, one page tree per space; whole spaces by default, or specificpage_idsbugasura_import_figma_to_knowledge_base- Import Figma frames as design context (DESTRUCTIVE — see Key Features below)bugasura_import_file_to_knowledge_base_document- The document editor's Import menu: a.mdfile becomes a new page, a.csv/.xlsx/.xlsfile becomes a Markdown table appended to an existing page
Pick what a connector should import with the listing tools first:
bugasura_list_coda_docs/bugasura_list_coda_pages- The docs a Coda API key can see, and one doc's page treebugasura_list_jira_projects/bugasura_list_jira_issues- The projects an account can see (with issue counts), and one project's issuesbugasura_list_confluence_spaces/bugasura_list_confluence_pages- The spaces an account can see, and one space's pages
Folders
bugasura_list_knowledge_base_folders- List the top-level knowledge base folders (paginated), each with its sub-folder tree and documentsbugasura_create_knowledge_base_folder- Create a folder, optionally nested under an existing onebugasura_rename_knowledge_base_folder- Rename a folder in place (keeps its parent and its contents)bugasura_delete_knowledge_base_folder- Delete a folder (admin-only, DESTRUCTIVE)
Page Documents
A page document is written in Bugasura instead of uploaded — the web app's "Create Document" flow. Its body is a tree of pages, each with its own markdown content. Documents synced from Coda, Jira, Confluence or a URL are stored in the same shape, so the page tools work on those too.
bugasura_create_knowledge_base_document- Create a page document (starts with one empty page)bugasura_rename_knowledge_base_document- Rename a page documentbugasura_list_knowledge_base_pages- List a document's pages, withpage_path,depthandhas_contentbugasura_create_knowledge_base_page- Add a page, optionally nested under a page or placed after one, with its contentbugasura_rename_knowledge_base_page- Rename a pagebugasura_get_knowledge_base_page_content- Read a page's current markdown body (call before editing one)bugasura_update_knowledge_base_page_content- Write a page's markdown: replace the whole body (''clears it), ormode='append'/mode='prepend'to add to itbugasura_duplicate_knowledge_base_page- Copy a page, with or without its sub pagesbugasura_move_knowledge_base_page- Re-parent or reorder a page (parent_page/after_page/to_root)bugasura_delete_knowledge_base_page- Delete a page and its sub pages (DESTRUCTIVE)
Key Features:
Automatic Folder Handling: Pass
folder_nameto file the document in that folder — it is matched case-insensitively and created when the project doesn't have one by that name. Omit it and the project's first knowledge base folder is used, or aKnowledge Basefolder is created when the project has none.Three Ways to Provide a File: Files are never encoded by the assistant.
upload_id(hosted server):bugasura_create_upload_linkreturns a link on this server,/upload/<upload_id>, bound to the signed-in user. It works once and expires after 30 minutes. The user opens it and uploads the file through a plain form, or a terminal client runscurl -sS -F file=@PRD.pdf <upload_url>. The bytes go through the browser or the shell, never through the model. The file is staged underUPLOAD_STAGING_PATHfor up to an hour, untilbugasura_upload_knowledge_base_document(upload_id=...)(orbugasura_import_file_to_knowledge_base_documentforpurpose='document_import') sends it to Bugasura and deletes it. Only the user who created the link can use itsupload_id.source_url: a Google Drive, Dropbox or any public download link. The server fetches it.file_paths: absolute paths, local STDIO servers only.
Multiple Files: Several paths, or up to 10 files in one upload link (100 MB in total), are uploaded into the same folder.
Folder Names: A folder name cannot contain
<,>,/or\, and two folders cannot share a name under the same parent —bugasura_rename_knowledge_base_folderreports both cases up front, and renaming a folder to the name it already has is answered without a write.Smart Document Resolution: Documents are identified by file name (exact match, then partial) or by numeric id. Ambiguous names come back with the matching documents so the user can pick one; add
folder_nameto narrow the search.Background Processing: Bugasura processes uploaded documents automatically; they become searchable project context once processing finishes.
Downloads Are Links First: Bugasura has no download endpoint — an uploaded file's bytes live on the CDN, and
bugasura_download_knowledge_base_documentturns the stored path into a direct, login-freedownload_url. That link is the answer for most clients; addsave_to_pathto also write the file to the machine running the server, which only helps when that is the user's own machine (terminal use). SetCDN_BASE_URLin the server's.envfor deployments the known-host map doesn't cover — the CDN is a separate CloudFront/S3 host and cannot be derived fromAPI_BASE_URL.Only Uploaded Files Are Downloadable: Page documents, website entries and Jira/Confluence imports have no file of their own, and Bugasura has no PDF export — so a page document cannot be handed over as a PDF. Read those with
bugasura_list_knowledge_base_pagesinstead.Smart Page Resolution: Pages are identified by page name (exact match, then partial) or by page id (
page_20250104120500). Ambiguous names come back with the matching pages so the user can pick one.Connector Credentials Are Per Call: Jira, Confluence, Coda and Figma credentials are asked for on every call and forwarded straight through — this server stores none of them. Jira Cloud and Confluence take an API token, a self-hosted Jira (
deployment_type="SERVER") takes the account password, Coda takes an API key, and Figma takes a personal access token. Confluence is the one exception: leave its three credential arguments out and the listing tools fall back to the project's saved Confluence integration.Import Into an Existing Document:
bugasura_import_jira_to_knowledge_baseandbugasura_import_confluence_to_knowledge_basecreate a new document by default; passdocument_identifierto merge the selection into an existing page document instead, the way the web app's "Import → Jira / Confluence" works from inside a document. A document that is already importing is reported rather than queued twice.Figma Replaces the Project's Frame Set: Bugasura keeps one set of Figma frames per project, and an import rewrites that set — any stored frame missing from the payload is deleted.
bugasura_import_figma_to_knowledge_basereads the existing frames back and carries them forward, so an import only adds;replace_existing=Truedrops them, and is only for when the user has asked for that. Each link must point at a frame (carry anode-id, i.e. Figma's "Copy link to selection"); a link to a whole file is rejected.Editing a Page is Read-Modify-Write: The API only ever writes a page's markdown, so
bugasura_get_knowledge_base_page_contentreads it back off the CDN the way the web editor does (needsCDN_BASE_URL, same as downloads). Because the write replaces the whole body, changing part of a page means reading it, editing that text, and writing the full result back withmode='replace'. To only add to a page,mode='append'/mode='prepend'do the read for you — pass just the new text. A page too large to read safely is refused rather than truncated, so a partial copy can never be written back over the full one.
Note: Documents are limited to 100MB each, except bugasura_import_file_to_knowledge_base_document (the document editor's Markdown/CSV/Excel import), which is capped at 10MB. Call bugasura_prepare_kb_upload first when the user wants to share a file — it returns the instructions to show them. Deleting a document removes its file and everything the AI learned from it, and cannot be undone; deleting a folder that still holds documents requires delete_documents=True and takes its documents with it. Both deletes require team or project admin rights. Deleting a page that has sub pages likewise requires delete_sub_pages=True and takes them with it.
TestPert is a paid, project-level AI feature (is_testpert_enabled on the project). It generates a full test plan and test cases from your requirement documents or existing requirements.
Sprint creation
bugasura_create_testpert_sprint- Create a TestPert sprint (confirms options before creating; setconfirm_options=Trueto proceed)
Normal flow — upload documents → answer questions → edit plan → generate
bugasura_testpert_upload_kb- Link project KB documents to the sprint, or upload docs/images to it (.txt,.pdf,.docx,.md,.jsonup to 100 MB;.png,.jpg, etc. up to 20 MB). Images come through an upload link withpurpose='testpert_kb'.bugasura_testpert_list_kb- List documents currently in the knowledge basebugasura_testpert_delete_kb- Remove a document from the knowledge basebugasura_testpert_generate_sprint_context- Start requirement analysis (KB → SPRINT_CONTEXT)bugasura_testpert_get_kb_validation- See which uploaded documents the engine couldn't confidently classify, and whybugasura_testpert_resolve_kb_validation- Submit a role for each flagged document and resume sprint-context generationbugasura_testpert_get_sprint_context- Read the engine's guessed platform, user roles, and affected modules for reviewbugasura_testpert_confirm_sprint_context- Confirm the sprint context and advance to the deepen-requirement questionsbugasura_testpert_answer_context_questions- Submit answers to the AI's deepen-requirement questionsbugasura_testpert_get_requirement_contexts- Fetch deepen questions, missing requirements, and risks for user reviewbugasura_testpert_update_requirement_contexts- Write approve/reject/edit decisions back for missing requirements and risks (auto-advances to RISKS_IN_REQUIREMENTS by default)bugasura_testpert_add_context_question- Add a deepen-requirement question to the sprint (the 'Add Question' button)bugasura_testpert_delete_context_question- Remove a deepen-requirement question from the sprintbugasura_testpert_get_testplan- Fetch the generated test plan (focus areas + feature/sub-feature tree)bugasura_testpert_update_testplan- Edit focus-area levels and the feature treebugasura_testpert_get_features- List the live feature/sub-feature treebugasura_testpert_add_feature- Add a feature or sub-featurebugasura_testpert_delete_feature- Delete a feature or sub-featurebugasura_testpert_enrich_requirements- Run the requirements-enrichment phase explicitly (optional —generate_coverageruns it automatically)bugasura_testpert_generate_coverage- Move the sprint to test coverage (runs enrichment first if needed)bugasura_testpert_get_coverage- Fetch the coverage mind mapbugasura_testpert_generate_testcases- Generate test cases (polls to completion; re-callable)bugasura_testpert_regenerate_testcases- Regenerate/retry one sub-feature's test cases afterTEST_CASES(needs the user's answers to the 3-section context modal; max 5 attempts per sub-feature)
Skip-enrich flow — use existing project requirements instead of documents
bugasura_testpert_link_requirements- Link existing project requirements to the sprint as its sourcebugasura_testpert_start_skip_testplan- Build the test plan directly from the sprint's linked requirements
Low-level status driver (advanced)
bugasura_testpert_advance- Set a specific status and/or poll until a target status — use this when you need direct control over the pipeline
Flow overview:
Normal: create → upload_kb → generate_sprint_context → [get_kb_validation → resolve_kb_validation]*
→ get_sprint_context → confirm_sprint_context → answer_context_questions
→ (missing reqs) → (risks) → get_testplan → enrich → generate_coverage → generate_testcases
* only if generate_sprint_context lands on SPRINT_CONTEXT_USER_VALIDATION instead of SPRINT_CONTEXT
Skip: create (skip_enrich=true) → link_requirements → start_skip_testplan
→ get_testplan → generate_coverage → generate_testcasesNotes:
The project must have TestPert enabled (
is_testpert_enabled). Usebugasura_create_sprintfor standard sprints.Polling tools (
generate_sprint_context,resolve_kb_validation,confirm_sprint_context,start_skip_testplan,enrich_requirements,generate_coverage,generate_testcases) are time-bounded per call and re-callable — if the AI phase is still running, call the same tool again to keep checking.generate_coveragedrives both the enrichment and test-plan phases itself (RISKS_IN_REQUIREMENTS → ENRICH_REQUIREMENTS → TEST_PLANING → TEST_COVERAGE), one phase per call —enrich_requirementsis only needed if you want that phase visible as its own step.A team-admin API key is required for status transitions and test-plan updates.
Available Resources
MCP resources provide read-only access to your Bugasura data. AI assistants can access these directly:
Resource | Description |
| All teams you belong to |
| Projects in a team |
| Sprints in a project |
| Issues in a project |
| Test cases in a project |
| Requirements in a project |
Advanced Usage
Pagination
List operations return 10 results by default:
Show me the first 20 issues (using max_results=20)Show me issues 11-20 (using start_at=10, max_results=10)Show me the first 50 comments on issue 123 (using max_results=50)Show me comments 21-40 on issue 456 (using start_at=20, max_results=20)Partial Updates
Update only the fields you want to change - all other fields are automatically preserved:
Update issue 123 to change severity to HIGH
(other fields like status, description, assignees remain unchanged)Update requirement 2036 to change title only
(severity, priority, assignees, and all other fields are preserved)How It Works: All update operations (issues, requirements, test cases, sprints) fetch the existing record first, then merge your changes with existing data before sending to the API. This ensures no fields are accidentally cleared or reset.
Custom Fields
Create issue with custom fields: {"Environment": "Production", "Build": "1.2.3"}Filtering
List issues for sprint 5 onlySearch projects containing "mobile" in the nameList only user comments on issue 123 (exclude system-generated comments)List comments by a specific user on issue 456 (using creator_id filter)Transport Modes
Bugasura MCP supports two transport modes:
STDIO (default) — local MCP clients (subprocess over stdin/stdout)
python server.py --transport stdioStreamable HTTP (recommended for remote deployment) — mounted at /mcp
python server.py --transport streamable-http --port 8000The hosted version at https://mcp.bugasura.io/mcp uses streamable HTTP. Built on FastMCP 4, the server speaks both MCP protocol eras on the same endpoint: the stateless 2026-07-28 protocol and the older 2025-11-25 initialize handshake. Each connection negotiates its own, so older and newer clients both work without any setting. This transport requires the OAuth sign-in to be configured (next section); the server refuses to start without it. STDIO needs nothing beyond BUGASURA_API_KEY.
Deploying the OAuth sign-in
For whoever operates the server. Users never see any of this.
The MCP server is an OAuth 2.0 front door built on FastMCP's OAuthProxy (core/oauth.py). MCP clients identify themselves either through Dynamic Client Registration or with a Client ID Metadata Document (CIMD, a URL they use as their client_id), and run PKCE against it. Both are accepted; the server itself is one pre-registered, confidential client of Bugasura and exchanges the code with the Bugasura API server-to-server. Bugasura's token never reaches the MCP client — the server issues its own short-lived token and swaps it on every request, validating the Bugasura token with POST /v1/oauth/introspect (cached for 60 s).
1. Get client credentials from Bugasura
The server signs in to Bugasura as the confidential OAuth client bugasura-mcp. Its client secret, and the callback <MCP_PUBLIC_BASE_URL>/auth/callback, are registered on Bugasura's side, so a self-hosted instance needs them issued by the Bugasura team (support@bugasura.io).
Bugasura's tokens are tied to the user's API key: regenerating the key in Bugasura signs out every MCP session that user has.
2. Configure the MCP server
Add to the instance's dotenv file (.env, or the tenant file named by MCP_ENV_FILE):
Variable | Required | Meaning |
| yes | Public https origin, no trailing slash, e.g. |
| yes |
|
| yes | The plaintext whose hash is in the API config |
| recommended | Signs the tokens issued to MCP clients and encrypts stored state. Without it both derive from the client secret, so rotating the secret signs everyone out. |
| recommended | Directory for persistent OAuth state ( |
| no | Directory where files uploaded through upload links wait for the KB tool, at most an hour (default |
| no |
|
| no | Public product site linked from the server metadata and from the page a browser gets on |
| no | PNG logo on the server's consent interstitial and in the icons offered to MCP clients (default |
| no | SVG logo offered to MCP clients alongside the PNG (default |
| no | ChatGPT app domain-verification token, served as plain text at |
| no | Comma-separated extra redirect patterns for MCP clients beyond the built-in list (loopback, claude.ai, VS Code / Cline / Roo Code, Cursor, Windsurf, Antigravity, ChatGPT / Codex). Scheme, host and port are matched separately: the host is exact or |
| no | Seconds a positive token check is cached (default 60). Also bounds how long a revoked session keeps working. |
| no | Override the derived upstream endpoints ( |
Start with --forwarded-allow-ips set to the reverse proxy's address. The server validates Host and Origin as the MCP spec requires against DNS rebinding (core/app.py). Allowed are the host and origin of MCP_PUBLIC_BASE_URL, plus loopback, so a reverse proxy works whether or not it preserves Host. A request with a foreign Origin gets 403 and one with an unknown Host gets 421. Requests without an Origin header (CLI and desktop clients, claude.ai's connector) are unaffected; a browser page on another origin, such as the MCP Inspector's web UI against a deployed server, is rejected.
CIMD clients make the server fetch their metadata document over https, with private and loopback addresses blocked. A tenant whose host can only reach the internet through an egress proxy sets FASTMCP_SSRF_TRUST_PROXY=true and HTTPS_PROXY.
Local testing. Claude Code, Cursor and the Inspector can talk to http://localhost:8000: set MCP_PUBLIC_BASE_URL=http://localhost:8000 and start with --allow-insecure-http. Claude Desktop and claude.ai are different: their connector runs from Anthropic's servers, so the MCP server must be reachable on the public internet over https. Put a tunnel in front of the local port and use its URL as the public base:
ngrok http 8000 # note the https://xxxx.ngrok-free.app URL
MCP_PUBLIC_BASE_URL=https://xxxx.ngrok-free.app \
BUGASURA_OAUTH_CLIENT_ID=bugasura-mcp BUGASURA_OAUTH_CLIENT_SECRET=... \
python server.py --transport streamable-http --port 8000 --forwarded-allow-ips '*'Then add https://xxxx.ngrok-free.app/mcp as a custom connector. The tunnel's callback (https://xxxx.ngrok-free.app/auth/callback) must be one the Bugasura API accepts for your client id. Free ngrok shows a "Visit Site" interstitial the first time the browser lands on the tunnel; click through it.
About consent pages
By default users see one screen on first connect: Bugasura's own login + consent page. FastMCP's proxy also has its own interstitial that names the MCP client and its callback address; it is off (OAUTH_REQUIRE_CONSENT=false) so the flow looks like Bugasura end to end.
What keeps that safe: MCP clients register themselves (DCR) or bring their own metadata document (CIMD), so the server enforces a redirect-URI allow-list at registration, when the metadata document is loaded, and again at /authorize (DEFAULT_ALLOWED_REDIRECT_URIS in config/config.py). Only loopback addresses and the callbacks of the clients documented above (Claude Desktop / claude.ai, VS Code including Cline and Roo Code, Claude Code, Cursor, Windsurf, Google Antigravity, ChatGPT connectors including Codex) are accepted, plus anything in OAUTH_ALLOWED_REDIRECT_URIS; a client registering any other callback gets invalid_redirect_uri (DCR rejections are logged as Rejected client registration; a CIMD client whose callback is not allowed is rejected without a log line, so when a new client cannot sign in, check its callback against the list first). Without that check, a rogue client could register its own callback and receive a user's session. Set OAUTH_REQUIRE_CONSENT=true to bring the interstitial back as a second layer.
3. Reverse proxy
Forward the whole origin, not just /mcp. FastMCP mounts these at the root: /.well-known/oauth-authorization-server, /.well-known/oauth-protected-resource/mcp, /authorize, /token, /register, /revoke, /auth/callback, /consent, plus /mcp, /health, /sse and /upload/<upload_id>. Only /mcp requires a token; an upload link's unguessable, single-use id is its own credential.
Upload links accept up to 100 MB per request. A user can hold 20 open links and 500 MB of uploaded files waiting for a tool, and the staging directory as a whole 5 GB (the UPLOAD_MAX_* constants in config/config.py). Keep the reverse proxy's request-body limit at or above 101 MB (Apache LimitRequestBody, nginx client_max_body_size), and its proxy timeout long enough for a 100 MB upload from a slow connection (for example 300 seconds).
4. Check it
curl -s https://mcp.bugasura.io/.well-known/oauth-authorization-server | jq '{issuer, client_id_metadata_document_supported, authorization_response_iss_parameter_supported}'
curl -si -X POST https://mcp.bugasura.io/mcp -H 'content-type: application/json' -d '{}' | grep -i www-authenticate # 401 + resource_metadata
curl -s https://mcp.bugasura.io/health # "auth": "oauth"Then add the URL in Claude Code (claude mcp add --transport http …, /mcp → Authenticate) and confirm the browser lands on the Bugasura consent page and back.
Local Development — Sample Client Configs
Use these when you're hacking on the server itself and want your AI client to launch your local checkout as a stdio subprocess instead of hitting the hosted /mcp endpoint.
Replace
/path/to/bugasura-mcp-server/with the absolute path of your own clone, andyour_api_key_herewith your Bugasura API key (User Settings → API Key). STDIO is the one transport that still uses the key, because a subprocess cannot hand off to a browser. Never commit a real key.
VS Code (workspace .vscode/settings.json)
{
"settings": {
"mcp": {
"inputs": [],
"servers": {
"bugasura-local-mcp": {
"type": "stdio",
"command": "/path/to/bugasura-mcp-server/.venv/bin/python3",
"args": [
"/path/to/bugasura-mcp-server/server.py"
],
"env": {
"BUGASURA_API_KEY": "your_api_key_here"
}
}
}
}
}
}Claude Desktop (claude_desktop_config.json)
macOS path: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows path: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"bugasura": {
"command": "/path/to/bugasura-mcp-server/.venv/bin/python",
"args": [
"/path/to/bugasura-mcp-server/server.py"
],
"env": {
"BUGASURA_API_KEY": "your_api_key_here"
}
}
}
}After editing the config, restart the client (VS Code window reload / Claude Desktop quit-and-relaunch) so it picks up the new server. The server logs to stderr — tail your client's MCP server logs to confirm Bugasura MCP Server | API: ... | Transport: stdio appears on startup.
Testing & Debugging with MCP Inspector
The MCP Inspector provides a web-based interface to test and debug your MCP server.
Quick Start
Install MCP Inspector (if not already installed):
npm install -g @modelcontextprotocol/inspectorRun the Inspector (STDIO, uses
BUGASURA_API_KEYfrom.env):cd /path/to/bugasura-mcp-server source .venv/bin/activate npx @modelcontextprotocol/inspector python server.pyOpen your browser - The inspector will automatically open at
http://localhost:5173
To exercise the OAuth sign-in instead, start the server in HTTP mode with MCP_PUBLIC_BASE_URL=http://localhost:8000 and the client id/secret set, plus --allow-insecure-http; then in the Inspector choose Streamable HTTP, URL http://localhost:8000/mcp, Authentication → OAuth 2.0 → Quick OAuth Flow. You will pass through the server's consent page, then Bugasura's login and consent, and come back with tools listed.
What You Can Do
✅ View all tools with their parameters and documentation
✅ Test tools interactively - Call any tool and see real responses
✅ Debug workflows - Test create → update → delete flows
✅ Validate parameters - Ensure correct formats and types
✅ Test name-based operations - Try deleting by issue key (ISS09), test case key (TES5), or names
✅ Test team resolution - Use team names instead of IDs for team member management
Example Tests
Test Issue Deletion by Key:
Tool: bugasura_delete_issue
Parameters: {
"issue_identifier": "ISS09"
}Note: STDIO mode reads
BUGASURA_API_KEYfrom the environment; tools have noapi_keyparameter.
Test Interactive Sprint Selection:
Tool: bugasura_create_issue
Parameters: {
"summary": "Test issue"
}
// Returns selection prompt for team → project → sprintTest Team Member Management with Team Name:
Tool: bugasura_add_team_members
Parameters: {
"team_name": "Engineering",
"email_list": "john@example.com, jane@example.com"
}
// Resolves team name and sends invitationsTest User Removal with Smart Resolution:
Tool: bugasura_delete_team_user
Parameters: {
"team_id": 123,
"user_identifier": "john@example.com"
}
// Resolves user by email and removes from teamFor detailed instructions, see MCP_INSPECTOR_GUIDE.md
Important Notes
Authentication
Hosted server (HTTP) — OAuth 2.0 sign-in. The MCP client discovers the sign-in from the server, opens Bugasura's login + consent page in your browser once, and keeps a token that refreshes silently (access tokens last 1 hour, refresh tokens 30 days). Nothing is stored in your client config, and the assistant never sees a credential. To sign a client out, disconnect it in the client.
Local STDIO — the server runs as a subprocess of your client and cannot hand off to a browser, so it reads BUGASURA_API_KEY from the env block (Bugasura → User Settings → API Key). If it is missing, tools return status: 'api_key_required' with instructions; the assistant will not ask you to paste a key in chat.
Interactive Mode
If you don't provide team_id or project_id, the system automatically enters interactive mode and guides you through selection. This works for:
All sprint operations
All issue operations
All test case operations
Smart Assignees
When assigning work, you can use:
Names:
"John Doe"(partial match, case-insensitive)Emails:
"john@example.com"(exact match, case-insensitive)User IDs:
"123"(direct match)Mixed:
"John, jane@example.com, 789"(comma-separated)
The system automatically resolves names/emails to user IDs.
Smart Team Resolution
Team member management tools support flexible team identification:
Team IDs:
team_id=123(direct numeric ID)Team Names:
team_name="Acme Corp"(partial match, case-insensitive)
You can use either parameter for:
bugasura_add_team_members- Invite users to a teambugasura_update_team_member- Change member rolesbugasura_delete_team_user- Remove team members
Examples:
add_team_members(team_name="Engineering", email_list="john@example.com")
update_team_member(team_id=123, user_id=456, is_admin=1)
delete_team_user(team_name="Sales", user_identifier="john@example.com")Note:
api_keycan be omitted whenBUGASURA_API_KEYis configured in the environment.
Data Requirements
Sprints:
Sprint names must be 5-250 characters
Issues must be assigned to a sprint
Updates require the issue to have a sprint assigned
Requirements:
Requirements must be organized in folders
Folder ID is required for all requirement operations
Requirements can have parent-child hierarchy (max 2 levels: parent cannot have another parent)
Example Conversations
Getting Started
"What teams and projects do I have access to?"
→ Returns all your teams and projects
"Find my authentication project"
→ Searches across all teams and returns matchesTest Management
"Create a test case for password reset with severity HIGH and priority P1"
→ Guides you through team/project selection, then creates test case
"List all test cases in my mobile app project"
→ Returns paginated test case list
"Update test case 456 to mark it as PASS and assign to john@example.com"
→ Updates test case and resolves email to user IDBug Tracking
"Show me all critical bugs in sprint 5"
→ Lists critical severity issues filtered by sprint
"Create a bug: Login button crashes on iOS 17"
→ Guides through team/project/sprint selection, creates issue
"Assign issue 789 to Jane and mark it as In Progress"
→ Updates assignee and statusIssue Comments
"List all comments on issue 123"
→ Returns all comments with user details and timestamps
"Show me the next 10 comments starting from comment 11"
→ Uses pagination (start_at=10, max_results=10)
"List only user comments, exclude system-generated ones"
→ Uses get_user_comments_only=True to filter out system comments
"Add a comment 'Fixed in version 2.1.0' to issue 456"
→ Guides through team/project/issue selection, creates public comment
"Add a private comment about internal notes to issue 789"
→ Creates comment with is_public_comment=0
"Update comment 321 to fix a typo"
→ Guides through interactive selection if comment details not provided
"Delete comment 456"
→ Shows deletion warning, removes comment permanentlySprint Planning
"Create a 2-week sprint called 'Sprint 16' starting next Monday"
→ Guides through project selection, creates sprint with dates
"Show me sprint statistics for sprint 5"
→ Returns issue counts, completion rates, etc.
"Mark sprint 12 as COMPLETED"
→ Updates sprint statusRequirements Management
"Create a requirement titled 'User Authentication' with details 'Implement OAuth 2.0' and priority P1"
→ Guides through team/project selection, prompts for folder selection, creates requirement
"List all requirements in my mobile app project"
→ Returns all requirements with their hierarchy and test case counts
"Link test cases 123 and 456 to requirement 2036"
→ Creates traceability between requirements and test cases
"Update requirement 2036 to change severity to HIGH and assign to john@example.com"
→ Updates requirement fields while preserving all other dataTestpert Sprint Generation
"Create a TestPert sprint called 'Checkout Flow Sprint'"
→ Confirms options (testing type, depth, skip enrich), then creates the sprint
"Upload /docs/checkout-spec.pdf and /docs/api-contract.md to the knowledge base"
→ Uploads both files, moves sprint to KNOWLEDGE_BASE stage
"Start the analysis"
→ Kicks off requirement analysis, then automatically shows the AI's contextual questions
"Answer: Q1: Users must be able to pay by card or wallet. Q2: Guest checkout is required."
→ Saves answers and advances to the missing requirements stage
"Approve all missing requirements and proceed"
→ Approves rows, advances through risks to the test plan
"Set Authentication focus to EXHAUSTIVE and Performance to MINIMAL"
→ Edits focus-area levels in the test plan
"Generate the test cases"
→ Runs enrichment + coverage + test case generation; returns sprint link when done"Create a TestPert sprint with skip enrich, link requirements 101 and 102, then build the test plan"
→ Creates sprint (skip_enrich=true), links requirements, starts test plan generationTeam Member Management
"Add john@example.com and jane@example.com to the Engineering team"
→ Resolves team by name, sends email invitations to new members
"List all members of team Acme Corp"
→ Returns team members with names, emails, user IDs, and roles
"Promote user 456 to admin in the Marketing team"
→ Updates team member role from member to admin
"Remove john@example.com from the Sales team"
→ Resolves user by email, removes from team and unassigns all their issues
"Make Sarah an admin in team 123"
→ Resolves user by name, promotes to admin rolePrivacy Policy
The server passes your requests to the Bugasura API under your own account. It keeps your session's OAuth tokens encrypted, caches your team/project list in memory for a few minutes, and writes operational logs; it has no database of its own. Data collection, usage, storage, sharing and retention are covered by the Bugasura Privacy Policy and Terms of Service. Questions: support@bugasura.io.
Support
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Create and manage test cases, test runs and results in Testiny from your AI assistant.
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Connect AI assistants to Stellary projects, boards, documents, and governed agent workflows.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with TestRail test management systems through comprehensive API integration. Supports retrieving and updating test cases, projects, suites, runs, and results, plus adding attachments and managing test data through natural language commands.1814 npmMIT
- AlicenseBqualityAmaintenanceIntegrates with Zebrunner Test Case Management to help QA teams manage test cases, test suites, and test execution data through AI assistants. Features intelligent validation, automated test code generation, and comprehensive reporting capabilities.4930 npm5AGPL 3.0
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Testomat.io test management platform, allowing users to search and retrieve tests, test suites, test runs, and test plans using natural language queries with advanced filtering capabilities.566 npm-
- AlicenseAqualityAmaintenanceConnects AI coding assistants to TestCollab for managing test cases, plans, and suites directly through natural language. It enables users to create, update, and query testing resources within integrated development environments and AI chat clients.2011 npm4MIT