Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Client implementation of MCP auth #144

Merged
merged 25 commits into from
Feb 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
0db3da4
Install pkce-challenge library
jspahrsummers Feb 6, 2025
0bc3a74
OAuth metadata discovery
jspahrsummers Feb 6, 2025
c39c8bf
WIP start authorization flow
jspahrsummers Feb 6, 2025
8a26e2d
Validate auth flow is supported
jspahrsummers Feb 6, 2025
956f665
Implement token exchange
jspahrsummers Feb 6, 2025
fe24aa5
Remove nested folder for auth
jspahrsummers Feb 6, 2025
62d67ad
Add refresh token support
jspahrsummers Feb 6, 2025
2b9a581
Add dynamic client registration
jspahrsummers Feb 11, 2025
d17a382
Auth tests and fixes
jspahrsummers Feb 11, 2025
4c87fb5
Prefix client metadata + info with `OAuth`
jspahrsummers Feb 11, 2025
fa50204
Fix import of auth.js in test
jspahrsummers Feb 11, 2025
47fd6df
Higher-level auth flow
jspahrsummers Feb 11, 2025
9fea0af
Correctly provide client ID (+ secret) to every auth step
jspahrsummers Feb 11, 2025
8bff256
Preemptively bump package version
jspahrsummers Feb 11, 2025
141f3f5
Don't need full OAuth client metadata in response
jspahrsummers Feb 11, 2025
fceebdc
Add `MCP-Protocol-Version` header
jspahrsummers Feb 11, 2025
03e583b
Add support for AuthProvider in SSEClientTransport
jspahrsummers Feb 11, 2025
9262151
Re-auth upon 401 when POSTing
jspahrsummers Feb 11, 2025
3e2dd35
Fix tests
jspahrsummers Feb 11, 2025
d47d88b
Auth tests for SSEClientTransport
jspahrsummers Feb 12, 2025
36999dc
Fix `fetch` test polluting auth tests
jspahrsummers Feb 12, 2025
79d2db3
Missed one `await server.close()`
jspahrsummers Feb 12, 2025
c0ebe90
Test transparent token refresh in SSEClientTransport
jspahrsummers Feb 12, 2025
44a4408
Code review comments
jspahrsummers Feb 17, 2025
b1f4b65
Improve auth docs and add `finishAuth` convenience method
jspahrsummers Feb 17, 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
4 changes: 4 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ export default {
...defaultEsmPreset,
moduleNameMapper: {
"^(\\.{1,2}/.*)\\.js$": "$1",
"^pkce-challenge$": "<rootDir>/src/__mocks__/pkce-challenge.ts"
},
transformIgnorePatterns: [
"/node_modules/(?!eventsource)/"
],
testPathIgnorePatterns: ["/node_modules/", "/dist/"],
};
14 changes: 12 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@modelcontextprotocol/sdk",
"version": "1.4.1",
"version": "1.5.0",
"description": "Model Context Protocol implementation for TypeScript",
"license": "MIT",
"author": "Anthropic, PBC (https://anthropic.com)",
Expand Down Expand Up @@ -48,6 +48,7 @@
"dependencies": {
"content-type": "^1.0.5",
"eventsource": "^3.0.2",
"pkce-challenge": "^4.1.0",
"raw-body": "^3.0.0",
"zod": "^3.23.8",
"zod-to-json-schema": "^3.24.1"
Expand All @@ -73,4 +74,4 @@
"resolutions": {
"strip-ansi": "6.0.1"
}
}
}
6 changes: 6 additions & 0 deletions src/__mocks__/pkce-challenge.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export default function pkceChallenge() {
return {
code_verifier: "test_verifier",
code_challenge: "test_challenge",
};
}
Loading
Loading