setup-guard-mcp
You can use this local MCP server to ground setup, dependency compatibility, and migration guidance in a project’s actual local configuration.
Detect Node.js runtime, package manager (
npm/pnpm/yarn/bun), locked dependency versions, and config paradigms from local project files.Check
engines.node,peerDependencies, and npm deprecation status deterministically using registry metadata.Get citation-backed, version-specific setup commands, config templates, and obsolete patterns to avoid, formatted for the project’s package manager.
Retrieve step-by-step upgrade guides, breaking changes, and official codemod commands between library versions with source URLs.
Search tag-pinned migration guides, release notes, deprecations, and setup guides using SQLite FTS5 BM25, optionally resolving version from
project_path.Rely on safety guardrails: no silent
latest, no-results epistemic notices, unsupported-library signaling, read-only operation, local stdio execution, and no telemetry.
Supports Bun package manager detection via bun.lock and bun.lockb, with version-pinned install commands and compatibility checks.
Provides migration guidance for ESLint v8 to v9, including flat config eslint.config.mjs, .eslintignore removal, @eslint/migrate-config, and typescript-eslint compatibility.
Provides version-aware setup and migration guidance for Next.js projects, including async cookies()/headers()/params in v15, fetch caching default changes, React 19 peer dependency checks, and @next/codemod commands.
Checks Node.js engine compatibility and provides migration guidance for v18, v20, and v22, including require(esm) stabilization and built-in node:sqlite.
Supports npm package manager detection and provides version-pinned install commands and compatibility checks for npm-based projects.
Supports pnpm package manager detection, including v6–v9 and pnpm-workspace.yaml catalogs, with version-pinned install commands and compatibility checks.
Supplies migration steps and compatibility checks for React v18 to v19, covering ref as a prop, forwardRef deprecation, ReactDOMTestUtils.act removal, useActionState, and TypeScript codemods.
Offers version-pinned setup and migration for Tailwind CSS v3 to v4, including @import "tailwindcss", CSS-first @theme config, @tailwindcss/vite and @tailwindcss/postcss plugins, and @tailwindcss/upgrade.
Provides version-aware setup and migration guidance for TypeScript v5, including moduleResolution: "bundler" and verbatimModuleSyntax with importsNotUsedAsValues deprecation.
Delivers version-aware setup and migration for Vite v5 to v6, covering Node.js engine requirements, Environment API, Sass modern API default, and CJS Node API removal.
Supports Yarn Classic v1 and Berry v2+ detection, providing version-pinned install commands and compatibility checks for Yarn projects.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@setup-guard-mcp Check my lockfile and tell me what breaks if I upgrade Next.js to 15."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
version-compat-mcp
"Your agent reads the wrong docs.
version-compatmakes it read the right version."
Version-Aware Setup, Dependency Compatibility & Migration MCP Server for JavaScript/TypeScript & Python Ecosystems.
version-compat-mcp is not a generic documentation search engine. It is a local Model Context Protocol (MCP) server that analyzes your project's actual Node.js & Python runtimes, package managers (npm/pnpm/yarn/bun/uv/poetry/pip), lockfile versions, and configuration files to supply deterministic compatibility checks and tag-pinned migration facts to AI coding agents (Google Antigravity, OpenAI Codex, Cursor, Claude Code).
Table of Contents
Related MCP server: installed-version-mcp
1. Why version-compat-mcp? (And How It Differs from Generic Doc MCPs)
Because LLM pre-training weights are frozen at a cutoff date, coding agents routinely make costly setup and migration errors:
Tailwind CSS v4 vs. v3: Proposing
npx tailwindcss init -p,tailwind.config.js, and@tailwind base;in a Tailwind CSS v4 project (which uses@import "tailwindcss";and@tailwindcss/viteor@tailwindcss/postcss).ESLint v9 vs. v8: Generating legacy
.eslintrc.jsonor.eslintignorefiles in an ESLint v9 project that requireseslint.config.mjs(Flat Config).Next.js 15 & React 19: Using synchronous
cookies(),headers(), orparamsin Next.js 15 (where Dynamic Request APIs are asynchronousPromises), or proposing incompatible React 18 / Node.js combinations.FastAPI & Pydantic v2: Suggesting deprecated
@app.on_event("startup")instead oflifespancontext manager, or Pydantic v1class Config:/@validatorinstead ofConfigDictand@field_validator/@model_validator.Package Manager Mismatch: Suggesting
npm installin a repository locked withpnpm-lock.yaml,bun.lock,yarn.lock, or proposingpip installin an activeuvorpoetryworkspace.
How version-compat-mcp Differs from General Documentation MCPs (e.g., Context7)
Dimension | Generic Documentation MCPs |
|
Primary Goal | Retrieve general API docs & tutorials | Ground setup, compatibility & major version migrations in actual project state |
Project Awareness | Unaware of local lockfiles, | Parses |
Compatibility Logic | Probabilistic text search | Deterministic |
Corpus Scope | Broad tutorials & full API reference | Strictly tag-pinned migration guides, breaking changes, and deprecations |
Failure Mode | Silently defaults to | Explicit guardrails ( |
2. Core Architecture
flowchart LR
Agent["Host Agent<br/>(Antigravity / Codex / Cursor / Claude)"] <-->|"JSON-RPC 2.0 (stdio)"| Server["version-compat-mcp"]
subgraph Deterministic["1. Deterministic Engine (Zero RAG / Zero Hallucination)"]
Local["Local File & Lockfile Parser<br/>package.json, pnpm-lock.yaml,<br/>bun.lock, yarn.lock, .nvmrc"]
Registry["npm Registry Abbreviated API<br/>engines.node, peerDependencies,<br/>deprecated (+ ETag Disk Cache)"]
end
subgraph Retrieval["2. Tag-Pinned Retrieval Engine (SQLite FTS5 BM25)"]
SeedDB["Precomputed SQLite FTS5 Index<br/>(seed/index-js-ts.db + SHA-256 Verify)"]
Corpus["Git-Tag Snapshots Only:<br/>Migration Guides, Breaking Changes,<br/>Deprecations & Setup Templates"]
end
Server --> Local
Server --> Registry
Server --> SeedDB
Corpus --> SeedDBStrict Separation of Structured vs. Unstructured Data: Structured data (
package.json, lockfiles, npm registry metadata) is evaluated deterministically without RAG. Unstructured docs (migration guides, breaking changes) are indexed by immutable Git tags in SQLite FTS5.Zero-Config & Precomputed Index: Built on Node.js native
node:sqlite(DatabaseSyncwithFTS5andunicode61 tokenchars '@/_-.')—requiring zero API keys and zero C++node-gypcompilation duringnpxexecution.Strict
stdioProtocol Hygiene:stdoutis strictly reserved for JSON-RPC 2.0 frames. Accidentalconsole.logcalls are intercepted, and internal diagnostics write exclusively toprocess.stderronly whenDEBUG="true"is set.
3. Supported Libraries & Versions
JavaScript / TypeScript Ecosystem
Library | Canonical ID | Indexed Major Versions | Key Migration & Setup Coverage |
Next.js |
|
| Async |
React |
|
|
|
Tailwind CSS |
|
|
|
ESLint |
|
|
|
Vite |
|
| Node.js |
TypeScript |
|
|
|
Node.js |
|
|
|
Supported JS/TS Package Managers: npm, pnpm (v6–v9 + pnpm-workspace.yaml catalogs), yarn (Classic v1 & Berry v2+), bun (bun.lock & bun.lockb).
Python Ecosystem
Library / Tool | Canonical ID | Indexed Major Versions | Key Migration & Setup Coverage |
Python |
|
| GIL-free free-threaded build, per-interpreter GIL, pattern matching, exception groups, |
FastAPI |
|
|
|
Pydantic |
|
|
|
SQLAlchemy |
|
| 2.0 |
LangChain |
|
| Modular packages ( |
uv |
|
| Cargo-style virtualenvs, workspace management, |
Supported Python Package Managers: uv (uv.lock, pyproject.toml), poetry (poetry.lock, pyproject.toml), pip (requirements.txt, Pipfile).
4. Quick Start & Host Agent Configuration
Prerequisites
Node.js:
>= 22.5.0
A. Google Antigravity (AGY)
Global MCP Config (~/.gemini/config/mcp_config.json):
{
"mcpServers": {
"version-compat": {
"command": "npx",
"args": ["-y", "version-compat-mcp"]
}
}
}Workspace Rules: This repository also includes workspace rules in
GEMINI.mdandAGENTS.md.
B. OpenAI Codex (CLI & Desktop App)
codex mcp add version-compat -- npx -y version-compat-mcpOr in ~/.codex/config.toml:
[mcp_servers.version-compat]
command = "npx"
args = ["-y", "version-compat-mcp"]
startup_timeout_sec = 15
tool_timeout_sec = 30
enabled = trueC. Cursor
Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"version-compat": {
"command": "npx",
"args": ["-y", "version-compat-mcp"]
}
}
}(For local development from a cloned repository, use "command": "node" and "args": ["/absolute/path/to/version-compat-mcp/dist/index.js"].)
D. Claude Code & Claude Desktop
claude mcp add version-compat -- npx -y version-compat-mcpE. Smithery CLI
npx -y smithery@latest mcp add eunryong/version-compat-mcp --client cursor
# or for Claude Desktop / Claude Code:
npx -y smithery@latest mcp add eunryong/version-compat-mcp --client claude5. MCP Tools Reference (5 Tools)
Tool Name | Data Source | Description |
| Local file parser (Offline) | Detects Node.js & Python runtimes ( |
| npm / PyPI Registry API + Semver/PEP440 | Verifies |
| SQLite FTS5 + PM Translator | Returns version-pinned install commands formatted for the project's package manager ( |
| SQLite FTS5 (Tag-Pinned) | Retrieves ordered migration steps, breaking changes, and official codemod commands between |
| SQLite FTS5 BM25 | Searches tag-pinned migration guides, release notes, and deprecations for a specific library version (auto-resolving version from |
6. Real-World Prompt Examples
Once version-compat-mcp is connected to Cursor, Claude Code, Codex, or Antigravity, try asking:
Environment & Compatibility Audit
"Check the current project's Next.js, React, and Node.js versions using
version-compatand let me know if there are any peerDependency or engine compatibility issues."Tailwind CSS v3 → v4 Upgrade
"We want to upgrade Tailwind CSS from v3.4 to v4.0 in this repository. Inspect our project environment first, then give me the exact migration steps, config changes, and commands for our package manager with official source URLs."
ESLint v8 → v9 Flat Config Migration
"Migrate our
.eslintrc.jsonand.eslintignoresetup to ESLint v9 Flat Config. Cite the official ESLint v9 migration docs."Next.js 14 → 15 Breaking Changes
"What breaking changes affect
cookies(),headers(), andparamswhen upgrading from Next.js 14.2 to 15.0, and what is the official codemod command?"
7. Safety & Epistemic Guardrails
No Silent
"latest"Substitution (status: "ambiguous_version"): When a version is omitted without aproject_path, or spans multiple majors (>=13.0.0 <16.0.0), the server refuses to guess"latest"and returns candidate versions.Zero Search Results ≠ Feature Removed (
status: "no_results_found"): Returnsepistemic_notice: "NO_EVIDENCE_DO_NOT_ASSUME_REMOVED"so the host agent never falsely claims an API was removed simply because no breaking-change chunk matched.Explicit Unsupported Scope (
status: "unsupported_library"): Immediately identifies libraries outside the 7 supported targets.Read-Only Execution: Commands and codemods are returned as strings; the server never executes shell commands.
8. Documentation Sources and Data Policy
version-compat-mcpdoes not claim ownership of third-party documentation.Every search result and migration guide step includes original
source_urllinks and version metadata (git_tag,version,collected_at,upstream_license).Indexed documents are strictly limited to migration guides, release notes, deprecation notices, and compatibility-related content. Full documentation websites and general tutorials are excluded.
Documentation sources are collected from official repositories or official documentation sites pinned to immutable Git tags (recorded in
seed/metadata.json).Third-party documentation remains subject to its original license, terms of service, and copyright policy. See
NOTICE.mdandTHIRD_PARTY_NOTICES.mdfor complete attribution details.Upstream maintainers can request modification or removal of any indexed snapshot by opening an issue at https://github.com/Eunryong/version-compat-mcp/issues.
9. Privacy & Security Policy
100% Local Execution: Runs locally on your machine over
stdio. No source code or.envfiles are ever read or uploaded.No Telemetry: Zero analytics or tracking. Outbound network calls are limited to npm registry metadata lookups (
registry.npmjs.org) and can be disabled completely viaVERSION_COMPAT_OFFLINE=1.SHA-256 Integrity: Precomputed index databases are verified against
seed/index-js-ts.db.sha256andseed/manifest.jsonbefore loading.See
SECURITY.mdfor full details.
10. Known Limitations & Roadmap
Current Scope (Phase 1): Focused on the 7 core JS/TS libraries (
node,typescript,react,nextjs,vite,tailwindcss,eslint) using SQLite FTS5 BM25 keyword/symbol retrieval.Phase 2 Roadmap: Hybrid retrieval combining BM25 with local ONNX query embeddings (
transformers.js+sqlite-vecusingXenova/bge-small-en-v1.5) and automated GitHub Actions release asset index updates.Phase 3 Roadmap: Modular ecosystem collections (
@version-compat/mcp-core+ on-demand ecosystem indexes) so large ecosystems can be downloaded selectively into~/.cache/version-compat-mcp/.
11. Testing with MCP Inspector & Evaluation Suite
# Build TypeScript + SQLite FTS5 seed index (manifest.json, index-js-ts.db.sha256, metadata.json)
npm run build
# Run unit tests, 8 fixture project tests, safety guardrail tests, and stdio integration test
npm test
# Run golden dataset retrieval & guardrail benchmark (Recall@1, Recall@5, MRR@10, Leakage)
npm run eval
# Verify MCP protocol via official MCP Inspector CLI
npm run inspect:cli
# Launch interactive MCP Inspector Web UI
npm run inspect
# Verify npm package tarball before publishing
npm pack --dry-run12. License
MIT License. See LICENSE for details.
For third-party documentation and software/model attribution, see NOTICE.md and THIRD_PARTY_NOTICES.md.
Available Tools
5 toolscheck_dependency_compatibilityA
Verifies engines.node, peerDependencies cross-compatibility, and deprecation notices deterministically using npm registry abbreviated metadata.
Inputs: dependencies (required), devDependencies, runtime_version.
detect_project_environmentA
Detects Node.js runtime, package manager (npm/pnpm/yarn/bun), locked dependency versions, and config paradigms (ESLint flat config, Tailwind v4 CSS-first, Next.js App/Pages router, tsconfig) from local project files without network calls.
Inputs: project_path (required).
get_upgrade_stepsA
Retrieves step-by-step migration guides, breaking changes, and official codemod commands between two versions of a library (e.g. Tailwind v3 -> v4, ESLint v8 -> v9, Next.js v14 -> v15) with GitHub tag source URLs.
Inputs: library (required), to_version (required), from_version (required), focus_area, +1 more.
get_versioned_setup_guideB
Returns citation-backed installation commands (formatted for the project's package manager), initial configuration file examples, and obsolete patterns to avoid for a specific library version.
Inputs: library (required), target_version (required), package_manager (required), runtime_version, +1 more.
search_versioned_docsA
Searches tag-pinned migration guides, release notes, and deprecation notices for a specific library version using SQLite FTS5 (BM25). Resolves version from project_path lockfile if version is omitted.
Inputs: query (required), library (required), top_k, version, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Tools target distinct lifecycle stages: environment detection, compatibility verification, setup guide retrieval, upgrade path retrieval, and documentation search. Minor overlap exists between get_versioned_setup_guide and search_versioned_docs, but descriptions clarify scope (specific guide vs general search).
All tools follow a consistent snake_case verb_noun pattern (detect_, check_, get_, search_). The naming is clear and predictable across the set.
Five tools appropriately cover the setup and upgrade assistance domain. Each tool has a unique role and the count is well-scoped without redundancy.
Core workflow from environment detection through compatibility checks to setup/upgrade guidance is covered. Minor gap: no tool to list available library versions or suggest possible upgrades, though search_versioned_docs partially mitigates this.
Maintenance
Related MCP Connectors
Live npm and UNPKG data for AI agents: resolution, audits, import maps, malware/CVE checks.
Deterministic package.json upgrade plans: age gate, aligned peers, reasons per change. No AI.
Verify npm packages before your AI agent installs them: hallucinations, advisories, API drift.
Package intelligence for AI agents across npm, PyPI, crates.io and deps.dev. No API keys.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to safely upgrade JavaScript and TypeScript projects through dependency analysis, upgrade path detection, breaking change identification, codemod application, and PR summary generation.1415 npmMIT
- AlicenseAqualityDmaintenanceGives coding agents the exact installed version of each dependency in a project from node_modules and lockfile, preventing deprecated API usage by grounding them in reality.37 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to verify, compare, and safely upgrade npm packages by scoring packages from public signals and sandboxed co-installation, detecting breaking API surface changes, and rewriting code that upgrades break.51 npm8MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to fetch the real latest versions of packages from npm, PyPI, crates.io and the Go module proxy, then check manifests or whole projects for outdated dependencies and rewrite them in place. It also reports the current releases and underlying dependency stacks of AI coding tools like Claude Code, Codex and Gemini CLI.1MIT