Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
QA platform for agents: coverage signals, in-repo test plans, verified tests and release governance.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
TESTCHIMP_API_KEY, TESTCHIMP_BACKEND_URLValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://mcp.testchimp.io/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"qa": {
"command": "npx",
"args": [
"-y",
"@testchimp/cli",
"mcp"
],
"env": {
"TESTCHIMP_API_KEY": "your-value",
"TESTCHIMP_BACKEND_URL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http qa https://mcp.testchimp.io/mcpclaude mcp add qa --env TESTCHIMP_API_KEY=your-value --env TESTCHIMP_BACKEND_URL=your-value -- npx -y @testchimp/cli mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"qa": {
"url": "https://mcp.testchimp.io/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"qa": {
"command": "npx",
"args": [
"-y",
"@testchimp/cli",
"mcp"
],
"env": {
"TESTCHIMP_API_KEY": "your-value",
"TESTCHIMP_BACKEND_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"qa": {
"type": "http",
"url": "https://mcp.testchimp.io/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"qa": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@testchimp/cli",
"mcp"
],
"env": {
"TESTCHIMP_API_KEY": "your-value",
"TESTCHIMP_BACKEND_URL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://mcp.testchimp.io/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
TESTCHIMP_BACKEND_URL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain testchimp.io (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: TESTCHIMP_API_KEY
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.1.93) reached the registry 19 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, Apify MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Extract data from any website with thousands of scrapers, crawlers, and automations on Apify Store ⚡
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
TestChimp CLI and MCP server for calling TestChimp /api/mcp/* endpoints with TESTCHIMP-API-KEY.
This repository folder may still be named testchimp-mcp-client locally; the published npm package is `@testchimp/cli`.
npm install -D @testchimp/cli@latest
Register the server so the host runs:
npx -y @testchimp/cli@latest mcp
Example mcpServers.testchimp:
{
"command": "npx", "args": ["-y", "@testchimp/cli@latest", "mcp"], "env": { "TESTCHIMP_API_KEY": "your-project-key", "TESTCHIMP_BACKEND_URL": "" } }
The config file path depends on the host (e.g. Cursor often uses /.cursor/mcp.json). Tool names use kebab-case (e.g. get-requirement-coverage, create-user-story).
export TESTCHIMP_API_KEY=... # required unless TESTCHIMP_OAUTH_TOKEN is set (often read from project MCP env; never commit keys)
testchimp --help testchimp get-requirement-coverage --branch-name main --help testchimp create-user-story --platform-file-path plans/stories/foo.md --title "Checkout" testchimp list-screen-states --json-input '{}' testchimp upsert-screen-states --json-input '{"screenStates":[{"screen":"Checkout","states":["empty","filled"]}]}' testchimp list-perf-runs --testchimp-id TC-123 --kind JOURNEY --limit 20 testchimp list-perf-runs --run-id 01ABC --include-raw testchimp promote-perf-baseline --run-id 01ABC --env-class CI testchimp compare-perf-to-baseline --run-id 01ABC --max-p95-regression-percent 10 testchimp list-related-perf-tests --scenario-titles "Checkout,Refund" testchimp list-api-operation-interactions --operation-id 01XYZ --interaction-type REAL --limit 100 testchimp list-meetings --include-filter-options testchimp list-meetings --from 2026-09-01 --to 2026-09-30 --domain customer.com --label Sales --search "pricing" testchimp get-meeting-transcript --meeting-id --summary-only testchimp ephemeral-environment --action PROVISION --branch-name feat --no-wait testchimp report-scan-findings --id scan-1 --scanner DAST --report-file zap.json testchimp upsert-issue --title "Broken checkout" testchimp list-issues --status ACTIVE --limit 10 testchimp get-release --release 1.2.0 testchimp upsert-release --release 1.2.0 testchimp manage-test-run --release 1.2.0 --title "Sprint 12"
ephemeral-environment --action PROVISION when waiting (“still waiting…” polls). Pass --no-wait for create/deploy trigger only.compare-perf-to-baseline still prints its JSON response but exits nonzero when regressed is true (top-level or under comparison).list-meetings covers team-wide Meeting Bots meetings only (same filters as the Meetings page). --include-filter-options returns label / participant / domain catalogs. --from / --to take YYYY-MM-DD (inclusive local days), ISO datetimes, or epoch millis; --label, --participant, --domain are repeatable or comma-separated.get-release, upsert-release, manage-test-run, and other release-filter commands. `--version` / `-V` print the CLI version only.| Variable | Purpose |
|---|---|
TESTCHIMP_API_KEY | Project API key (sent as TestChimp-Api-Key). Required unless TESTCHIMP_OAUTH_TOKEN is set. |
TESTCHIMP_OAUTH_TOKEN | OAuth 2.1 access token issued by featureservice (sent as Authorization: Bearer). When both are set, both are sent and the backend prefers the bearer. |
TESTCHIMP_BOT_ID | QA bot id (sent as bot-id header for attribution). Must be 1–64 printable ASCII characters without spaces; otherwise it is ignored with a warning. |
TESTCHIMP_BACKEND_URL | Featureservice base URL (default https://featureservice.testchimp.io). |
TESTCHIMP_INGRESS_URL | Ingress base URL used for bot event acks (default https://ingress.testchimp.io). |
TESTCHIMP_HOME | TestChimp Studio / CLI home holding projects.json (default ~/.testchimp). |
Map a local repository folder to a TestChimp project for the current user. The mapping lives in ~/.testchimp/projects.json (or $TESTCHIMP_HOME/projects.json), the same file TestChimp Studio uses, so a folder mapped from the CLI shows up in Studio and in the headless AgentWatch daemon.
testchimp workspace map --project-id <id> --folder ~/code/shop [--project-name "Shop"] [--reassign] [--skip-repo-check]
testchimp workspace get --project-id # prints the mapping JSON; exit 1 when unmapped
workspace map follows the same rules as Studio:
TESTCHIMP_API_KEY / TESTCHIMP_OAUTH_TOKEN is set, the CLI loads the project's connected repository (get-git-folder-mapping). If one is connected, the folder must be the repository root and one of its git remotes must match (owner/repo, case-insensitive). If no credential is set, no repo is connected, or the lookup fails, the check is skipped with a note on stderr. The credential's own project is used for this lookup, so run it with the same project's key or bot token. --skip-repo-check skips the lookup entirely.--reassign, which moves it (and drops the old project's entry if that leaves it with no folders).0600. Other projects are left alone, and unknown fields written by newer Studio versions are kept. A file that is not valid JSON or does not match schema v2 is moved to projects.invalid. .json and replaced with an empty registry. Schema v1 files are migrated to v2.The byte-level format is pinned by fixtures/projects-registry/, with an identical copy in the Studio repo. Both test suites replay the same upsert sequences and compare the output bytes.
workspace save-creds)Local runners (the Playwright reporter, this CLI, k6) need the project API key in their environment. TestChimp Studio keeps it in /.testchimp/mcp.json; remote MCP (OAuth) users write the same file once per repo:
# CLI: copy TESTCHIMP_API_KEY from the environment (or fetch when TESTCHIMP_OAUTH_TOKEN is set)
testchimp workspace save-creds --folder . --project-id \ [--project-name "Shop"] [--backend-url ] [--ingress-url ] [--reassign]
printf '%s' "$KEY" | testchimp workspace save-creds --folder . --project-id
TESTCHIMP_API_KEY still work. The key is never printed.fixtures/workspace-mcp-json/, mirrored in the Studio repo): mode 0600 in a 0700 .testchimp/ directory, other servers in the file kept, .testchimp/ added to .gitignore. The folder is also mapped in projects.json like workspace map.--reassign.Fallback: when neither TESTCHIMP_API_KEY nor TESTCHIMP_OAUTH_TOKEN is set, the CLI reads TESTCHIMP_API_KEY, TESTCHIMP_PROJECT_ID, TESTCHIMP_BACKEND_URL and TESTCHIMP_INGRESS_URL from the nearest .testchimp/mcp.json at or above the current directory. Exported variables always win, and --bot bindings are unaffected. The file must be private to you (mode 0600, as Studio and save-creds write it); a group- or world-readable copy, such as one committed to a cloned repo, is ignored with a warning. Other runners (Playwright, k6) still need the variables exported in their own shell.
testchimp get-my-tasks --user-id <user-id> # OAuth tokens imply the user
testchimp list-tests-awaiting-verification --limit 20 testchimp get-qa-posture testchimp bot get-profile testchimp bot register-profile --role QA_ENGINEER --responsibilities "Checkout + payments" \ --capability E2E_AUTHORING --capability TEST_BATCH_FIX \ --subscriptions-json '[{"eventType":"git-push","filters":[{"field":"author","op":"eq","value":"me"}]},{"eventType":"e2e-batch-completed"}]' testchimp bot ack [ ...] --ack-url testchimp bot compat --skill-version 1.0.53
bot ack prints one eventId status line per id and exits non-zero when any status is BOT_ACK_UNKNOWN_EVENT, BOT_ACK_NOT_A_TARGET, or BOT_ACK_MISSING_BOT_ID. An explicit --ack-url must be https (http only on localhost) and point at a TestChimp host or the TESTCHIMP_INGRESS_URL host. bot compat exits 0 and prints the deployment minimums plus cliUpgradeRequired / skillUpgradeRequired.
testchimp bot connect --project-id <id> # browser approval (OAuth, "agentwatch" scope)
testchimp bot connect --pair --project-id # or: no browser, your QA bot approves (see below) npx -y @testchimp/agentwatch query --project-id testchimp bot disconnect --project-id # forget the stored keys
Headless AgentWatch acts as the user, so it needs their user id, personal access key and the project API key. bot connect runs an OAuth 2.1 PKCE login with a loopback redirect, asks for the opt-in agentwatch scope (the consent page warns that keys will be stored locally), fetches the keys from /bots/get_agentwatch_credentials, and writes them to ~/.testchimp/agentwatch/credentials.json (mode 0600, keyed by project) with the backend and ingress URLs. It revokes the OAuth refresh token straight away and never prints the keys. Approving also opts the project in to AgentWatch.
Pairing (no second browser consent; what QA bots use). Every connection approved with Use this connection as my QA bot carries the agentwatch_pair scope, so the keys can reach the user's computer without another browser login, and without passing through the bot:
testchimp bot connect --pair [--project-id ] keeps a random verifier in ~/.testchimp/agentwatch/pairing.json (0600) and prints {pairingCode, expiresAtMillis}; the code is the verifier's SHA-256 (base64url).approve-agentwatch-pairing (or testchimp bot approve-pairing ).testchimp bot connect --finish-pair redeems with the verifier (polls up to --timeout-ms, default 60 s), stores the keys like above and deletes the pending file.Pairings are single use and expire after 10 minutes. The bot only ever sees the pairing code, which is useless without the verifier.
testchimp mcp --http [--port 8080] [--host 0.0.0.0]
Stateless Streamable HTTP at POST /mcp. Every request must carry Authorization: Bearer ; the caller's token is forwarded to TestChimp for each tool call, and the server's own TESTCHIMP_API_KEY / TESTCHIMP_OAUTH_TOKEN / TESTCHIMP_BOT_ID are never used. Requests without a bearer get 401 with WWW-Authenticate: Bearer resource_metadata="…". Other endpoints: GET /.well-known/oauth-protected-resource (RFC 9728 metadata), GET /healthz. Req
Only the beginning is shown; read the rest in the repo