Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Live docs MCP server. 793+ libraries, evidence-verified answers, code audit, snippets, dispatch.
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.
GT_GITHUB_TOKEN, GT_CACHE_DIR, GT_LOG_LEVELValues 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 …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"groundtruth": {
"command": "npx",
"args": [
"-y",
"@groundtruth-mcp/gt-mcp"
],
"env": {
"GT_GITHUB_TOKEN": "your-value",
"GT_CACHE_DIR": "your-value",
"GT_LOG_LEVEL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add groundtruth --env GT_GITHUB_TOKEN=your-value --env GT_CACHE_DIR=your-value --env GT_LOG_LEVEL=your-value -- npx -y @groundtruth-mcp/gt-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"groundtruth": {
"command": "npx",
"args": [
"-y",
"@groundtruth-mcp/gt-mcp"
],
"env": {
"GT_GITHUB_TOKEN": "your-value",
"GT_CACHE_DIR": "your-value",
"GT_LOG_LEVEL": "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": {
"groundtruth": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@groundtruth-mcp/gt-mcp"
],
"env": {
"GT_GITHUB_TOKEN": "your-value",
"GT_CACHE_DIR": "your-value",
"GT_LOG_LEVEL": "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.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
GT_CACHE_DIR envGT_LOG_LEVEL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
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 with the GitHub account rm-rf-prod, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
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: GT_GITHUB_TOKEN
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (8.0.1) reached the registry 27 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, TF Rooms
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.
Live room availability, rates and stay quotes for 12 New Leaf motels in Twin Falls, Idaho.
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.
Current, official documentation for coding agents, fetched when they ask.
GroundTruth is a self-hosted MCP server and command-line tool. Models write code from what they were trained on, so they still wrap components in forwardRef after React 19 made ref a regular prop, call cookies() synchronously after Next.js made it async, and emit @tailwind directives that Tailwind v4 replaced with @import "tailwindcss". GroundTruth gives the agent the library's own documentation at request time: it reads llms.txt, the docs site as markdown, or the GitHub repository, ranks the sections that answer the question, and checks that the answer covers the topic before returning it. It also audits your source with 107+ patterns and links every finding to the current fix. It runs on your machine. No account, no API key, no rate limit of its own.
Requires Node.js 24 or newer.
Claude Code
claude mcp add gt -- npx -y @groundtruth-mcp/gt-mcp@latest
Cursor, Claude Desktop, Windsurf and other clients that use an mcpServers block (.cursor/mcp.json, claude_desktop_config.json, ~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": { "gt": { "command": "npx", "args": ["-y", "@groundtruth-mcp/gt-mcp@latest"] } } }
VS Code (.vscode/mcp.json):
{
"servers": { "gt": { "type": "stdio", "command": "npx", "args": ["-y", "@groundtruth-mcp/gt-mcp@latest"] } } }
Any other MCP client: run npx -y @groundtruth-mcp/gt-mcp@latest as a stdio server.
Command line (same tools, no MCP client needed):
npm install -g @groundtruth-mcp/gt-mcp
gt-mcp bp nextjs caching
@latest makes npx pick up new releases on the next session start. When a newer version exists, tool responses carry a one-line notice (GT_NO_UPDATE_CHECK=1 turns the check off).
GroundTruth reads READMEs, release notes, migration guides and code examples from GitHub. Without a token GitHub allows 60 requests per hour. A token with no extra scopes raises that to 5,000 and enables code search in gt_examples.
claude mcp add gt -e GT_GITHUB_TOKEN=ghp_yourtoken -- npx -y @groundtruth-mcp/gt-mcp@latest
In a JSON config, add "env": { "GT_GITHUB_TOKEN": "ghp_yourtoken" } next to args.
Fourteen tools. Each does one job, and each is also a CLI command.
| Tool | CLI | What it does |
|---|---|---|
gt_dispatch | ask | Routes a plain request ("use gt for drizzle migrations") to the right tool and arguments |
gt_resolve_library | resolve | Finds a library by name; falls back to npm, PyPI, crates.io and Go modules |
gt_get_docs | docs | Live docs for one topic; also accepts a docs URL |
gt_best_practices | bp | Patterns, anti-patterns and configuration guidance for a library |
gt_auto_scan | scan | Reads your manifest and fetches best practices for each dependency |
gt_search | search | Any topic without a library: OWASP, MDN, web.dev, W3C, AI provider docs, Google APIs |
gt_audit | audit | Scans source files and reports issues at file:line with links to the fix |
gt_changelog | changelog | Release notes before you upgrade |
gt_compat | compat | Browser and runtime support from MDN browser-compat-data and caniuse |
gt_compare | compare | Two or three libraries side by side |
gt_examples | examples | Real-world code from GitHub |
gt_migration | migrate | Migration guides and breaking changes between versions |
gt_batch_resolve | batch | Resolves up to 20 libraries in one call |
gt_snippets | snippets | Ranked code snippets per library and version, cached on disk |
The server also exposes 2 MCP resources (library-registry, library-docs) and 8 prompts (audit-my-project, upgrade-check, best-practices-scan, compare-libraries, security-check, migration-guide, find-examples, dependency-audit).
You don't need the tool names. Ask in plain language:
use gt for nextjs
use gt for drizzle migrations gt audit use gt to check WCAG focus indicators use gt for OpenTelemetry setup find all issues and fix with gt
Or call tools directly:
gt_resolve_library({ libraryName: "nestjs" })
gt_get_docs({ libraryId: "nestjs/nest", topic: "guards" }) gt_best_practices({ libraryId: "vercel/next.js", topic: "caching" }) gt_auto_scan({ projectPath: "." }) gt_search({ query: "OWASP SQL injection prevention" }) gt_audit({ projectPath: ".", categories: ["security", "accessibility"] }) gt_changelog({ libraryId: "vercel/next.js", version: "15" }) gt_compat({ feature: "CSS container queries", environments: ["safari"] }) gt_compare({ libraries: ["prisma", "drizzle-orm"], criteria: "TypeScript support" }) gt_examples({ library: "hono", pattern: "middleware" })
gt_auditWalks your project, runs 107+ patterns across 18 categories, reports each issue at file:line, then fetches the fix from the authoritative source.
gt_audit({ categories: ["all"] }) // all 18 categories
gt_audit({ categories: ["security", "node"] }) // OWASP + Node.js gt_audit({ categories: ["python", "security"] }) // Python OWASP scan gt_audit({ categories: ["accessibility"] }) // WCAG AA gt_audit({ categories: ["typescript", "react"] }) // type safety + React rules
| Category | What it checks |
|---|---|
security | XSS, SQL injection, command injection, SSRF, path traversal, hardcoded credentials, CORS wildcard |
accessibility | Missing alt text, onClick on div, icon-only buttons, inputs without labels, outline: none |
react | forwardRef (React 19), useFormState renamed, index as key, conditional hooks |
nextjs | Sync cookies/headers/params (Next.js 16), Tailwind v3 directives, missing metadata |
typescript | any type, non-null assertions, @ts-ignore, floating Promises |
performance | Missing lazy loading, useEffect data fetching, missing Suspense boundaries |
layout | CLS-causing images, 100vh on mobile, missing font-display |
node | console.log in production, sync fs ops, unhandled callbacks |
python | SQL injection via f-string, eval/exec, subprocess shell=True, pickle.loads |
| Also | mobile, css, vue, svelte, angular, testing, seo, i18n, api |
Sample output:
## [CRITICAL] SQL built via template literal
Category: security | Severity: critical | Count: 2
Fix: db.query('SELECT * FROM users WHERE id = $1', [userId])
Files:
Live fix: OWASP SQL Injection Prevention Cheat Sheet
gt_auto_scanPoint it at a project root. It reads the manifest and lockfile, works out which libraries you use and at which versions, and returns best practices for each, top libraries first. Default output is about 15K characters.
Reads package.json, deno.json, requirements.txt, pyproject.toml, Cargo.toml, go.mod, pom.xml, build.gradle, build.gradle.kts, composer.json, Gemfile and pubspec.yaml.
gt_searchFor anything that isn't one library.
| Area | Topics |
|---|---|
| Security | OWASP Top 10, SQL injection, XSS / CSP, CSRF, HSTS, CORS, JWT, OAuth 2.1, WebAuthn, SSRF, API security |
| Accessibility | WCAG 2.2, WAI-ARIA, keyboard navigation |
| Performance | Core Web Vitals, image optimization, web fonts, Speculation Rules |
| Web APIs | Fetch, Workers, WebSocket, WebRTC, IndexedDB, Web Crypto, Intersection Observer |
| CSS | Grid, Flexbox, Container Queries, View Transitions, Cascade Layers, :has(), Subgrid |
| AI providers | Claude, OpenAI, Gemini, Mistral, Cohere, Groq, LangChain, LlamaIndex |
| Maps, Analytics, Ads, Cloud, Firebase, Vertex AI, YouTube, Gmail, Sheets | |
| Infrastructure | Docker, Kubernetes, GitHub Actions, Terraform, Cloudflare Workers |
gt-mcp runs the same 14 tools in-process and prints the answer. With no arguments, gt-mcp is the stdio MCP server, exactly as before.
gt-mcp docs react useEffect # live docs for one topic
gt-mcp bp nextjs caching # best practices gt-mcp search "OWASP SSRF prevention" gt-mcp audit . # audit the current project gt-mcp scan . # best practices for every dependency gt-mcp compat "CSS container queries" gt-mcp ask "how do I paginate with drizzle" # let gt_dispatch pick the tool gt-mcp call gt_compare '{"libraries":["prisma","drizzle-orm"]}' echo '{"libraryName":"drizzle"}' | gt-mcp call gt_resolve_library -
| Command | Does | |
|---|---|---|
tools | Lists every command, its tool and its arguments (--json for machine output) | |
| `call [ \ | -]` | Calls any tool with JSON arguments; - reads them from stdin |
help [command] | Shows a command's flags, generated from the tool's input schema | |
--json | Prints the full CallToolResult as JSON instead of the text |
Exit codes: 0 ok, 1 tool error, 2 usage error. Logs stay quiet on stderr unless something goes wrong (GT_LOG_LEVEL defaults to warn for commands). The server flags still work: --version, --health, --routing-table, --help.
Measured on one machine with the same harness, published 7.5.0 against 8.0.0. Network timings depend on your connection and on the docs site.
| Measurement | 7.5.0 | 8.0.0 | Change |
|---|---|---|---|
gt-mcp --version | 1,130 ms, 194 MB | 40 ms, 54 MB | 28x faster |
| Spawn to MCP ready | 1,074 ms | 186 ms | 5.8x faster |
gt_best_practices Next.js caching, cold cache | 6,893 ms | 259 ms | 27x faster |
| Same call the next day (20 h old cache) | 6,684 ms | 92 ms | 73x faster |
Repeat gt_search in a new session | 86 ms | 2 ms | 43x faster |
Fewer tokens per session and per answer:
| Measurement | 7.5.0 | 8.0.0 |
|---|---|---|
tools/list, paid by every session | 23,638 bytes | 11,560 bytes (-51%) |
| Tool descriptions | -75% | |
| Wire bytes per docs or best-practices answer | halved (duplicate structuredContent removed) |
| gt_auto_scan default o
Only the beginning is shown; read the rest in the repo