Bugasura
io.bugasuraPublished by bugasura.ioOfficial publisherv3.5.1Updated Nov 5, 2026
Bug tracking and test management: issues, test cases, sprints, runs, requirements and KB.
Overview
Bugasura's hosted MCP server lets an assistant manage bug tracking and test management: issues, test cases, requirements, sprints, test runs and knowledge base.
- What you can do
- Find teams and projects, and create, rename or delete them, plus manage team members and roles
- Create, update, search and delete issues and test cases, with comments and file attachments
- Manage requirements with folders, and upload, list, star or delete knowledge base documents
- Plan sprints and set up one-time or scheduled test runs with environments, builds and test cases
- Manage test data environments, variables, files and app builds, and run AI test-case generation in TestPert sprints
- When to use it
- Useful for QA and product teams that keep their bugs, test cases and requirements in Bugasura and want an assistant to draft, look up, update or clean up that data from a chat client instead of the web UI.
- Requirements
- A Bugasura account and a remote MCP client that supports OAuth; the server is added by URL and the browser sign-in is approved once, with tokens refreshing for 30 days. No headers or API keys are needed for the hosted endpoint.
Installation
In SourceWeft
- Open Bugasura in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.bugasura%2Fbugasura/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"bugasura": {
"type": "http",
"url": "https://mcp.bugasura.io/mcp"
}
}
}README
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.5
⚠️ Breaking changes in 3.3
⚠️ Breaking changes in 3.0
Authentication moved to OAuth 2.0 sign-in. If you're upgrading from 2.x:
⚠️ Breaking changes in 2.0
If you're upgrading from 1.x, update your client configuration:
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.
Claude Desktop
Open Claude Desktop → Settings → Connectors → Add Custom Connector
- Name:
Bugasura - URL:
https://mcp.bugasura.io/mcp
Click Connect, sign in to Bugasura, and click Allow on the consent page.
VS Code
Install in VS Code, or add to your VS Code MCP config:
VS Code detects the OAuth sign-in and opens the browser the first time a tool is used.
Claude Code
Then run /mcp inside Claude Code, choose Bugasura → Authenticate, and complete the sign-in in the browser.
ChatGPT
Settings → Apps & Connectors → Advanced → turn on Developer mode, then Create:
- Name:
Bugasura - MCP Server URL:
https://mcp.bugasura.io/mcp - Authentication: OAuth
Click Create, sign in to Bugasura, and click Allow.
Codex
Cursor
Add to Cursor, or add to ~/.cursor/mcp.json:
Cursor shows a Needs login badge next to the server; click it to sign in.
Windsurf
Add to your Windsurf MCP config:
Windsurf opens the sign-in page on first use.
Cline
- Open Cline
- Click ☰ → MCP Servers → Remote Servers tab
- Click Edit Configuration
- Add:
Roo Code
3. Start Using It
Once installed, just talk naturally to your AI assistant:
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:
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:
Works for both issues and test cases.
Discovery Tools
Find resources without memorizing IDs:
What You Can Do
📋 Test Cases
💬 Test Case Comments
📝 Requirements
🐛 Issues & Bugs
💬 Issue Comments
🏃 Sprints
🏁 Test Runs
Note: 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
Note: 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):
Skip-enrich flow (driven from existing requirements):
📋 Projects
👥 Team Management
Available Tools
Context & Discovery
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!
Team Member Management
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., "[email protected]")
- Names or partial names (e.g., "John", "John Doe")
Note: Only team admins can manage team members. Team owner cannot be removed.
Sprint Management
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.
Issue Management
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.
Issue Comments
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.
Test Case Management
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.
Test Run Management
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:
Names are resolved via bugasura_list_sprints (report ↔ sprint), bugasura_list_test_run_environments (environment / app build), and /v1/testrunsExecution/getList (run / scheduler).
Test Data Management
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 scope - Deletes 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:
Test Case Comments
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.
Requirements Management
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.
Knowledge Base
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 [email protected] <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 Sprint Generation
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_from_requirements- 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:
Notes:
- 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_from_requirements,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:
Advanced Usage
Pagination
List operations return 10 results by default:
Partial Updates
Update only the fields you want to change - all other fields are automatically 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
Filtering
Transport Modes
Bugasura MCP supports two transport modes:
STDIO (default) — local MCP clients (subprocess over stdin/stdout)
Streamable HTTP (recommended for remote deployment) — mounted at /mcp
The 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 ([email protected]).
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):
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:
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
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)
Claude Desktop (claude_desktop_config.json)
macOS path: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows path: %APPDATA%\Claude\claude_desktop_config.json
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):
-
Run the Inspector (STDIO, uses
BUGASURA_API_KEYfrom.env): -
Open 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:
Note: STDIO mode reads
BUGASURA_API_KEYfrom the environment; tools have noapi_keyparameter.
Test Interactive Sprint Selection:
Test Team Member Management with Team Name:
Test User Removal with Smart Resolution:
For 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:
"[email protected]"(exact match, case-insensitive) - User IDs:
"123"(direct match) - Mixed:
"John, [email protected], 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:
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
Test Management
Bug Tracking
Issue Comments
Sprint Planning
Requirements Management
Testpert Sprint Generation
Team Member Management
Privacy 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: [email protected].
Support
License
MIT
Source: README.md at commit 472e4b6
Tools
0Version history
6- v3.5.1LatestNov 5, 2026
- v3.5.0Nov 5, 2026
- v3.4.1Nov 3, 2026
- v3.4.0Nov 3, 2026
- v3.3.3Oct 30, 2026
- v3.3.2Oct 26, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts