@testneo/mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TESTNEO_API_KEY | Yes | API key for authentication | |
| TESTNEO_BASE_URL | Yes | The base URL of the TestNeo API (e.g., http://localhost:8001) | |
| TESTNEO_ROUTE_PROFILE | No | Optional preset phrase map: 'none' or 'saucedemo' (default: none) | none |
| TESTNEO_MCP_TIMEOUT_MS | No | Timeout in milliseconds (default: 20000) | 20000 |
| TESTNEO_MCP_USER_AGENT | No | User agent string (default: @testneo/mcp-server) | @testneo/mcp-server |
| TESTNEO_ROUTE_MAP_JSON | No | JSON object of phrase → path mappings (optional) | |
| TESTNEO_MCP_ALLOW_WRITE | No | Allow write operations (default: false). Set 'true' to enable | false |
| TESTNEO_MCP_POLICY_MODE | No | Precondition policy behavior: 'strict' or 'warn' (default: strict) | strict |
| TESTNEO_ROUTE_HARDENING | No | Enable phrase→path rewrites (default: true) | true |
| TESTNEO_MCP_TELEMETRY_JSONL | No | Emit one JSON line per tool invocation to stderr (default: false) | false |
| TESTNEO_MCP_SWAGGER_TIMEOUT_MS | No | Swagger multipart timeout in milliseconds (default: 120000) | 120000 |
| TESTNEO_MCP_RELAX_PROJECT_PRECONDITIONS | No | Skip executable-base URL checks on generate/execute tools (default: false) | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| testneo_validate_connectionA | Validate token and fetch basic account context. |
| testneo_validate_prC | Run TestNeo PR validation planning from diff or git refs. Returns shared workflow context, impacted tests, planned verification stages, and Claude-ready findings using the new orchestration contracts. |
| testneo_get_local_agent_statusA | Returns whether a TestNeo self-hosted agent is registered and recently heartbeating (local runner). Includes setup_url on the same origin as TESTNEO_BASE_URL (for example …/web/agent). Read-only. |
| testneo_list_tests_by_tagsA | List web test case ids for a project matching one or more tags. Tags may include a leading @; each tag is queried separately (union with tag_match=any, intersection with all). Backend: GET /api/web/v1/test-cases/?tag_filter= (one tag per request). |
| testneo_find_test_casesA | List web test cases in a project using the backend text search (?search= on GET /api/web/v1/test-cases/). Matches name/description per API rules. Read-only — use returned id + name with testneo_run_generated_test_pipeline (test_case_id) or pass project_id + name_query to run by name. |
| testneo_run_batch_by_tagsB | Create and execute a multi-test run for tests matching tags (write: requires TESTNEO_MCP_ALLOW_WRITE + confirm=true). Resolves tags like testneo_list_tests_by_tags, then POST /api/web/v1/multi-test-runs/create and POST …/execute. When TESTNEO_MCP_DEFAULT_EXECUTION_MODE=local and TESTNEO_MCP_PREFER_LOCAL_AGENT=true, sets use_agent for the local TestNeo agent. While use_agent: polls GET /agents/my-agent until connected or until TESTNEO_MCP_WAIT_FOR_AGENT_MS / wait_for_agent_seconds elapses (avoids failing if you start the agent seconds after invoking the tool). Optional TESTNEO_MCP_OPEN_AGENT_SETUP_ON_AGENT_FAILURE opens setup_url on hard agent failure. |
| testneo_suggest_api_test_chainsA | Scan Swagger/NLP-derived API-style web tests for a project and return suggested business-flow chains (ordering, phases, suite summaries). Read-only: GET /api/web/v1/projects/{id}/api-test-chains/suggest. Use before recommending which suite to run or before testneo_save_api_test_chain / testneo_run_api_test_chain. |
| testneo_list_saved_api_test_chainsA | List user-saved API test chain suites for a web project (ordered test_case_ids). Read-only: GET /api/web/v1/projects/{id}/api-test-chains. |
| testneo_save_api_test_chainB | Persist a named API test chain (ordered NLP/API web tests) for a project. Guarded: TESTNEO_MCP_ALLOW_WRITE + confirm=true. Backend: POST /api/web/v1/projects/{id}/api-test-chains. |
| testneo_delete_saved_api_test_chainA | Delete a saved API test chain by id. Guarded: TESTNEO_MCP_ALLOW_WRITE + confirm=true. Backend: DELETE /api/web/v1/projects/{id}/api-test-chains/{chain_id}. |
| testneo_run_api_test_chainA | Create and execute a multi-test run using an ordered API chain: either explicit test_case_ids (preserves order) or saved_chain_id from testneo_list_saved_api_test_chains. Same execution routing as testneo_run_batch_by_tags (local agent wait, use_agent, etc.). Guarded: TESTNEO_MCP_ALLOW_WRITE + confirm=true. |
| testneo_get_project_route_mapC | Get project-level MCP route-hardening map/profile from project_settings.mcp_route_hardening. |
| testneo_set_project_route_mapB | Persist project-level route-hardening map/profile in project_settings.mcp_route_hardening (guarded write action). |
| testneo_apply_route_hardeningA | Rewrite vague Navigate-to NLP lines into {{base_url}}/path using server env (TESTNEO_ROUTE_PROFILE, TESTNEO_ROUTE_MAP_JSON) plus optional per-call overrides. Read-only; does not call the TestNeo API. |
| testneo_swagger_previewA | Parse Swagger/OpenAPI (JSON or YAML) from base64 and return spec format, tags, and endpoint counts. Read-only; no DB writes. Backend: POST /api/web/v1/ai-test-gen/preview. |
| testneo_swagger_upload_and_generateA | Upload Swagger + optional business rules → unified context indexing + NLP web test cases (multipart). Guarded: TESTNEO_MCP_ALLOW_WRITE + confirm=true. Respects project execution preconditions. Large payloads: set TESTNEO_MCP_SWAGGER_TIMEOUT_MS. Backend: POST /api/web/v1/ai-test-gen/upload-and-generate. |
| testneo_swagger_impact_analysisB | Compare an uploaded Swagger revision against the last snapshot for a web project, diff endpoints, and list impacted swagger-sourced NLP tests. Persists the modified spec bytes for the next baseline. Guarded: allow-write + confirm=true. Backend: POST /api/web/v1/ai-test-gen/impact-analysis. |
| testneo_swagger_impact_actionsB | Bulk apply impact triage on web test cases: mark_stale | archive | keep, then promote modified spec snapshot when possible. Guarded: allow-write + confirm=true. Backend: POST /api/web/v1/ai-test-gen/impact-actions. |
| testneo_api_project_upload_openapiA | Upload OpenAPI JSON/YAML to a classic API project (stores spec on Project.openapi_spec). Use before testneo_api_project_openapi_impact. Guarded: allow-write + confirm=true. Backend: POST /api/v1/projects/{id}/upload-openapi (multipart field: file). |
| testneo_api_project_openapi_impactB | Run OpenAPI impact analysis for API (non-web) test cases against a new or stored spec. Pass openapi_spec to diff an inline revision, or omit to analyze using the spec already saved on the project. Guarded: allow-write + confirm=true (service may flag tests). Backend: POST /api/v1/projects/{id}/openapi-impact. |
| testneo_list_projectsB | List projects available to the current API key user. |
| testneo_create_web_projectA | Create a new web automation project (stored under your API key account). Mirrors POST /api/web/v1/projects. Guarded: TESTNEO_MCP_ALLOW_WRITE=true and confirm=true. By default creates a default web environment with base_url (and optional username/password variables) in the same request; set create_default_environment=false for project-only. New projects get Lighthouse performance audits enabled unless project_settings overrides. |
| testneo_create_web_project_environmentB | Create a named web project environment with optional variables (e.g. base_url for {{base_url}} in NLP). Backend: POST /api/web/v1/projects/{project_id}/environments. Guarded: allow-write + confirm=true. |
| testneo_bootstrap_web_mcp_projectA | One-shot onboarding: validate → create web project with optional default environment (base_url + credentials) in a single POST when add_base_url_variable=true. Returns a trace + recommended_next_tools. Guarded like other writes. |
| testneo_list_recent_executionsC | List recent executions, optionally filtered by project/status/release/build. |
| testneo_get_execution_statusC | Fetch primary execution status, steps and summary metadata for an execution ID. |
| testneo_get_execution_summaryB | Get analytics summary for an execution (status, pass/fail, duration, video metadata). |
| testneo_get_execution_logsC | Get execution logs for an execution ID. |
| testneo_search_failuresB | Search failed executions for a project by test name or execution id fragment. |
| testneo_get_pass_fail_trendC | Summarize pass/fail trend for a project over a date range. |
| testneo_watch_executionB | Poll execution summary until terminal status or timeout window. |
| testneo_get_failure_bundleA | Get a compact failure triage bundle: summary, event sample, logs, inferred theme, next actions, plus a concrete suggested NLP patch (diff + testneo_update_test_case_nlp payload) when execution summary includes test_case_id. |
| testneo_run_agent_workflowC | Run an agentic multi-step QA workflow (triage_failure, rerun_decision, qa_intelligence) over TestNeo data. |
| testneo_ingest_figma_contextB | Ingest Figma metadata via ETL, optionally wait for completion, then create a linked unified context for test generation. |
| testneo_list_unified_contextsB | List unified contexts for a project with id + human-readable names. Use before testneo_generate_tests_from_context so agents do not have to scrape context_id from the UI. |
| testneo_get_unified_context_by_nameB | Resolve unified context_id from a natural-language name against this project’s contexts (calls list internally). Great for onboarding and demos. |
| testneo_ai_assistant_queryA | Same Web AI Assistant as the product UI (/web/ai-assistant): natural-language Q&A over a project, optionally scoped to a unified context (PDF/Figma/requirements ingest). POST /api/web/v1/etl/ai-assistant/query. Pass context_id or context_name_query; omit both for project-wide analytics-style questions. Uses your Web AI chat quota. Optional recommend_context / rag_context match the web request body for AI-Q and document-aware answers. |
| testneo_generate_tests_from_contextB | Generate NLP test cases from an existing unified context (Figma, requirements, etc.). Resolve context via testneo_list_unified_contexts or testneo_get_unified_context_by_name (name_query, not scraped UI ids). Omit auth_preamble for public / no-login apps (default: no SauceDemo login injected, no SauceDemo route auto-align). Pass auth_preamble { enabled:true, preset:'saucedemo' } only for demos against saucedemo.com. Custom maps: TESTNEO_ROUTE_MAP_JSON or testneo_set_project_route_map; optional auto_align_saucedemo_route_map + SauceDemo preset ties route phrases to SauceDemo paths. |
| testneo_preview_generated_testsA | Preview generated tests in both NLP and Playwright SDK spec.ts draft format for human-in-loop approval. Applies route hardening (env + optional route_hardening) to Navigate-to lines when a phrase map is configured. |
| testneo_execute_generated_test_caseA | Execute a generated test case by numeric test_case_id OR by project_id + name_query (resolved via GET …/test-cases/?search= then exact/unique name match). Human-in-loop gated. POST /api/web/v1/test-cases/{id}/execute — passes use_agent when TESTNEO_MCP_DEFAULT_EXECUTION_MODE=local and TESTNEO_MCP_PREFER_LOCAL_AGENT=true (same routing as batch). Optional wait_for_agent_seconds + env TESTNEO_MCP_WAIT_FOR_AGENT_MS / TESTNEO_MCP_REQUIRE_LOCAL_AGENT_FOR_BATCH control preflight polling. Use testneo_find_test_cases to browse matches before running. |
| testneo_run_generated_test_pipelineC | End-to-end: execute a generated test by test_case_id OR (project_id + name_query), poll until terminal, return analytics summary + step-level execution, optional failure triage bundle, and project pass/fail trend. POST /api/web/v1/test-cases/{id}/execute sends use_agent when local+prefer-local (same as testneo_execute_generated_test_case). name_match_mode: auto|exact|substring. Optional wait_for_agent_seconds for preflight. |
| testneo_update_test_case_nlpB | Update NLP commands for a specific test case ID and return verification snapshot. Optionally rewrites Navigate-to lines using route hardening (same env / route_hardening as generate). |
| testneo_export_playwright_specB | Export a test case as Playwright SDK TypeScript spec text. |
| testneo_run_playwright_spec_previewC | Run a Playwright SDK spec preview by extracting ai.run commands and executing via Playwright SDK execute endpoint. |
| testneo_figma_to_tests_workflowC | End-to-end workflow: ingest Figma -> create unified context -> generate tests -> preview NLP + Playwright drafts. |
| testneo_figma_image_to_tests_workflowA | No Figma token: upload exported UI image (PNG/JPEG/GIF/WebP) like the product 'Upload Figma Image' flow → wait for vision ETL → create unified context → generate tests → preview. Guarded: TESTNEO_MCP_ALLOW_WRITE + confirm=true. Backend: POST /api/web/v1/etl/upload-figma-image (multipart field: file). |
| testneo_rerun_failedB | Rerun failed tests for a project using test-case execute endpoint (guarded write action). |
| testneo_trigger_playwright_executionB | Trigger NLP execution via Playwright SDK execute endpoint (write tool, requires confirm + allow-write). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gururajhm-neo/testneo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server