Skip to content

Commit 117d2d2

Browse files
Merge branch 'main' into fix/validate-client-metadata-url
2 parents 276b439 + df4b6cc commit 117d2d2

78 files changed

Lines changed: 2618 additions & 305 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@modelcontextprotocol/fastify': minor
3+
---
4+
5+
Add Fastify middleware adapter for MCP servers, following the same pattern as the Express and Hono adapters.

.changeset/drop-zod-peer-dep.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@modelcontextprotocol/client': patch
3+
'@modelcontextprotocol/server': patch
4+
---
5+
6+
Drop `zod` from `peerDependencies` (kept as direct dependency)
7+
8+
Since Standard Schema support landed, `zod` is purely an internal runtime dependency used for protocol message parsing. User-facing schemas (`registerTool`, `registerPrompt`) accept any Standard Schema library. `zod` remains in `dependencies` and auto-installs; users no longer
9+
need to install it alongside the SDK.

.changeset/fast-dragons-lead.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
'@modelcontextprotocol/express': patch
3+
'@modelcontextprotocol/fastify': patch
4+
'@modelcontextprotocol/hono': patch
5+
'@modelcontextprotocol/node': patch
6+
'@modelcontextprotocol/client': patch
7+
'@modelcontextprotocol/server': patch
8+
---
9+
10+
tsdown exports resolution fix
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@modelcontextprotocol/server': patch
3+
---
4+
5+
fix(server): propagate negotiated protocol version to transport in _oninitialize
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@modelcontextprotocol/server': patch
3+
---
4+
5+
Prevent stack overflow in StreamableHTTPServerTransport.close() with re-entrant guard
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@modelcontextprotocol/client': patch
3+
---
4+
5+
Fix StreamableHTTPClientTransport to handle error responses in SSE streams

.changeset/odd-forks-enjoy.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@modelcontextprotocol/client": patch
3+
---
4+
5+
fix(client): append custom Accept headers to spec-required defaults in StreamableHTTPClientTransport
6+
7+
Custom Accept headers provided via `requestInit.headers` are now appended to the spec-mandated Accept types instead of being overwritten. This ensures the required media types (`application/json, text/event-stream` for POST; `text/event-stream` for GET SSE) are always present while allowing users to include additional types for proxy/gateway routing.

