feat: make MCP SDK a peer dependency (#168)

* feat: make MCP SDK a peer dependency

- Move @modelcontextprotocol/sdk from dependencies to peerDependencies (^1.20.0)
- Add to devDependencies for local development (^1.24.3)
- Externalize SDK from all build entry points (app, app-bridge, react, server)

Benefits:
- Consumers control their SDK version
- Deduplication when consumer already has SDK
- Follows pattern of react/zod peer deps

* fix: require SDK ^1.24.0 for Zod 4 compatibility

Earlier SDK versions have Zod type incompatibilities that cause build errors.

* chore: update examples to SDK ^1.24.0 to match peer dep
This commit is contained in:
Olivier Chafik 2025-12-16 22:09:59 +00:00 • committed by GitHub
commit d9006bd69a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 23 additions and 15 deletions

View file

@ -23,13 +23,20 @@ function buildJs(entrypoint: string, opts: Record<string, any> = {}) {
}
await Promise.all([
buildJs("src/app.ts", { outdir: "dist/src" }),
buildJs("src/app.ts", {
outdir: "dist/src",
external: ["@modelcontextprotocol/sdk"],
}),
buildJs("src/app-bridge.ts", {
outdir: "dist/src",
external: ["@modelcontextprotocol/sdk"],
}),
buildJs("src/react/index.tsx", {
outdir: "dist/src/react",
external: ["react", "react-dom"],
external: ["react", "react-dom", "@modelcontextprotocol/sdk"],
}),
buildJs("src/server/index.ts", {
outdir: "dist/src/server",
external: ["@modelcontextprotocol/sdk"],
}),
]);

View file

@ -12,7 +12,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"zod": "^4.1.13"

View file

@ -12,7 +12,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"zod": "^4.1.13"

View file

@ -12,7 +12,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"zod": "^4.1.13"
},
"devDependencies": {

View file

@ -15,7 +15,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"chart.js": "^4.4.0",
"zod": "^4.1.13"
},

View file

@ -15,7 +15,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"zod": "^4.1.13"

View file

@ -15,7 +15,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"chart.js": "^4.4.0",
"zod": "^4.1.13"
},

View file

@ -15,7 +15,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"chart.js": "^4.4.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",

View file

@ -15,7 +15,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"chart.js": "^4.4.0",
"systeminformation": "^5.27.11",
"zod": "^4.1.13"

View file

@ -15,7 +15,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"three": "^0.181.0",

View file

@ -15,7 +15,7 @@
},
"dependencies": {
"@modelcontextprotocol/ext-apps": "../..",
"@modelcontextprotocol/sdk": "^1.22.0",
"@modelcontextprotocol/sdk": "^1.24.0",
"cheerio": "^1.0.0",
"zod": "^4.1.13"
},

View file

@ -59,12 +59,11 @@
},
"author": "Olivier Chafik",
"devDependencies": {
"@modelcontextprotocol/sdk": "^1.24.0",
"@playwright/test": "^1.52.0",
"@types/bun": "^1.3.2",
"@types/react": "^19.2.2",
"@types/react-dom": "^19.2.2",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"concurrently": "^9.2.1",
"cors": "^2.8.5",
"cross-env": "^10.1.0",
@ -72,6 +71,8 @@
"express": "^5.1.0",
"husky": "^9.1.7",
"nodemon": "^3.1.0",
"react": "^19.2.0",
"react-dom": "^19.2.0",
"ts-to-zod": "^5.1.0",
"tsx": "^4.21.0",
"typedoc": "^0.28.14",
@ -79,6 +80,7 @@
"zod": "^4.1.13"
},
"peerDependencies": {
"@modelcontextprotocol/sdk": "^1.24.0",
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0",
"zod": "^3.25.0 || ^4.0.0"
@ -92,7 +94,6 @@
}
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.24.3",
"prettier": "^3.6.2"
},
"optionalDependencies": {