loading…
Search for a command to run...
loading…
MCP server for TestNeo quality workflows, enabling test generation, execution, and analysis through MCP-compatible IDE clients.
MCP server for TestNeo quality workflows, enabling test generation, execution, and analysis through MCP-compatible IDE clients.
TestNeo MCP connects Cursor, VS Code, Claude Desktop, and other MCP-compatible clients to TestNeo — so your AI chat can list projects, inspect runs, generate tests from context (including Swagger/OpenAPI and design context), and (when you allow it) execute tests with guardrails. Differentiation: the VS Code extension fits in-editor right‑click generate → tweak → run; MCP fits chat- and agent-driven TestNeo workflows from Cursor and other MCP clients — see VS Code extension or MCP? in the monorepo quickstart.
| Resource | Link |
|---|---|
| Product | testneo.ai |
| Sign up & app | app.testneo.ai/signup |
| Hosted MCP docs (quickstart, tools, workflows, security) | testneo.ai/docs/testneo-mcp.html |
| Release Intelligence (Memory, patterns, outcomes) | testneo.ai/docs/release-intelligence.html · Customer guide |
| Source | github.com/gururajhm-neo/testneo-mcp |
TESTNEO_BASE_URL to that origin (e.g. http://127.0.0.1:8000), and point MCP at packages/testneo-mcp-server/dist/index.js after npm run build so project + environment + credentials match what you will ship to prod.testneo_bootstrap_web_mcp_project or testneo_create_web_project) when TESTNEO_MCP_ALLOW_WRITE=true — full flow (inline env, credentials, API compatibility, Lighthouse): MCP quickstart section 4 (from the testneo-api monorepo root).tn_…). Treat it like a password.| Variable | Value |
|---|---|
TESTNEO_BASE_URL |
TestNeo Cloud: https://app.testneo.ai. Local / self-hosted: origin that serves /api/web/v1 (e.g. http://127.0.0.1:8001). |
TESTNEO_WEB_APP_URL |
Optional. Browser origin for execution dashboard links in MCP (e.g. Vite http://localhost:5173). Defaults to TESTNEO_BASE_URL, or …:5173 when the base URL is localhost/127.0.0.1 on port 8001. |
TESTNEO_WEB_APP_PATH_PREFIX |
Optional. e.g. /web so links look like …/web/test-runner/execution/… (matches monorepo routes). Omit for …/test-runner/execution/… at the app root. |
TESTNEO_API_KEY |
your tn_… key |
Defaults & optional knobs: if you omit optional TESTNEO_MCP_* variables, the server uses safe built-in defaults (e.g. read-only TESTNEO_MCP_ALLOW_WRITE, standard timeouts). TESTNEO_BASE_URL defaults to http://localhost:8001 when unset—wrong for cloud, so always set it for app.testneo.ai. Full table, client vs API (no MCP vars on AWS app/.env for normal usage), and how to override via mcp.json / shell: monorepo MCP quickstart (see also the environment variable table).
Use 127.0.0.1 instead of localhost if Cursor or npx hits proxy issues (monorepo troubleshooting).
npx)No global install required. Example for Cursor (~/.cursor/mcp.json or Settings → MCP):
{
"mcpServers": {
"testneo": {
"command": "npx",
"args": ["-y", "@testneo/mcp-server"],
"env": {
"TESTNEO_BASE_URL": "https://app.testneo.ai",
"TESTNEO_WEB_APP_URL": "https://app.testneo.ai",
"TESTNEO_API_KEY": "tn_YOUR_KEY_HERE",
"TESTNEO_MCP_ALLOW_WRITE": "false",
"TESTNEO_MCP_TELEMETRY_JSONL": "true",
"TESTNEO_MCP_DEFAULT_EXECUTION_MODE": "local",
"TESTNEO_MCP_PREFER_LOCAL_AGENT": "true",
"TESTNEO_MCP_DEFAULT_EXECUTION_PLATFORM": "local",
"TESTNEO_MCP_REQUIRE_LOCAL_AGENT_FOR_BATCH": "true",
"TESTNEO_MCP_WAIT_FOR_AGENT_MS": "60000"
}
}
}
}
Keep TESTNEO_MCP_ALLOW_WRITE at false until you intentionally want execute/rerun/Swagger-write tools; read-only tools still work. Write tools also need confirm=true on each call — see hosted security section.
| Knob | Role |
|---|---|
TESTNEO_MCP_ALLOW_WRITE |
MCP env: false = read-only tools only; true = mutating tools may call the API. Restart MCP after changing. |
confirm |
Per guarded tool: false = preview/dry; true = perform (execute, pipeline, bootstrap create, etc.). Needs allow-write where applicable. |
idempotency_key |
Optional (≥ 8 chars when set): dedupes retries so the same logical action is not applied twice. |
environment_name / environment_id |
On execution tools: which project environment supplies {{base_url}} and credentials (must match TestNeo UI). |
Guardrails (full table + install): when developing inside testneo-api, see docs/mcp/mcp-quickstart.md (includes NLP API from Swagger, section 7) and customer E2E playbook. For the standalone npm/GitHub package only, use TestNeo MCP docs (same content when published).
Restart the IDE (or reload MCP servers), then in chat:
Validate my TestNeo connection
List my TestNeo projects
Follow TestNeo MCP — Docs for quickstart detail, tool reference, workflows (e.g. qa_intelligence_workflow), and troubleshooting. In the testneo-api monorepo, the canonical Markdown is docs/mcp/mcp-tool-reference.md (mirrored into this package as docs/MCP_TOOL_REFERENCE.md before publish). Web AI Assistant from MCP (prompts & personas): monorepo docs/mcp/mcp-ai-assistant-and-prompts.md → package docs/MCP_AI_ASSISTANT_AND_PROMPTS.md.
TESTNEO_MCP_ALLOW_WRITE=true and pass confirm=true.From a clone of this repo, after npm install and npm run build:
TESTNEO_BASE_URL="https://app.testneo.ai" TESTNEO_API_KEY="tn_YOUR_KEY_HERE" npm run smoke
Copy .env.example to .env and edit values if you prefer loading env from a file (your shell or tooling must export them before npm run smoke).
npxnpm install
npm run build
Point your MCP config at:
node /absolute/path/to/this/repo/dist/index.js
See docs/IDE_SETUP.md for more client-specific notes.
_telemetry (request_id, duration_ms, backend_paths, etc.) for support and auditing.testneo_get_failure_bundle (and triage-heavy testneo_run_agent_workflow steps) may include suggested_nlp_patch when include_nlp_patch_suggestion is true (default). Details: docs/MCP_TOOL_REFERENCE.md (same content as monorepo docs/mcp/mcp-tool-reference.md).project_precondition_failed unless the project resolves a real https base URL for the app under test (website_url or environment base_url). example.com placeholders are rejected. For special dev setups only: TESTNEO_MCP_RELAX_PROJECT_PRECONDITIONS=true.contract_version: execution_intelligence.v1 (or pipeline variants) and canonical_status (queued | running | passed | failed | cancelled | unknown) alongside raw backend status.Read-heavy: connection, projects, executions, logs, trends, watch, failure bundles, agent workflows, unified contexts, Swagger preview, route map, etc.
Writes (guarded): execute generated test, testneo_run_generated_test_pipeline (run + wait + report), testneo_run_batch_by_tags (multi-test by tags), testneo_run_api_test_chain (multi-test in saved or suggested chain order), testneo_save_api_test_chain / testneo_delete_saved_api_test_chain, rerun failed, trigger Playwright, Swagger upload/impact, NLP updates, route map persist, Figma ingest, etc.
Reads for NLP API suites: testneo_suggest_api_test_chains, testneo_list_saved_api_test_chains (see docs).
Full list: docs/MCP_TOOL_REFERENCE.md (synced from monorepo docs/mcp/mcp-tool-reference.md) or hosted tool reference.
Required
TESTNEO_BASE_URL — use https://app.testneo.ai for TestNeo Cloud; otherwise your self-hosted API origin.TESTNEO_API_KEY — from the app after signup.Common optional flags
mcp.json includes the full env block. Agent-first: TESTNEO_MCP_DEFAULT_EXECUTION_MODE=local + TESTNEO_MCP_PREFER_LOCAL_AGENT=true. Not agent-first: the doc shows the alternate five lines to paste instead. Restart MCP after changes.TESTNEO_MCP_ALLOW_WRITE — default false; set true only when you want mutating tools.TESTNEO_MCP_RELAX_PROJECT_PRECONDITIONS — default false.TESTNEO_MCP_TELEMETRY_JSONL, TESTNEO_MCP_POLICY_MODE, TESTNEO_MCP_TIMEOUT_MS, TESTNEO_MCP_SWAGGER_TIMEOUT_MS, TESTNEO_MCP_USER_AGENTtestneo_run_batch_by_tags): TESTNEO_MCP_DEFAULT_EXECUTION_MODE, TESTNEO_MCP_DEFAULT_EXECUTION_PLATFORM, TESTNEO_MCP_PREFER_LOCAL_AGENT, TESTNEO_MCP_REQUIRE_LOCAL_AGENT_FOR_BATCH, TESTNEO_MCP_WAIT_FOR_AGENT_MS, TESTNEO_MCP_OPEN_AGENT_SETUP_ON_AGENT_FAILURETESTNEO_ROUTE_HARDENING, TESTNEO_ROUTE_PROFILE, TESTNEO_ROUTE_MAP_JSONContext generation: For SauceDemo.com demos only, pass auth_preamble: { enabled: true, preset: "saucedemo" } so login lines and optional route phrase alignment apply. For any other site (e.g. public demos, your own app), omit auth_preamble — no SauceDemo login is injected and env username/password checks are not forced for that call. Use TESTNEO_ROUTE_MAP_JSON or testneo_set_project_route_map when Navigate steps need phrase → path hints.
More detail: docs/MCP_NON_SAUCE_DEMO_TESTING.md (in this repo / npm package docs folder). Canonical copy in the monorepo: docs/mcp/mcp-non-saucedemo-testing.md.
npm install
npm test
npm test runs a pretest build, then offline guardrail scripts (no TESTNEO_API_KEY required).
npm install feels stuck or slowOlder versions of this repo used a prepare hook that ran a full rebuild on every install; that hook is removed. If install still hangs, try:
cd packages/testneo-mcp-server
npm install --no-audit --no-fund --ignore-scripts
npm run build
npm test
This package includes .npmrc (audit=false, fund=false, progress=false) so installs are less chatty.
TESTNEO_MCP_ALLOW_WRITE=true.confirm=true (and optional idempotency_key for safe retries).More policy detail: Security & Governance on the hosted docs.
LICENSE.SECURITY.md.CHANGELOG.md.The npm package and gururajhm-neo/testneo-mcp mirror are synced from the private TestNeo monorepo. Do not put monorepo paths or internal CI tokens in your MCP client config — that is maintainer workflow only.
Instructions (local push, optional GitHub Actions secret): docs/PUBLISHING.md.
Run in your terminal:
claude mcp add testneo-mcp-server -- npx Yes, @Testneo/ Server MCP is free — one-click install via Unyly at no cost.
No, @Testneo/ Server runs without API keys or environment variables.
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
Open @Testneo/ Server on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
CSA PROJECT - FZCO © 2026 IFZA Business Park, DDP, Premises Number 31174 - 001
Security
Low riskAutomated heuristic from public metadata — not a security guarantee.