Debugg AI MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUGGAI_API_KEY | Yes | Your Debugg AI API key, required for authentication. | |
| DEBUGGAI_API_URL | No | Override API endpoint (defaults to https://api.debugg.ai). | https://api.debugg.ai |
| DEBUGGAI_LOCAL_PORT | No | Your app's local port (e.g., 3000). | |
| DEBUGGAI_LOCAL_REPO_NAME | No | GitHub repo name (e.g., your-org/repo). | |
| DEBUGGAI_LOCAL_REPO_PATH | No | Absolute path to the project root. | |
| DEBUGGAI_LOCAL_BRANCH_NAME | No | The name of the current branch (e.g., main). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| resources | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_app_in_browserA | Give an AI agent eyes on a live website or app. The agent browses it, interacts with it, and tells you whether a given task or check passed. Works on localhost or any URL. Use for visual QA, flow validation, regression checks, or anything that needs a real browser to verify. LOCALHOST SUPPORT: Pass any localhost URL (e.g. http://localhost:3000) and it Just Works. A secure tunnel is automatically created so the remote browser can reach your local dev server — no manual tunnel setup, no port forwarding, no config. SCOPE PER CALL: Keep each call to ONE focused check — a single page or a short interaction on a single screen (login, submit a form, verify a heading). For anything spanning multiple pages or long multi-step flows, split into SEPARATE calls — the remote browser agent has a ~25-step internal budget per call, and long single calls risk client-side timeouts. Example: instead of "log in, then go to settings, then update profile, then verify," make three calls: (1) log in & verify dashboard, (2) update settings, (3) verify profile change. CREDENTIALS: pass them as PARAMETERS, not only in the description. Naming an account in |
| probe_pageA | Probe one or more URLs and return their rendered state — screenshot, page metadata (title/finalUrl/statusCode/loadTimeMs), structured console errors, and per-URL network summary (refetch loops collapse into one row by origin+pathname). WHEN TO USE: "did I just break /settings?" / "smoke-test these 5 routes after my refactor" / "what's actually rendering at /dashboard?" — fast (<10s for 1 URL, <25s for 20), no LLM cost, no agent loop. NOT FOR: scenario verification (sign in → click X → assert Y), interaction (clicks, form fills, scrolls), or anything requiring agent decisions. Use check_app_in_browser for those. LOCALHOST SUPPORT: any localhost URL is auto-tunneled. Pre-flight TCP probe fails fast (<2s) if the dev server isn't listening. BATCH MODE: pass up to 20 targets in one call to share browser session + tunnel — dramatically faster than firing parallel single-URL probes (one execution unit, not N). Per-URL waitForSelector / waitForLoadState / timeoutMs override defaults. READINESS: navigation settles on CONTENT (the page's DOM going quiet), bounded — not on network silence, which never arrives on a live app, and not on 'load', which blocks on third-party embeds. The default is right for SPAs; reach for waitForSelector, not waitForLoadState, when you need to wait for something specific. A single failed target's error appears in result.error without failing the whole batch — the other results stay valid. |
| trigger_crawlA | Trigger a browser-agent crawl of a web app to build the project's knowledge graph. The crawl systematically explores pages, UI states, and navigation flows, then populates the backend's knowledge graph so future evaluations and tests have context about the app. LOCALHOST SUPPORT: Pass any localhost URL (e.g. http://localhost:3000) and it Just Works. A secure tunnel is automatically created so the remote browser can reach your local dev server. WHEN TO USE: after a significant new feature, a new environment, or when onboarding a project. NOT for per-change verification — use check_app_in_browser for that. SCOPE: one crawl per call against one URL. The crawl is long-running (minutes to tens of minutes depending on app size) and populates backend state asynchronously; the tool returns the execution status once the workflow completes. This does NOT return pass/fail — it returns executionId + status + outcome. |
| projectA | Manage DebuggAI projects. Pass an "action":
Note: there is no update/delete here — rename/delete a project from the DebuggAI web app. |
| environmentA | Manage environments (and their login credentials) under a project. Pass an "action":
CROSS-DOMAIN SSO: a run only types this environment's credentials on the app's own host (and its subdomains); a login on any other host is refused as offscope_host. If your identity provider lives on a different domain than the app, add the IdP host to authorizedCredentialHosts — bare hostnames like "auth.example.com", no scheme/path/port/wildcard. The response echoes the saved list; if it reports authorizedCredentialHostsWarning, the server did not persist it. SESSIONS: runs reuse a warm authenticated session per account instead of logging in every time. That is why a check can report "no login form" — it was already signed in. Use "sessions" to see whose session is held, "clearSessions" to drop it, or pass freshSession:true on a single check_app_in_browser call to bypass reuse without clearing anything. |
| test_suiteA | Manage test suites. Identify a suite by suiteUuid, or suiteName + a project identifier (projectUuid|projectName). Pass an "action":
|
| test_caseA | Manage individual test cases within a suite. Pass an "action":
|
| executionsA | Look up workflow executions (history of check_app_in_browser, trigger_crawl, and test-suite runs). Pass an "action":
Tip: after a fresh check_app_in_browser run, poll action:"get" with the returned executionId until artifact URLs are available. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| projects | All projects visible to this API key (first page). |
| environments | Environments for the auto-detected project (credentials redacted). |
| executions | Recent workflow executions (first page). |
TDQS
Scored across 8 tools
The three browser-related tools (check_app_in_browser, probe_page, trigger_crawl) have clearly drawn boundaries, with probe_page explicitly documenting what it is NOT for. Minor overlap remains between test_suite's "results" action and executions lookups, and between test_suite/test_case, but action schemas make the targets distinguishable.
Two conventions coexist: verb-first snake_case tools (check_app_in_browser, probe_page, trigger_crawl) and bare singular nouns multiplexed by an "action" parameter (test_suite, environment, project, test_case). "executions" is plural where the other noun tools are singular, adding another small inconsistency, though all names are readable and snake_case throughout.
Eight tools for a QA/test-automation platform is well scoped, with CRUD-ish domains sensibly collapsed into action-multiplexed tools rather than exploded one-per-operation. Each tool maps to a distinct capability area (test management, environments, live checks, probing, crawling, history, projects).
There is no tool to actually run or trigger a test suite — executions references "test-suite runs" in history, but the surface can only create/update/delete cases and suites, leaving a dead end for the main workflow. project also lacks update/delete (documented as web-app-only) and test_suite lacks update, though environments and executions are well covered.