Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
79d11dc
Automatic handling of logging level (#882)
cliffhall Aug 27, 2025
3dd074f
Fix the SDK vs Spec types test that is breaking CI (#908)
cliffhall Aug 29, 2025
bf81793
bump version (#913)
ihrpr Sep 2, 2025
217756e
mcp: update SDK for SEP 973 + add to example server (#904)
jesselumarie Sep 9, 2025
4de54fe
Add the checkIcon test, so that tests aren't failing anymore
dsp-ant Sep 9, 2025
5dd7a2b
feat: add _meta field support to tool definitions (#922)
knguyen-figma Sep 9, 2025
ebf3933
Fix automatic log level handling for sessionless connections (#917)
cliffhall Sep 9, 2025
68baf63
1.17.6 (#936)
ihrpr Sep 11, 2025
8352868
1.18.0 (#937)
ihrpr Sep 11, 2025
b28c297
ignore icons for now (#938)
ihrpr Sep 11, 2025
24b3972
fix: prevent streamable http wite after end from crashing the node pr…
MQ37 Sep 17, 2025
c94ba4b
chore: update version to 1.18.1 for weekly release (#950)
felixweinberger Sep 18, 2025
c342dac
Updates the sampling code example in the README (#958)
viniciuscsouza Sep 22, 2025
9841a6c
Use redirect Uri passed in in `demoInMemoryOAuthProvider` (#931)
TylerLeonhardt Sep 22, 2025
1d475bb
fix(auth-router): correct Protected Resource Metadata for pathful RS …
blustAI Sep 22, 2025
058b87c
chore: update version to 1.18.2 for weekly release (#970)
felixweinberger Sep 25, 2025
7146eed
fix: prevent infinite recursion when server throws 401 after successf…
arjunkmrm Sep 27, 2025
7d29cee
fix: change Icon.sizes from string to string[] (#981)
domdomegg Sep 29, 2025
856d9ec
MCP: Icons type as per SEP-973, spec types test improvements, Impleme…
KKonstantinov Sep 30, 2025
968b951
MCP SDK: Add Prettier to Typescript SDK (#976)
KKonstantinov Oct 2, 2025
1150b1d
run prettier (#995)
ihrpr Oct 2, 2025
29b65b0
1.19.0 (#996)
ihrpr Oct 2, 2025
e0de082
docs: improve main README with better quick start, include examples o…
domdomegg Oct 3, 2025
5530964
chore: add lint:fix script (#1013)
mattzcarey Oct 7, 2025
59cb504
Default to S256 code challenge if not specified in authorization serv…
LucaButBoring Oct 7, 2025
c84ef24
1.20.0 (#1017)
ihrpr Oct 9, 2025
8f4150e
fix: Add Accept header to auth metadata request (#901)
SVLaursen Oct 13, 2025
caa2550
Allow empty string as valid URL in DCR workflow (#987)
fredericbarthelet Oct 13, 2025
0e482db
docs: fix summary contents at readme (#1025)
starfish719 Oct 15, 2025
718120d
chore: bump version to 1.20.1 for release (#1032)
felixweinberger Oct 16, 2025
c543095
fix: Zod to JSONSchema pipe strategies (#962)
pierreliefauche Oct 18, 2025
7098bff
chore: bump version for weekly release (#1042)
felixweinberger Oct 24, 2025
5a8fb39
feat: pluggable JSON schema validator providers (#1012)
mattzcarey Oct 25, 2025
e74a358
Update metadata.ts (#1010)
pcarleton Oct 27, 2025
874aa27
fix: Prefer the `token_endpoint_auth_method` response from DCR regist…
chipgpt Oct 28, 2025
7387c44
Fix: Non-existent tool, disabled tool and inputSchema validation retu…
KKonstantinov Oct 28, 2025
783d53b
chore: bump version to 1.21.0 for release (#1062)
felixweinberger Oct 30, 2025
664e66e
Only use path-based discovery URLs from the authorization server to d…
roadmapper Nov 3, 2025
2166047
Add @deprecated annotations to legacy APIs (#1018)
domdomegg Nov 3, 2025
ee9fed2
fix: Support `WWW-Authenticate` `scope` param for SEP-835 (#983)
chipgpt Nov 3, 2025
9757ace
move CLI script to dedicated scripts directory (#1073)
mattzcarey Nov 4, 2025
11f04e1
Check script which typechecks using Typescripts new Go port (#1075)
mattzcarey Nov 6, 2025
4463737
FIX: use a nightly spec.types.ts (#1087)
mattzcarey Nov 7, 2025
fcc7da8
chore: bump version for release (#1085)
felixweinberger Nov 7, 2025
806d7cf
`registerTool`: accept ZodType<object> for input and output schema (#…
ksinder Nov 7, 2025
f59996a
SEP-1319: Decouple Request Payloads, Remove passthrough iteration, Ty…
KKonstantinov Nov 7, 2025
5e735c1
add pkg-pr-new bot (#1088)
pcarleton Nov 7, 2025
6f20663
Upgrade to Node LTS (#1072)
mattzcarey Nov 7, 2025
2da89db
change step name (#1089)
pcarleton Nov 7, 2025
ce420f8
DRAFT: SEP-1034: Default values for Elicitation Schemas (#1096)
KKonstantinov Nov 11, 2025
9f06b6b
SEP-1330: Compatibility with SEP-1034 (#1100)
KKonstantinov Nov 11, 2025
29cb080
Implementation of SEP-986: Specify Format for Tool Names (#900)
kentcdodds Nov 11, 2025
8019972
[auth] Fix march spec fallback for metadata discovery (#1108)
pcarleton Nov 13, 2025
324d471
chore: bump version for release (#1110)
felixweinberger Nov 13, 2025
98df118
Migrate to vitest from jest (#1074)
mattzcarey Nov 14, 2025
5bcf53f
ci: add workflow_dispatch trigger for manual CI runs (#1114)
felixweinberger Nov 14, 2025
55f02c0
Fix: @types/node incompatibility with vite warnings on npm install (#…
KKonstantinov Nov 17, 2025
a7e525a
Fix: clean up accidental spec.types.ts (#1122)
KKonstantinov Nov 17, 2025
df56e35
fix: Pass RequestInit options to auth requests (#1066)
dsp-ant Nov 17, 2025
4debc74
SEP-1036: URL Elicitation (#1105)
nbarbettini Nov 18, 2025
7e44b10
add none to test and the router. (#1116)
m-henderson Nov 18, 2025
2e67eb5
[auth] Adjust scope management to line up with SEP-835 (#1133)
pcarleton Nov 18, 2025
fe7a938
chore: add .idea/ to .gitignore (#1134)
maxisbey Nov 19, 2025
61db195
chore: remove unused @types/eslint__js dependency (#1128)
mattzcarey Nov 19, 2025
7fca1f2
feat: url based client metadata registration (SEP 991) (#1127)
mattzcarey Nov 19, 2025
418b7f9
feat: zod v4 with backwards compatibility for v3.25+ (#1040)
dclark27 Nov 19, 2025
8eb2bea
fix: remove pnpm lock and regenerate package-lock (#1138)
mattzcarey Nov 19, 2025
8acd838
docs: update installation instructions for zod peer dependency (#1139)
mattzcarey Nov 19, 2025
9438478
Implement SEP-1577 - Sampling With Tools (#1101)
ochafik Nov 19, 2025
4318933
Follow up: unify v3 and v4 zod types via describe matrix and a test h…
KKonstantinov Nov 20, 2025
9df0972
chore: Add deprecated marker to old elicitInput overload (#1142)
nbarbettini Nov 20, 2025
fc4a6ec
fix: Connect error in URL elicitation example (#1136)
nbarbettini Nov 20, 2025
3485a06
Support upscoping on insufficient_scope 403 (#1115)
Nayana-Parameswarappa Nov 20, 2025
33229a4
Support beta releases by publishing with --tag beta (#1146)
felixweinberger Nov 20, 2025
0c1cbf0
Bump version to 1.23.0-beta.0 (#1147)
felixweinberger Nov 20, 2025
41c6b35
SEP-1613: use`.catchall()` on inputSchema/outputSchema to support JSO…
felixweinberger Nov 21, 2025
2a55dfd
sampling: validate tools, tool_use, tool_result constraints (#1156)
ochafik Nov 23, 2025
b59a2bd
fix: React to upstream RC schema changes for form mode elicitation re…
felixweinberger Nov 25, 2025
3c50d07
feat: implement SEP-1699 SSE polling via server-side disconnect (#1129)
felixweinberger Nov 25, 2025
e6c71bb
chore: bump package number for release (#1170)
felixweinberger Nov 25, 2025
e343bf5
fix: update spec links from latest to draft (#1171)
domdomegg Nov 26, 2025
466483f
Make sure to consume HTTP error response bodies (#1173)
GreenStage Nov 26, 2025
2aa697c
docs: add GET request handling for streamableHttp stateless mode (#1161)
saharis9988 Nov 27, 2025
b9538a2
SEP-1686: Tasks (#1041)
LucaButBoring Nov 27, 2025
9203091
Fix JSON parse error on SSE events with empty data (#1184)
felixweinberger Nov 27, 2025
ec33e3f
Fix StreamableHTTPClientTransport instantiation (#944)
yuwzho Nov 28, 2025
cca6ba0
feat: eslint rule to prefer node protocols (#1187)
mattzcarey Nov 28, 2025
42a2f41
fix: call tasks/result to deliver side-channel messages (#1185)
felixweinberger Nov 28, 2025
5e97e1a
Add invalid_target oauth error (rfc 8707) (#1183)
GreenStage Nov 28, 2025
6b90e1a
fix(client): use StreamableHTTPError instead of plain Error in send()…
yamadashy Nov 28, 2025
b4c6090
coerce 'expires_in' to be a number (#1111)
adam-kuhn Nov 28, 2025
5e0302f
Allow HTTP issuer URLs when MCP_DEV_MODE is enabled (#1189)
jerome3o-anthropic Nov 28, 2025
b37f08a
fix: update registerTool signature for proper typed ToolCallback (#1188)
mattzcarey Nov 28, 2025
4fb4d4d
SEP-1046: Client credentials flow for M2M without user interaction (#…
KKonstantinov Nov 28, 2025
ae0eaf4
adds the transitive @types/express-serve-static-core dependency as a …
mgyarmathy Dec 1, 2025
5aaf6ee
Fix optional argument handling in prompts for Zod V4 (#1199)
filip-bartuska-ipf Dec 1, 2025
ace9b62
fix hanging stdio servers (#1200)
mattzcarey Dec 1, 2025
74ab69f
README refactor (#1197)
KKonstantinov Dec 1, 2025
6c863c8
[Docs] Fix typo (#1067)
koic Dec 1, 2025
fab7e1e
feat: add closeSSEStream callback to RequestHandlerExtra (#1166)
felixweinberger Dec 1, 2025
f67fc2f
fix: improve SSE reconnection behavior (#1191)
felixweinberger Dec 1, 2025
5ceabfb
fix: normalize headers in sse transport (#856)
marcrasi Dec 1, 2025
4b651b8
feat: add closeStandaloneSSEStream for GET stream polling (#1203)
felixweinberger Dec 1, 2025
a6ee2cb
fix: normalize null to undefined in ElicitResultSchema content field …
mattzcarey Dec 1, 2025
6083600
Modify Origin header validation in validateRequestHeaders (streamable…
jacopoc Dec 2, 2025
8204126
fix: allow zod 4 transformations (#1213)
mattzcarey Dec 2, 2025
cf51343
feat: backwards-compatible createMessage overloads for SEP-1577 (#1212)
felixweinberger Dec 2, 2025
09623e2
Merge commit from fork
pcarleton Dec 2, 2025
356b7e6
chore: bump version for release (#1215)
felixweinberger Dec 2, 2025
bfad917
fix(streamableHttp): fix infinite retries when maxRetries is set to 0…
mrorigo Dec 2, 2025
600859f
chore: update protocol version to 2025-11-25 (#1218)
dsp-ant Dec 2, 2025
6dd7cd4
chore: bump version for release (#1219)
felixweinberger Dec 2, 2025
4b5c25d
feat: add optional resource annotations (#954)
vhorvath2010 Dec 3, 2025
401a189
chore: refresh CLAUDE.md (#1217)
LucaButBoring Dec 3, 2025
7c9257c
refactor: make Server class framework-agnostic by moving express to s…
cytle Dec 3, 2025
d23674d
chore: bump version to 1.24.2 (#1224)
pcarleton Dec 3, 2025
545dbe1
chore: fix dev dependency security vulnerabilities (#1227)
felixweinberger Dec 3, 2025
2d2c8ff
chore(deps): bump express from 5.0.1 to 5.2.1 in the npm_and_yarn gro…
dependabot[bot] Dec 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 73 additions & 46 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,51 +1,78 @@
on:
push:
branches:
- main
pull_request:
release:
types: [published]
push:
branches:
- main
pull_request:
workflow_dispatch:
release:
types: [published]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm

- run: npm ci
- run: npm run build
- run: npm test
- run: npm run lint

publish:
runs-on: ubuntu-latest
if: github.event_name == 'release'
environment: release
needs: build

permissions:
contents: read
id-token: write

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 18
cache: npm
registry-url: 'https://registry.npmjs.org'

- run: npm ci

- run: npm publish --provenance --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm

- run: npm ci
- run: npm run check
- run: npm run build

test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
node-version: [18, 24]

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: npm

- run: npm ci
- run: npm test

publish:
runs-on: ubuntu-latest
if: github.event_name == 'release'
environment: release
needs: [build, test]

permissions:
contents: read
id-token: write

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm
registry-url: 'https://registry.npmjs.org'

- run: npm ci

- name: Determine npm tag
id: npm-tag
run: |
VERSION=$(node -p "require('./package.json').version")
if [[ "$VERSION" == *"-beta"* ]]; then
echo "tag=--tag beta" >> $GITHUB_OUTPUT
else
echo "tag=" >> $GITHUB_OUTPUT
fi

- run: npm publish --provenance --access public ${{ steps.npm-tag.outputs.tag }}
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
27 changes: 27 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Publish Any Commit
permissions:
contents: read
on:
pull_request:
push:
branches:
- '**'
tags:
- '!**'

jobs:
pkg-publish:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
cache: npm

- run: npm ci
- name: Build
run: npm run build
- name: Publish
run: npx pkg-pr-new publish
71 changes: 71 additions & 0 deletions .github/workflows/update-spec-types.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Update Spec Types

on:
schedule:
# Run nightly at 4 AM UTC
- cron: '0 4 * * *'
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
update-spec-types:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '24'

- name: Install dependencies
run: npm ci

- name: Fetch latest spec types
run: npm run fetch:spec-types

- name: Check for changes
id: check_changes
run: |
if git diff --quiet src/spec.types.ts; then
echo "has_changes=false" >> $GITHUB_OUTPUT
else
echo "has_changes=true" >> $GITHUB_OUTPUT
LATEST_SHA=$(grep "Last updated from commit:" src/spec.types.ts | cut -d: -f2 | tr -d ' ')
echo "sha=$LATEST_SHA" >> $GITHUB_OUTPUT
fi
- name: Create Pull Request
if: steps.check_changes.outputs.has_changes == 'true'
env:
GH_TOKEN: ${{ github.token }}
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git checkout -B update-spec-types
git add src/spec.types.ts
git commit -m "chore: update spec.types.ts from upstream"
git push -f origin update-spec-types
# Create PR if it doesn't exist, or update if it does
PR_BODY="This PR updates \`src/spec.types.ts\` from the Model Context Protocol specification.
Source file: https://github.com/modelcontextprotocol/modelcontextprotocol/blob/${{ steps.check_changes.outputs.sha }}/schema/draft/schema.ts
This is an automated update triggered by the nightly cron job."
if gh pr view update-spec-types &>/dev/null; then
echo "PR already exists, updating description..."
gh pr edit update-spec-types --body "$PR_BODY"
else
gh pr create \
--title "chore: update spec.types.ts from upstream" \
--body "$PR_BODY" \
--base main \
--head update-spec-types
fi
6 changes: 3 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@ web_modules/
# Output of 'npm pack'
*.tgz

# Output of 'npm run fetch:spec-types'
spec.types.ts

# Yarn Integrity file
.yarn-integrity

Expand Down Expand Up @@ -133,3 +130,6 @@ out

.DS_Store
dist/

# IDE
.idea/
13 changes: 13 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Ignore artifacts:
build
dist
coverage
*-lock.*
node_modules
**/build
**/dist
.github/CODEOWNERS
pnpm-lock.yaml

# Ignore generated files
src/spec.types.ts
20 changes: 20 additions & 0 deletions .prettierrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"printWidth": 140,
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": true,
"bracketSameLine": false,
"proseWrap": "always",
"arrowParens": "avoid",
"overrides": [
{
"files": "**/*.md",
"options": {
"printWidth": 280
}
}
]
}
Loading