Commit d64230d
committed
feat(compat): restore Resource-Server auth glue in @modelcontextprotocol/express
Adds first-class (not deprecated) OAuth Resource-Server helpers to the
Express adapter, restoring the v1 src/server/auth pieces that an MCP
server needs when it delegates to an external Authorization Server:
- requireBearerAuth: Express middleware that validates a Bearer token
via a pluggable OAuthTokenVerifier, attaches AuthInfo to req.auth,
and on failure emits RFC 6750 WWW-Authenticate challenges (with
optional resource_metadata pointer per RFC 9728).
- mcpAuthMetadataRouter: serves RFC 9728 Protected Resource Metadata at
/.well-known/oauth-protected-resource[/<path>] and mirrors the AS
metadata at /.well-known/oauth-authorization-server, with permissive
CORS and a GET/OPTIONS allow-list.
- getOAuthProtectedResourceMetadataUrl: builds the path-aware PRM URL
for a given server URL.
- OAuthTokenVerifier interface, plus metadataHandler / allowedMethods
building blocks.
Adapted to v2's single OAuthError + OAuthErrorCode (no per-code
subclasses) and to types re-exported via @modelcontextprotocol/server.
Adds cors as a runtime dependency and supertest as a dev dependency for
the integration tests.1 parent 9ed62fe commit d64230d
File tree
14 files changed
+591
-174
lines changed- .changeset
- examples
- server/src
- packages/middleware/express
- src
- auth
- test/auth
14 files changed
+591
-174
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
| 12 | + | |
| 13 | + | |
19 | 14 | | |
20 | 15 | | |
21 | 16 | | |
| |||
235 | 230 | | |
236 | 231 | | |
237 | 232 | | |
238 | | - | |
| 233 | + | |
239 | 234 | | |
240 | 235 | | |
241 | 236 | | |
242 | 237 | | |
243 | 238 | | |
244 | 239 | | |
245 | 240 | | |
| 241 | + | |
246 | 242 | | |
247 | | - | |
248 | | - | |
249 | | - | |
| 243 | + | |
250 | 244 | | |
251 | 245 | | |
252 | 246 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
| 3 | + | |
| 4 | + | |
10 | 5 | | |
11 | 6 | | |
12 | 7 | | |
| |||
25 | 20 | | |
26 | 21 | | |
27 | 22 | | |
28 | | - | |
29 | 23 | | |
30 | 24 | | |
31 | 25 | | |
| |||
624 | 618 | | |
625 | 619 | | |
626 | 620 | | |
627 | | - | |
| 621 | + | |
628 | 622 | | |
629 | 623 | | |
630 | 624 | | |
631 | 625 | | |
632 | 626 | | |
633 | 627 | | |
634 | 628 | | |
| 629 | + | |
635 | 630 | | |
636 | | - | |
637 | | - | |
638 | | - | |
| 631 | + | |
639 | 632 | | |
640 | 633 | | |
641 | 634 | | |
| |||
651 | 644 | | |
652 | 645 | | |
653 | 646 | | |
654 | | - | |
655 | | - | |
| 647 | + | |
| 648 | + | |
656 | 649 | | |
657 | 650 | | |
658 | 651 | | |
| |||
742 | 735 | | |
743 | 736 | | |
744 | 737 | | |
745 | | - | |
746 | | - | |
| 738 | + | |
| 739 | + | |
747 | 740 | | |
748 | 741 | | |
749 | 742 | | |
| |||
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
12 | 15 | | |
13 | 16 | | |
14 | 17 | | |
| |||
21 | 24 | | |
22 | 25 | | |
23 | 26 | | |
24 | | - | |
25 | 27 | | |
26 | 28 | | |
27 | 29 | | |
| |||
284 | 286 | | |
285 | 287 | | |
286 | 288 | | |
287 | | - | |
288 | | - | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
289 | 293 | | |
290 | | - | |
291 | | - | |
292 | | - | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
298 | | - | |
299 | | - | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
300 | 297 | | |
301 | | - | |
302 | | - | |
303 | 298 | | |
304 | 299 | | |
305 | 300 | | |
306 | | - | |
307 | 301 | | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
| 302 | + | |
312 | 303 | | |
313 | | - | |
| 304 | + | |
314 | 305 | | |
315 | 306 | | |
316 | | - | |
317 | | - | |
318 | | - | |
319 | | - | |
320 | | - | |
321 | 307 | | |
322 | 308 | | |
323 | 309 | | |
324 | 310 | | |
325 | 311 | | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
331 | | - | |
332 | | - | |
333 | | - | |
334 | | - | |
335 | | - | |
336 | | - | |
337 | | - | |
338 | | - | |
339 | | - | |
340 | | - | |
341 | | - | |
| 312 | + | |
342 | 313 | | |
343 | | - | |
| 314 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
| 5 | + | |
10 | 6 | | |
11 | | - | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
44 | | - | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
45 | 47 | | |
46 | 48 | | |
47 | | - | |
| 49 | + | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
51 | 53 | | |
52 | 54 | | |
53 | 55 | | |
54 | 56 | | |
| 57 | + | |
55 | 58 | | |
56 | 59 | | |
| 60 | + | |
| 61 | + | |
57 | 62 | | |
58 | 63 | | |
59 | 64 | | |
| |||
0 commit comments