.changeset/pre.json

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
{
2+
"mode": "pre",
3+
"tag": "alpha",
4+
"initialVersions": {
5+
"@modelcontextprotocol/eslint-config": "2.0.0",
6+
"@modelcontextprotocol/tsconfig": "2.0.0",
7+
"@modelcontextprotocol/vitest-config": "2.0.0",
8+
"@modelcontextprotocol/examples-client": "2.0.0-alpha.0",
9+
"@modelcontextprotocol/examples-client-quickstart": "2.0.0-alpha.0",
10+
"@modelcontextprotocol/examples-server": "2.0.0-alpha.0",
11+
"@modelcontextprotocol/examples-server-quickstart": "2.0.0-alpha.0",
12+
"@modelcontextprotocol/examples-shared": "2.0.0-alpha.0",
13+
"@modelcontextprotocol/client": "2.0.0-alpha.0",
14+
"@modelcontextprotocol/core": "2.0.0-alpha.0",
15+
"@modelcontextprotocol/express": "2.0.0-alpha.0",
16+
"@modelcontextprotocol/fastify": "2.0.0-alpha.0",
17+
"@modelcontextprotocol/hono": "2.0.0-alpha.0",
18+
"@modelcontextprotocol/node": "2.0.0-alpha.0",
19+
"@modelcontextprotocol/server": "2.0.0-alpha.0",
20+
"@modelcontextprotocol/test-conformance": "2.0.0-alpha.0",
21+
"@modelcontextprotocol/test-helpers": "2.0.0-alpha.0",
22+
"@modelcontextprotocol/test-integration": "2.0.0-alpha.0"
23+
},
24+
"changesets": [
25+
"abort-handlers-on-close",
26+
"add-fastify-middleware",
27+
"add-hono-peer-dep",
28+
"add-resource-size-field",
29+
"brave-lions-glow",
30+
"busy-rice-smoke",
31+
"busy-weeks-hang",
32+
"cyan-cycles-pump",
33+
"drop-zod-peer-dep",
34+
"expose-auth-server-discovery",
35+
"extract-task-manager",
36+
"fast-dragons-lead",
37+
"finish-sdkerror-capability",
38+
"fix-abort-listener-leak",
39+
"fix-oauth-5xx-discovery",
40+
"fix-onerror-callbacks",
41+
"fix-server-protocol-version",
42+
"fix-session-status-codes",
43+
"fix-stdio-epipe-crash",
44+
"fix-stdio-windows-hide",
45+
"fix-streamable-http-error-response",
46+
"fix-task-session-isolation",
47+
"fix-transport-exact-optional-property-types",
48+
"fix-unknown-tool-protocol-error",
49+
"funky-baths-attack",
50+
"heavy-walls-swim",
51+
"oauth-error-http200",
52+
"quick-islands-occur",
53+
"reconnection-scheduler",
54+
"remove-websocket-transport",
55+
"respect-capability-negotiation",
56+
"rich-hounds-report",
57+
"schema-object-type-for-unions",
58+
"shy-times-learn",
59+
"spotty-cats-tickle",
60+
"stdio-skip-non-json",
61+
"support-standard-json-schema",
62+
"tame-camels-greet",
63+
"tender-snails-fold",
64+
"token-provider-composable-auth",
65+
"twelve-dodos-taste",
66+
"use-scopes-supported-in-dcr"
67+
]
68+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@modelcontextprotocol/core': patch
3+
---
4+
5+
Allow additional JSON Schema properties in elicitInput's requestedSchema type by adding .catchall(z.unknown()), matching the pattern used by inputSchema. This fixes type incompatibility when using Zod v4's .toJSONSchema() output which includes extra properties like $schema and additionalProperties.

.github/workflows/main.yml

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ on:
44
- main
55
pull_request:
66
workflow_dispatch:
7-
release:
8-
types: [published]
97

108
concurrency:
119
group: ${{ github.workflow }}-${{ github.ref }}
@@ -94,53 +92,3 @@ jobs:
9492
- name: Run ${{ matrix.runtime }} integration tests
9593
run: pnpm --filter @modelcontextprotocol/test-integration test:integration:${{ matrix.runtime }}
9694

97-
publish:
98-
runs-on: ubuntu-latest
99-
if: github.event_name == 'release'
100-
environment: release
101-
needs: [build, test, test-runtimes]
102-
103-
permissions:
104-
contents: read
105-
id-token: write
106-
107-
steps:
108-
- uses: actions/checkout@v6
109-
110-
- name: Install pnpm
111-
uses: pnpm/action-setup@fc06bc1257f339d1d5d8b3a19a8cae5388b55320 # v5.0.0
112-
id: pnpm-install
113-
with:
114-
run_install: false
115-
- uses: actions/setup-node@v6
116-
with:
117-
node-version: 24
118-
cache: pnpm
119-
cache-dependency-path: pnpm-lock.yaml
120-
registry-url: 'https://registry.npmjs.org'
121-
- run: pnpm install
122-
123-
- name: Determine npm tag
124-
id: npm-tag
125-
run: |
126-
VERSION=$(node -p "require('./package.json').version")
127-
# Check if this is a beta release
128-
if [[ "$VERSION" == *"-beta"* ]]; then
129-
echo "tag=--tag beta" >> $GITHUB_OUTPUT
130-
# Check if this release is from a non-primary branch (patch/maintenance release)
131-
elif [[ "${{ github.event.release.target_commitish }}" != "main" && "${{ github.event.release.target_commitish }}" != "v1.x" ]]; then
132-
# Use "release-X.Y" as tag for old branch releases (e.g., "release-1.23" for 1.23.x)
133-
# npm tags are mutable pointers to versions (like "latest" pointing to 1.24.3).
134-
# Using "release-1.23" means users can `npm install @modelcontextprotocol/sdk@release-1.23`
135-
# to get the latest patch on that minor version, and the tag updates if we
136-
# release 1.23.2, 1.23.3, etc.
137-
# Note: Can't use "v1.23" because npm rejects tags that look like semver ranges.
138-
MAJOR_MINOR=$(echo "$VERSION" | cut -d. -f1,2)
139-
echo "tag=--tag release-${MAJOR_MINOR}" >> $GITHUB_OUTPUT
140-
else
141-
echo "tag=" >> $GITHUB_OUTPUT
142-
fi
143-
144-
- run: pnpm publish --provenance --access public ${{ steps.npm-tag.outputs.tag }}
145-
env:
146-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

0 commit comments

Comments
 (0)