{"_id":"@akshay7273/mcp-ready","_rev":"3-a932e2bbd70557b4ac5ab5e8f3e1bbe9","name":"@akshay7273/mcp-ready","dist-tags":{"latest":"0.3.0"},"versions":{"0.1.0":{"name":"@akshay7273/mcp-ready","version":"0.1.0","keywords":["mcp","model-context-protocol","migration","linter","cli","2026-07-28"],"license":"MIT","_id":"@akshay7273/mcp-ready@0.1.0","maintainers":[{"name":"akshay7273","email":"akshaykumar7273@gmail.com"}],"homepage":"https://github.com/Akshay7273/mcp-ready#readme","bugs":{"url":"https://github.com/Akshay7273/mcp-ready/issues"},"bin":{"mcp-ready":"dist/cli.js"},"dist":{"shasum":"87802f1a75ae9ba12f8e897b5cc421f02d35e289","tarball":"https://registry.npmjs.org/@akshay7273/mcp-ready/-/mcp-ready-0.1.0.tgz","fileCount":15,"integrity":"sha512-Obk+mSDsddOFEGoHbJLYukbpyoDmZ4Tv4VZaZbsdJ+wSuAKQePof0Yq+NKm+v54aVSJMg35xxkh3e/4v8dsx+w==","signatures":[{"sig":"MEYCIQD/Fk+o3xFyUDlOQHJbT+JMSXc88egNE7UWQGPQkTAilgIhAIUe3HA+1pM6jrU32CXGYfmvRKuKnejjTdZ9imMbhLZ3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25988},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"akshay7273","email":"akshaykumar7273@gmail.com"},"repository":{"url":"git+https://github.com/Akshay7273/mcp-ready.git","type":"git"},"_npmVersion":"10.9.8","description":"Check whether your MCP server is ready for the MCP 2026-07-28 spec revision — breaking changes, deprecated features, migration hints.","directories":{},"_nodeVersion":"22.23.1","dependencies":{"fast-glob":"^3.3.2","picocolors":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^1.6.0","typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ready_0.1.0_1784578197584_0.9086849900959522","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@akshay7273/mcp-ready","version":"0.2.0","keywords":["mcp","model-context-protocol","migration","linter","cli","2026-07-28"],"license":"MIT","_id":"@akshay7273/mcp-ready@0.2.0","maintainers":[{"name":"akshay7273","email":"akshaykumar7273@gmail.com"}],"homepage":"https://github.com/Akshay7273/mcp-ready#readme","bugs":{"url":"https://github.com/Akshay7273/mcp-ready/issues"},"bin":{"mcp-ready":"dist/cli.js"},"dist":{"shasum":"9ed724a126d05f11991c16fe3a510ee0ef297dc9","tarball":"https://registry.npmjs.org/@akshay7273/mcp-ready/-/mcp-ready-0.2.0.tgz","fileCount":26,"integrity":"sha512-SKlxrN5KX4tSulK58XKJIuba86J9gzS1xXzWDXynCVWLDDCYFKBZcrGdMEAMI8lNNEoQfGQy+0maYdkjs/JCUA==","signatures":[{"sig":"MEQCIBiIbboMDY6EviR8hdHnEsF2KlGpjiOHK1v7JoaXg35aAiB3imhN94rfrWJ6DUM7+Afu0oeNjmSzjlItgZed26mUqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49993},"type":"module","engines":{"node":">=20"},"gitHead":"ac980cd22e321418d3e169ce633e20ee45e055d3","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc","check":"npm run build && npm test","prepack":"npm run build"},"_npmUser":{"name":"akshay7273","email":"akshaykumar7273@gmail.com"},"repository":{"url":"git+https://github.com/Akshay7273/mcp-ready.git","type":"git"},"_npmVersion":"12.0.2","description":"Check whether your MCP server is ready for the MCP 2026-07-28 spec revision — breaking changes, deprecated features, migration hints.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"fast-glob":"^3.3.2","picocolors":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","vitest":"^4.1.10","typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ready_0.2.0_1785467739360_0.6471029243691915","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@akshay7273/mcp-ready","version":"0.3.0","description":"Check whether your MCP server is ready for the MCP 2026-07-28 spec revision — breaking changes, deprecated features, migration hints.","type":"module","bin":{"mcp-ready":"dist/cli.js"},"scripts":{"build":"tsc","dev":"tsx src/cli.ts","test":"vitest run","check":"npm run build && npm test","prepack":"npm run build"},"keywords":["mcp","model-context-protocol","migration","linter","cli","2026-07-28"],"license":"MIT","engines":{"node":">=20"},"publishConfig":{"access":"public"},"dependencies":{"fast-glob":"^3.3.2","picocolors":"^1.0.0"},"devDependencies":{"@types/node":"^20.11.0","tsx":"^4.7.0","typescript":"^5.4.0","vitest":"^4.1.10"},"repository":{"type":"git","url":"git+https://github.com/Akshay7273/mcp-ready.git"},"homepage":"https://github.com/Akshay7273/mcp-ready#readme","bugs":{"url":"https://github.com/Akshay7273/mcp-ready/issues"},"gitHead":"e102b1b41a7699df777ec3ef4518bdbedfc82285","_id":"@akshay7273/mcp-ready@0.3.0","_nodeVersion":"24.16.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-lDsz+PS/dkF0P6ZA5QDZ+xWOGPmFdCR9l/qBrpPA+ndp0UgE5EFGWGv+N63Q0pj8jCxi2u/riU/PeLiSrCooow==","shasum":"24b95347556f610c22bc536b584a201edfc30abf","tarball":"https://registry.npmjs.org/@akshay7273/mcp-ready/-/mcp-ready-0.3.0.tgz","fileCount":28,"unpackedSize":66771,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHC14KrM1BtvUi9yoI+NTHoUjGoBnrX2+Rvwgsb4qa0QAiB+kixgdWiY5xPGFye4QBuc9ildSBgB28y3ORHywGEK4Q=="}]},"_npmUser":{"name":"akshay7273","email":"akshaykumar7273@gmail.com"},"directories":{},"maintainers":[{"name":"akshay7273","email":"akshaykumar7273@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-ready_0.3.0_1785470373674_0.5116300454869254"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-20T20:09:57.398Z","modified":"2026-07-31T03:59:33.932Z","0.1.0":"2026-07-20T20:09:57.724Z","0.2.0":"2026-07-31T03:15:39.497Z","0.3.0":"2026-07-31T03:59:33.815Z"},"bugs":{"url":"https://github.com/Akshay7273/mcp-ready/issues"},"license":"MIT","homepage":"https://github.com/Akshay7273/mcp-ready#readme","keywords":["mcp","model-context-protocol","migration","linter","cli","2026-07-28"],"repository":{"type":"git","url":"git+https://github.com/Akshay7273/mcp-ready.git"},"description":"Check whether your MCP server is ready for the MCP 2026-07-28 spec revision — breaking changes, deprecated features, migration hints.","maintainers":[{"name":"akshay7273","email":"akshaykumar7273@gmail.com"}],"readme":"# mcp-ready ✈️\r\n![CI](https://github.com/Akshay7273/mcp-ready/actions/workflows/ci.yml/badge.svg)\r\n\r\n> Is your MCP server ready for the **2026-07-28 spec**? Find breaking changes and deprecated features — before they find you.\r\n\r\n🚧 **v0.3 release candidate** — SARIF code scanning, checked-in baselines, scoped suppressions,\r\nand cross-language validation are complete.\r\n\r\nThe Model Context Protocol's 2026-07-28 revision is its largest ever: a stateless core, a new `server/discover` capability-discovery method, deprecated roots/sampling/logging, new SDK major versions, and changed error handling. `mcp-ready` scans your MCP server repo — **TypeScript, Python, Go, or C#** — and tells you exactly what needs attention. In seconds. Zero config.\r\n\r\n## Quick start\r\n\r\n```\r\nnpx @akshay7273/mcp-ready .\r\n```\r\n\r\n> Installed globally? The command is just `mcp-ready`.\r\n\r\nThat's it. Point it at any MCP server repo and read the report.\r\n\r\n### CI and machine-readable output\r\n\r\n```bash\r\n# JSON to stdout\r\nnpx @akshay7273/mcp-ready . --format json\r\n\r\n# Write a Markdown report and fail on breaking or deprecated findings\r\nnpx @akshay7273/mcp-ready . --format markdown --output mcp-ready.md --fail-on deprecated\r\n\r\n# Produce SARIF 2.1.0 for GitHub code scanning\r\nnpx @akshay7273/mcp-ready . --format sarif --output mcp-ready.sarif --fail-on none\r\n```\r\n\r\n`--fail-on` accepts `breaking` (default), `deprecated`, or `none`. JSON reports use schema\r\nversion `1` and include detected SDKs, summary counts, protocol applicability, confidence, and\r\nall remediation metadata.\r\n\r\nSARIF reports map findings to source locations and stable rule descriptors for code-scanning\r\nsystems. See the [SARIF integration guide](docs/sarif.md) for a complete GitHub workflow.\r\n\r\nExisting repositories can check in a reviewed baseline while keeping new findings actionable.\r\nSuppressions require an exact rule/file scope and a written reason. See the\r\n[baseline and suppression guide](docs/policy.md).\r\n\r\n## Use in CI (GitHub Action)\r\n\r\n```yaml\r\n- uses: Akshay7273/mcp-ready@main\r\n  with:\r\n    path: \".\"\r\n```\r\n\r\nFails the build when 🔴 breaking findings are detected (exit code 1).\r\n\r\n## What it checks\r\n\r\n| Check | Severity | Why it matters |\r\n| --- | --- | --- |\r\n| Legacy `initialize`-only handshake assumptions | 🔴 breaking | The new revision introduces `server/discover` and a stateless core |\r\n| Literal `-32002` error-code matching | 🔴 breaking | Resource-not-found is now standard JSON-RPC `-32602` |\r\n| Monolithic `@modelcontextprotocol/sdk` (TypeScript) | 🔴 breaking | v2 splits into `@modelcontextprotocol/server` / `client` / `core` (Node 20+, ESM and CommonJS) |\r\n| Python `mcp` v1 API usage (`FastMCP`) | 🔴 breaking | v2 renames `FastMCP` → `MCPServer` |\r\n| Roots usage | 🟡 deprecated | Replace with tool parameters, resource URIs, or server config |\r\n| Sampling usage | 🟡 deprecated | Deprecated under the new feature lifecycle policy |\r\n| Logging capability usage | 🟡 deprecated | Use stderr (stdio) or OpenTelemetry instead |\r\n| Python dependency crossing the v2 boundary | 🟡 deprecated | Pin `mcp>=1.29,<2` or migrate explicitly to stable v2 |\r\n| JSON Schema 2020-12 opportunities | 🔵 info | Tool schemas can now use `oneOf`/`anyOf`/`allOf`, `$ref`, conditionals |\r\n\r\n## How it works\r\n\r\nPure static analysis: manifest parsing + source pattern matching. Nothing is executed, nothing leaves your machine, no network calls.\r\n\r\nSee the [rule catalog](docs/rules.md) for stable IDs and confidence levels, and\r\n[architecture](docs/architecture.md) for the scan pipeline and security boundary. The\r\n[validation log](docs/validation.md) records reproducible scans against real MCP repositories and\r\nthe false-positive fixes they produced.\r\n\r\n## Fixing what it finds\r\n\r\nEvery finding links to the relevant migration doc. For TypeScript, the official codemod does the mechanical parts:\r\n\r\n```\r\nnpx @modelcontextprotocol/codemod@latest v1-to-v2 .\r\n```\r\n\r\nSee also the official [2026-07-28 changelog](https://modelcontextprotocol.io/specification/2026-07-28/changelog) and migration guides: [Upgrading TypeScript SDK v1 to v2](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/migration/upgrade-to-v2.md) · [Adopting the 2026-07-28 revision](https://github.com/modelcontextprotocol/typescript-sdk/blob/main/docs/migration/support-2026-07-28.md) · [Python migration guide](https://py.sdk.modelcontextprotocol.io/v2/migration/)\r\n\r\n`mcp-ready` complements these tools — it tells you *what* needs attention across all four SDK languages; they help you *fix* it.\r\n\r\n## Roadmap\r\n\r\n- [x] SDK detection (TS / Python / Go / C#)\r\n- [x] Initial rule engine (v0.1)\r\n- [x] Markdown report output (v0.1)\r\n- [x] Final 2026-07-28 rule pack (v0.2)\r\n- [x] GitHub Action job summaries (v0.3)\r\n- [x] SARIF output for code scanning (v0.3)\r\n- [x] Checked-in baselines and scoped suppressions (v0.3)\r\n- [x] JSON output for CI pipelines (v0.2)\r\n\r\n## Contributing\r\n\r\nIssues and PRs welcome — especially real-world repos where the scanner gets it wrong. False-positive reports are gold. See [CONTRIBUTING.md](CONTRIBUTING.md).\r\n\r\n## License\r\n\r\n[MIT](LICENSE)\r\n","readmeFilename":"README.md"}