Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Live docs MCP server. 793+ libraries, evidence-verified answers, code audit, snippets, dispatch.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
GT_GITHUB_TOKEN, GT_CACHE_DIR, GT_LOG_LEVEL标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 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"
}
}
}
}在终端中运行这条命令
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-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.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"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"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"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
GT_CACHE_DIR envGT_LOG_LEVEL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 rm-rf-prod 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:GT_GITHUB_TOKEN
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(8.0.1)于27天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Python MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
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.
Local-only Python MCP server for the Files.com API.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
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
只显示了开头部分;其余内容请在仓库中阅读