The four v2 SDK packages (`client`, `core`, `server`, `server-legacy`) plus `ext-apps` were declared in the root manifest *and* again in clients/web, cli, and tui, so each client installed its own copy. Node resolution walks up and the root install is on every client's chain — and the root manifest is already the documented source of truth for what ships — so the per-client entries were duplicates of a decision made at the root, and they had already drifted: before this change the tree carried ext-apps 1.7.4 at the root and 1.7.5 under clients/web, dragging in two copies of the v1 `@modelcontextprotocol/sdk` (1.29.0 and 1.30.0) through ext-apps' peer dependency. Nothing imports the v1 SDK; it is not in any manifest of ours, only a peer of ext-apps, so consolidating ext-apps is the only lever over it. After a clean install there is now exactly one copy of each, at the root. `npm update` then moves ext-apps to 1.7.5 and its SDK peer to 1.30.0, whose widened `@hono/node-server` range (`^1.19.9 || ^2.0.5`) also drops a nested duplicate of that package. `express` needed a real home to make this work. `test-servers/src` imports it, but no manifest declared it: it was reaching `clients/cli/node_modules` only as a peer of `express-rate-limit` under `@modelcontextprotocol/server-legacy`, so removing that entry took express with it and every cli test that spawns a test server failed to resolve it. It is now a root devDependency — test-servers is root-owned code with no manifest of its own — and `vitest.shared.mts` resolves it from the root, joining `yaml`, which was already the precedent for exactly this case. The clients/web duplicate is dropped; its only reference is a type-only import covered by `@types/express`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HDdo1rNRVQnVRRdsqSrvG3
57 lines
1.8 KiB
JSON
57 lines
1.8 KiB
JSON
{
|
|
"name": "@modelcontextprotocol/inspector-cli",
|
|
"private": true,
|
|
"description": "CLI for the Model Context Protocol inspector",
|
|
"license": "MIT",
|
|
"type": "module",
|
|
"main": "build/index.js",
|
|
"exports": {
|
|
".": "./build/index.js"
|
|
},
|
|
"bin": {
|
|
"mcp-inspector-cli": "./build/index.js"
|
|
},
|
|
"files": [
|
|
"build"
|
|
],
|
|
"scripts": {
|
|
"build": "tsup",
|
|
"typecheck": "tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.test.json",
|
|
"validate": "npm run format:check && npm run lint && npm run typecheck && npm run test",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "npm run test-servers:build && npm run build && vitest run --coverage",
|
|
"test-servers:build": "tsc -p ../../test-servers --noCheck",
|
|
"test:cli": "vitest run cli.test.ts",
|
|
"test:cli-tools": "vitest run tools.test.ts",
|
|
"test:cli-headers": "vitest run headers.test.ts",
|
|
"test:cli-metadata": "vitest run metadata.test.ts",
|
|
"pretest": "npm run test-servers:build && npm run build",
|
|
"lint": "eslint .",
|
|
"format": "prettier --write src __tests__ \"*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}\"",
|
|
"format:check": "prettier --check src __tests__ \"*.{ts,tsx,mts,cts,js,jsx,mjs,cjs}\""
|
|
},
|
|
"dependencies": {
|
|
"@napi-rs/keyring": "^1.3.0",
|
|
"ajv": "^8.17.1",
|
|
"atomically": "^2.1.1",
|
|
"commander": "^13.1.0",
|
|
"open": "^10.2.0",
|
|
"pino": "^9.14.0",
|
|
"undici": "^8.5.0",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@types/express": "^5.0.6",
|
|
"@types/node": "^24.12.4",
|
|
"@vitest/coverage-v8": "^4.1.10",
|
|
"eslint": "^10.8.0",
|
|
"globals": "^17.4.0",
|
|
"prettier": "3.8.4",
|
|
"tsup": "^8.5.0",
|
|
"typescript": "~5.9.3",
|
|
"typescript-eslint": "^8.56.1",
|
|
"vitest": "^4.1.10"
|
|
}
|
|
}
|