@modelcontextprotocol/sdk 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/dist/cjs/client/auth.d.ts +116 -0
  2. package/dist/cjs/client/auth.d.ts.map +1 -0
  3. package/dist/cjs/client/auth.js +239 -0
  4. package/dist/cjs/client/auth.js.map +1 -0
  5. package/dist/cjs/client/sse.d.ts +43 -4
  6. package/dist/cjs/client/sse.d.ts.map +1 -1
  7. package/dist/cjs/client/sse.js +72 -5
  8. package/dist/cjs/client/sse.js.map +1 -1
  9. package/dist/cjs/server/auth/clients.d.ts +19 -0
  10. package/dist/cjs/server/auth/clients.d.ts.map +1 -0
  11. package/dist/cjs/server/auth/clients.js +3 -0
  12. package/dist/cjs/server/auth/clients.js.map +1 -0
  13. package/dist/cjs/server/auth/errors.d.ts +126 -0
  14. package/dist/cjs/server/auth/errors.d.ts.map +1 -0
  15. package/dist/cjs/server/auth/errors.js +189 -0
  16. package/dist/cjs/server/auth/errors.js.map +1 -0
  17. package/dist/cjs/server/auth/handlers/authorize.d.ts +13 -0
  18. package/dist/cjs/server/auth/handlers/authorize.d.ts.map +1 -0
  19. package/dist/cjs/server/auth/handlers/authorize.js +149 -0
  20. package/dist/cjs/server/auth/handlers/authorize.js.map +1 -0
  21. package/dist/cjs/server/auth/handlers/metadata.d.ts +4 -0
  22. package/dist/cjs/server/auth/handlers/metadata.d.ts.map +1 -0
  23. package/dist/cjs/server/auth/handlers/metadata.js +21 -0
  24. package/dist/cjs/server/auth/handlers/metadata.js.map +1 -0
  25. package/dist/cjs/server/auth/handlers/register.d.ts +23 -0
  26. package/dist/cjs/server/auth/handlers/register.d.ts.map +1 -0
  27. package/dist/cjs/server/auth/handlers/register.js +74 -0
  28. package/dist/cjs/server/auth/handlers/register.js.map +1 -0
  29. package/dist/cjs/server/auth/handlers/revoke.d.ts +13 -0
  30. package/dist/cjs/server/auth/handlers/revoke.d.ts.map +1 -0
  31. package/dist/cjs/server/auth/handlers/revoke.js +67 -0
  32. package/dist/cjs/server/auth/handlers/revoke.js.map +1 -0
  33. package/dist/cjs/server/auth/handlers/token.d.ts +13 -0
  34. package/dist/cjs/server/auth/handlers/token.d.ts.map +1 -0
  35. package/dist/cjs/server/auth/handlers/token.js +107 -0
  36. package/dist/cjs/server/auth/handlers/token.js.map +1 -0
  37. package/dist/cjs/server/auth/middleware/allowedMethods.d.ts +9 -0
  38. package/dist/cjs/server/auth/middleware/allowedMethods.d.ts.map +1 -0
  39. package/dist/cjs/server/auth/middleware/allowedMethods.js +23 -0
  40. package/dist/cjs/server/auth/middleware/allowedMethods.js.map +1 -0
  41. package/dist/cjs/server/auth/middleware/bearerAuth.d.ts +28 -0
  42. package/dist/cjs/server/auth/middleware/bearerAuth.d.ts.map +1 -0
  43. package/dist/cjs/server/auth/middleware/bearerAuth.js +55 -0
  44. package/dist/cjs/server/auth/middleware/bearerAuth.js.map +1 -0
  45. package/dist/cjs/server/auth/middleware/clientAuth.d.ts +19 -0
  46. package/dist/cjs/server/auth/middleware/clientAuth.d.ts.map +1 -0
  47. package/dist/cjs/server/auth/middleware/clientAuth.js +53 -0
  48. package/dist/cjs/server/auth/middleware/clientAuth.js.map +1 -0
  49. package/dist/cjs/server/auth/provider.d.ts +50 -0
  50. package/dist/cjs/server/auth/provider.d.ts.map +1 -0
  51. package/dist/cjs/server/auth/provider.js +3 -0
  52. package/dist/cjs/server/auth/provider.js.map +1 -0
  53. package/dist/cjs/server/auth/router.d.ts +36 -0
  54. package/dist/cjs/server/auth/router.d.ts.map +1 -0
  55. package/dist/cjs/server/auth/router.js +68 -0
  56. package/dist/cjs/server/auth/router.js.map +1 -0
  57. package/dist/cjs/server/auth/types.d.ts +22 -0
  58. package/dist/cjs/server/auth/types.d.ts.map +1 -0
  59. package/dist/cjs/server/auth/types.js +3 -0
  60. package/dist/cjs/server/auth/types.js.map +1 -0
  61. package/dist/cjs/server/mcp.d.ts.map +1 -1
  62. package/dist/cjs/server/mcp.js +3 -1
  63. package/dist/cjs/server/mcp.js.map +1 -1
  64. package/dist/cjs/shared/auth.d.ts +271 -0
  65. package/dist/cjs/shared/auth.d.ts.map +1 -0
  66. package/dist/cjs/shared/auth.js +106 -0
  67. package/dist/cjs/shared/auth.js.map +1 -0
  68. package/dist/cjs/types.d.ts.map +1 -1
  69. package/dist/cjs/types.js +1 -0
  70. package/dist/cjs/types.js.map +1 -1
  71. package/dist/esm/client/auth.d.ts +116 -0
  72. package/dist/esm/client/auth.d.ts.map +1 -0
  73. package/dist/esm/client/auth.js +226 -0
  74. package/dist/esm/client/auth.js.map +1 -0
  75. package/dist/esm/client/sse.d.ts +43 -4
  76. package/dist/esm/client/sse.d.ts.map +1 -1
  77. package/dist/esm/client/sse.js +72 -5
  78. package/dist/esm/client/sse.js.map +1 -1
  79. package/dist/esm/server/auth/clients.d.ts +19 -0
  80. package/dist/esm/server/auth/clients.d.ts.map +1 -0
  81. package/dist/esm/server/auth/clients.js +2 -0
  82. package/dist/esm/server/auth/clients.js.map +1 -0
  83. package/dist/esm/server/auth/errors.d.ts +126 -0
  84. package/dist/esm/server/auth/errors.d.ts.map +1 -0
  85. package/dist/esm/server/auth/errors.js +169 -0
  86. package/dist/esm/server/auth/errors.js.map +1 -0
  87. package/dist/esm/server/auth/handlers/authorize.d.ts +13 -0
  88. package/dist/esm/server/auth/handlers/authorize.d.ts.map +1 -0
  89. package/dist/esm/server/auth/handlers/authorize.js +143 -0
  90. package/dist/esm/server/auth/handlers/authorize.js.map +1 -0
  91. package/dist/esm/server/auth/handlers/metadata.d.ts +4 -0
  92. package/dist/esm/server/auth/handlers/metadata.d.ts.map +1 -0
  93. package/dist/esm/server/auth/handlers/metadata.js +15 -0
  94. package/dist/esm/server/auth/handlers/metadata.js.map +1 -0
  95. package/dist/esm/server/auth/handlers/register.d.ts +23 -0
  96. package/dist/esm/server/auth/handlers/register.d.ts.map +1 -0
  97. package/dist/esm/server/auth/handlers/register.js +68 -0
  98. package/dist/esm/server/auth/handlers/register.js.map +1 -0
  99. package/dist/esm/server/auth/handlers/revoke.d.ts +13 -0
  100. package/dist/esm/server/auth/handlers/revoke.d.ts.map +1 -0
  101. package/dist/esm/server/auth/handlers/revoke.js +61 -0
  102. package/dist/esm/server/auth/handlers/revoke.js.map +1 -0
  103. package/dist/esm/server/auth/handlers/token.d.ts +13 -0
  104. package/dist/esm/server/auth/handlers/token.d.ts.map +1 -0
  105. package/dist/esm/server/auth/handlers/token.js +101 -0
  106. package/dist/esm/server/auth/handlers/token.js.map +1 -0
  107. package/dist/esm/server/auth/middleware/allowedMethods.d.ts +9 -0
  108. package/dist/esm/server/auth/middleware/allowedMethods.d.ts.map +1 -0
  109. package/dist/esm/server/auth/middleware/allowedMethods.js +20 -0
  110. package/dist/esm/server/auth/middleware/allowedMethods.js.map +1 -0
  111. package/dist/esm/server/auth/middleware/bearerAuth.d.ts +28 -0
  112. package/dist/esm/server/auth/middleware/bearerAuth.d.ts.map +1 -0
  113. package/dist/esm/server/auth/middleware/bearerAuth.js +52 -0
  114. package/dist/esm/server/auth/middleware/bearerAuth.js.map +1 -0
  115. package/dist/esm/server/auth/middleware/clientAuth.d.ts +19 -0
  116. package/dist/esm/server/auth/middleware/clientAuth.d.ts.map +1 -0
  117. package/dist/esm/server/auth/middleware/clientAuth.js +50 -0
  118. package/dist/esm/server/auth/middleware/clientAuth.js.map +1 -0
  119. package/dist/esm/server/auth/provider.d.ts +50 -0
  120. package/dist/esm/server/auth/provider.d.ts.map +1 -0
  121. package/dist/esm/server/auth/provider.js +2 -0
  122. package/dist/esm/server/auth/provider.js.map +1 -0
  123. package/dist/esm/server/auth/router.d.ts +36 -0
  124. package/dist/esm/server/auth/router.d.ts.map +1 -0
  125. package/dist/esm/server/auth/router.js +62 -0
  126. package/dist/esm/server/auth/router.js.map +1 -0
  127. package/dist/esm/server/auth/types.d.ts +22 -0
  128. package/dist/esm/server/auth/types.d.ts.map +1 -0
  129. package/dist/esm/server/auth/types.js +2 -0
  130. package/dist/esm/server/auth/types.js.map +1 -0
  131. package/dist/esm/server/mcp.d.ts.map +1 -1
  132. package/dist/esm/server/mcp.js +3 -1
  133. package/dist/esm/server/mcp.js.map +1 -1
  134. package/dist/esm/shared/auth.d.ts +271 -0
  135. package/dist/esm/shared/auth.d.ts.map +1 -0
  136. package/dist/esm/shared/auth.js +103 -0
  137. package/dist/esm/shared/auth.js.map +1 -0
  138. package/dist/esm/types.d.ts.map +1 -1
  139. package/dist/esm/types.js +1 -0
  140. package/dist/esm/types.js.map +1 -1
  141. package/package.json +10 -3
@@ -0,0 +1,226 @@
1
+ import pkceChallenge from "pkce-challenge";
2
+ import { LATEST_PROTOCOL_VERSION } from "../types.js";
3
+ import { OAuthClientInformationFullSchema, OAuthMetadataSchema, OAuthTokensSchema } from "../shared/auth.js";
4
+ export class UnauthorizedError extends Error {
5
+ constructor(message) {
6
+ super(message !== null && message !== void 0 ? message : "Unauthorized");
7
+ }
8
+ }
9
+ /**
10
+ * Orchestrates the full auth flow with a server.
11
+ *
12
+ * This can be used as a single entry point for all authorization functionality,
13
+ * instead of linking together the other lower-level functions in this module.
14
+ */
15
+ export async function auth(provider, { serverUrl, authorizationCode }) {
16
+ const metadata = await discoverOAuthMetadata(serverUrl);
17
+ // Handle client registration if needed
18
+ let clientInformation = await Promise.resolve(provider.clientInformation());
19
+ if (!clientInformation) {
20
+ if (authorizationCode !== undefined) {
21
+ throw new Error("Existing OAuth client information is required when exchanging an authorization code");
22
+ }
23
+ if (!provider.saveClientInformation) {
24
+ throw new Error("OAuth client information must be saveable for dynamic registration");
25
+ }
26
+ const fullInformation = await registerClient(serverUrl, {
27
+ metadata,
28
+ clientMetadata: provider.clientMetadata,
29
+ });
30
+ await provider.saveClientInformation(fullInformation);
31
+ clientInformation = fullInformation;
32
+ }
33
+ // Exchange authorization code for tokens
34
+ if (authorizationCode !== undefined) {
35
+ const codeVerifier = await provider.codeVerifier();
36
+ const tokens = await exchangeAuthorization(serverUrl, {
37
+ metadata,
38
+ clientInformation,
39
+ authorizationCode,
40
+ codeVerifier,
41
+ });
42
+ await provider.saveTokens(tokens);
43
+ return "AUTHORIZED";
44
+ }
45
+ const tokens = await provider.tokens();
46
+ // Handle token refresh or new authorization
47
+ if (tokens === null || tokens === void 0 ? void 0 : tokens.refresh_token) {
48
+ try {
49
+ // Attempt to refresh the token
50
+ const newTokens = await refreshAuthorization(serverUrl, {
51
+ metadata,
52
+ clientInformation,
53
+ refreshToken: tokens.refresh_token,
54
+ });
55
+ await provider.saveTokens(newTokens);
56
+ return "AUTHORIZED";
57
+ }
58
+ catch (error) {
59
+ console.error("Could not refresh OAuth tokens:", error);
60
+ }
61
+ }
62
+ // Start new authorization flow
63
+ const { authorizationUrl, codeVerifier } = await startAuthorization(serverUrl, {
64
+ metadata,
65
+ clientInformation,
66
+ redirectUrl: provider.redirectUrl
67
+ });
68
+ await provider.saveCodeVerifier(codeVerifier);
69
+ await provider.redirectToAuthorization(authorizationUrl);
70
+ return "REDIRECT";
71
+ }
72
+ /**
73
+ * Looks up RFC 8414 OAuth 2.0 Authorization Server Metadata.
74
+ *
75
+ * If the server returns a 404 for the well-known endpoint, this function will
76
+ * return `undefined`. Any other errors will be thrown as exceptions.
77
+ */
78
+ export async function discoverOAuthMetadata(serverUrl, opts) {
79
+ var _a;
80
+ const url = new URL("/.well-known/oauth-authorization-server", serverUrl);
81
+ const response = await fetch(url, {
82
+ headers: {
83
+ "MCP-Protocol-Version": (_a = opts === null || opts === void 0 ? void 0 : opts.protocolVersion) !== null && _a !== void 0 ? _a : LATEST_PROTOCOL_VERSION
84
+ }
85
+ });
86
+ if (response.status === 404) {
87
+ return undefined;
88
+ }
89
+ if (!response.ok) {
90
+ throw new Error(`HTTP ${response.status} trying to load well-known OAuth metadata`);
91
+ }
92
+ return OAuthMetadataSchema.parse(await response.json());
93
+ }
94
+ /**
95
+ * Begins the authorization flow with the given server, by generating a PKCE challenge and constructing the authorization URL.
96
+ */
97
+ export async function startAuthorization(serverUrl, { metadata, clientInformation, redirectUrl, }) {
98
+ const responseType = "code";
99
+ const codeChallengeMethod = "S256";
100
+ let authorizationUrl;
101
+ if (metadata) {
102
+ authorizationUrl = new URL(metadata.authorization_endpoint);
103
+ if (!metadata.response_types_supported.includes(responseType)) {
104
+ throw new Error(`Incompatible auth server: does not support response type ${responseType}`);
105
+ }
106
+ if (!metadata.code_challenge_methods_supported ||
107
+ !metadata.code_challenge_methods_supported.includes(codeChallengeMethod)) {
108
+ throw new Error(`Incompatible auth server: does not support code challenge method ${codeChallengeMethod}`);
109
+ }
110
+ }
111
+ else {
112
+ authorizationUrl = new URL("/authorize", serverUrl);
113
+ }
114
+ // Generate PKCE challenge
115
+ const challenge = await pkceChallenge();
116
+ const codeVerifier = challenge.code_verifier;
117
+ const codeChallenge = challenge.code_challenge;
118
+ authorizationUrl.searchParams.set("response_type", responseType);
119
+ authorizationUrl.searchParams.set("client_id", clientInformation.client_id);
120
+ authorizationUrl.searchParams.set("code_challenge", codeChallenge);
121
+ authorizationUrl.searchParams.set("code_challenge_method", codeChallengeMethod);
122
+ authorizationUrl.searchParams.set("redirect_uri", String(redirectUrl));
123
+ return { authorizationUrl, codeVerifier };
124
+ }
125
+ /**
126
+ * Exchanges an authorization code for an access token with the given server.
127
+ */
128
+ export async function exchangeAuthorization(serverUrl, { metadata, clientInformation, authorizationCode, codeVerifier, }) {
129
+ const grantType = "authorization_code";
130
+ let tokenUrl;
131
+ if (metadata) {
132
+ tokenUrl = new URL(metadata.token_endpoint);
133
+ if (metadata.grant_types_supported &&
134
+ !metadata.grant_types_supported.includes(grantType)) {
135
+ throw new Error(`Incompatible auth server: does not support grant type ${grantType}`);
136
+ }
137
+ }
138
+ else {
139
+ tokenUrl = new URL("/token", serverUrl);
140
+ }
141
+ // Exchange code for tokens
142
+ const params = new URLSearchParams({
143
+ grant_type: grantType,
144
+ client_id: clientInformation.client_id,
145
+ code: authorizationCode,
146
+ code_verifier: codeVerifier,
147
+ });
148
+ if (clientInformation.client_secret) {
149
+ params.set("client_secret", clientInformation.client_secret);
150
+ }
151
+ const response = await fetch(tokenUrl, {
152
+ method: "POST",
153
+ headers: {
154
+ "Content-Type": "application/x-www-form-urlencoded",
155
+ },
156
+ body: params,
157
+ });
158
+ if (!response.ok) {
159
+ throw new Error(`Token exchange failed: HTTP ${response.status}`);
160
+ }
161
+ return OAuthTokensSchema.parse(await response.json());
162
+ }
163
+ /**
164
+ * Exchange a refresh token for an updated access token.
165
+ */
166
+ export async function refreshAuthorization(serverUrl, { metadata, clientInformation, refreshToken, }) {
167
+ const grantType = "refresh_token";
168
+ let tokenUrl;
169
+ if (metadata) {
170
+ tokenUrl = new URL(metadata.token_endpoint);
171
+ if (metadata.grant_types_supported &&
172
+ !metadata.grant_types_supported.includes(grantType)) {
173
+ throw new Error(`Incompatible auth server: does not support grant type ${grantType}`);
174
+ }
175
+ }
176
+ else {
177
+ tokenUrl = new URL("/token", serverUrl);
178
+ }
179
+ // Exchange refresh token
180
+ const params = new URLSearchParams({
181
+ grant_type: grantType,
182
+ client_id: clientInformation.client_id,
183
+ refresh_token: refreshToken,
184
+ });
185
+ if (clientInformation.client_secret) {
186
+ params.set("client_secret", clientInformation.client_secret);
187
+ }
188
+ const response = await fetch(tokenUrl, {
189
+ method: "POST",
190
+ headers: {
191
+ "Content-Type": "application/x-www-form-urlencoded",
192
+ },
193
+ body: params,
194
+ });
195
+ if (!response.ok) {
196
+ throw new Error(`Token refresh failed: HTTP ${response.status}`);
197
+ }
198
+ return OAuthTokensSchema.parse(await response.json());
199
+ }
200
+ /**
201
+ * Performs OAuth 2.0 Dynamic Client Registration according to RFC 7591.
202
+ */
203
+ export async function registerClient(serverUrl, { metadata, clientMetadata, }) {
204
+ let registrationUrl;
205
+ if (metadata) {
206
+ if (!metadata.registration_endpoint) {
207
+ throw new Error("Incompatible auth server: does not support dynamic client registration");
208
+ }
209
+ registrationUrl = new URL(metadata.registration_endpoint);
210
+ }
211
+ else {
212
+ registrationUrl = new URL("/register", serverUrl);
213
+ }
214
+ const response = await fetch(registrationUrl, {
215
+ method: "POST",
216
+ headers: {
217
+ "Content-Type": "application/json",
218
+ },
219
+ body: JSON.stringify(clientMetadata),
220
+ });
221
+ if (!response.ok) {
222
+ throw new Error(`Dynamic client registration failed: HTTP ${response.status}`);
223
+ }
224
+ return OAuthClientInformationFullSchema.parse(await response.json());
225
+ }
226
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,45 @@
1
1
  import { type ErrorEvent, type EventSourceInit } from "eventsource";
2
2
  import { Transport } from "../shared/transport.js";
3
3
  import { JSONRPCMessage } from "../types.js";
4
+ import { OAuthClientProvider } from "./auth.js";
4
5
  export declare class SseError extends Error {
5
6
  readonly code: number | undefined;
6
7
  readonly event: ErrorEvent;
7
8
  constructor(code: number | undefined, message: string | undefined, event: ErrorEvent);
8
9
  }
10
+ /**
11
+ * Configuration options for the `SSEClientTransport`.
12
+ */
13
+ export type SSEClientTransportOptions = {
14
+ /**
15
+ * An OAuth client provider to use for authentication.
16
+ *
17
+ * When an `authProvider` is specified and the SSE connection is started:
18
+ * 1. The connection is attempted with any existing access token from the `authProvider`.
19
+ * 2. If the access token has expired, the `authProvider` is used to refresh the token.
20
+ * 3. If token refresh fails or no access token exists, and auth is required, `OAuthClientProvider.redirectToAuthorization` is called, and an `UnauthorizedError` will be thrown from `connect`/`start`.
21
+ *
22
+ * After the user has finished authorizing via their user agent, and is redirected back to the MCP client application, call `SSEClientTransport.finishAuth` with the authorization code before retrying the connection.
23
+ *
24
+ * If an `authProvider` is not provided, and auth is required, an `UnauthorizedError` will be thrown.
25
+ *
26
+ * `UnauthorizedError` might also be thrown when sending any message over the SSE transport, indicating that the session has expired, and needs to be re-authed and reconnected.
27
+ */
28
+ authProvider?: OAuthClientProvider;
29
+ /**
30
+ * Customizes the initial SSE request to the server (the request that begins the stream).
31
+ *
32
+ * NOTE: Setting this property will prevent an `Authorization` header from
33
+ * being automatically attached to the SSE request, if an `authProvider` is
34
+ * also given. This can be worked around by setting the `Authorization` header
35
+ * manually.
36
+ */
37
+ eventSourceInit?: EventSourceInit;
38
+ /**
39
+ * Customizes recurring POST requests to the server.
40
+ */
41
+ requestInit?: RequestInit;
42
+ };
9
43
  /**
10
44
  * Client transport for SSE: this will connect to a server using Server-Sent Events for receiving
11
45
  * messages and make separate POST requests for sending messages.
@@ -17,14 +51,19 @@ export declare class SSEClientTransport implements Transport {
17
51
  private _url;
18
52
  private _eventSourceInit?;
19
53
  private _requestInit?;
54
+ private _authProvider?;
20
55
  onclose?: () => void;
21
56
  onerror?: (error: Error) => void;
22
57
  onmessage?: (message: JSONRPCMessage) => void;
23
- constructor(url: URL, opts?: {
24
- eventSourceInit?: EventSourceInit;
25
- requestInit?: RequestInit;
26
- });
58
+ constructor(url: URL, opts?: SSEClientTransportOptions);
59
+ private _authThenStart;
60
+ private _commonHeaders;
61
+ private _startOrAuth;
27
62
  start(): Promise<void>;
63
+ /**
64
+ * Call this method after the user has finished authorizing via their user agent and is redirected back to the MCP client application. This will exchange the authorization code for an access token, enabling the next connection attempt to successfully auth.
65
+ */
66
+ finishAuth(authorizationCode: string): Promise<void>;
28
67
  close(): Promise<void>;
29
68
  send(message: JSONRPCMessage): Promise<void>;
30
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/client/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AAEnE,qBAAa,QAAS,SAAQ,KAAK;aAEf,IAAI,EAAE,MAAM,GAAG,SAAS;aAExB,KAAK,EAAE,UAAU;gBAFjB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxC,OAAO,EAAE,MAAM,GAAG,SAAS,EACX,KAAK,EAAE,UAAU;CAIpC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,SAAS,CAAC,CAAM;IACxB,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,YAAY,CAAC,CAAc;IAEnC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;gBAG5C,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,eAAe,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE;IAOzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4DhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA6BnD"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/client/sse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAoB,mBAAmB,EAAqB,MAAM,WAAW,CAAC;AAErF,qBAAa,QAAS,SAAQ,KAAK;aAEf,IAAI,EAAE,MAAM,GAAG,SAAS;aAExB,KAAK,EAAE,UAAU;gBAFjB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxC,OAAO,EAAE,MAAM,GAAG,SAAS,EACX,KAAK,EAAE,UAAU;CAIpC;AAED;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;IAEnC;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,SAAS;IAClD,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,SAAS,CAAC,CAAM;IACxB,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,gBAAgB,CAAC,CAAkB;IAC3C,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,aAAa,CAAC,CAAsB;IAE5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;gBAG5C,GAAG,EAAE,GAAG,EACR,IAAI,CAAC,EAAE,yBAAyB;YAQpB,cAAc;YAoBd,cAAc;IAY5B,OAAO,CAAC,YAAY;IAmEd,KAAK;IAUX;;OAEG;IACG,UAAU,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAuCnD"}
@@ -1,5 +1,6 @@
1
1
  import { EventSource } from "eventsource";
2
2
  import { JSONRPCMessageSchema } from "../types.js";
3
+ import { auth, UnauthorizedError } from "./auth.js";
3
4
  export class SseError extends Error {
4
5
  constructor(code, message, event) {
5
6
  super(`SSE error: ${message}`);
@@ -16,16 +17,55 @@ export class SSEClientTransport {
16
17
  this._url = url;
17
18
  this._eventSourceInit = opts === null || opts === void 0 ? void 0 : opts.eventSourceInit;
18
19
  this._requestInit = opts === null || opts === void 0 ? void 0 : opts.requestInit;
20
+ this._authProvider = opts === null || opts === void 0 ? void 0 : opts.authProvider;
19
21
  }
20
- start() {
21
- if (this._eventSource) {
22
- throw new Error("SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.");
22
+ async _authThenStart() {
23
+ var _a;
24
+ if (!this._authProvider) {
25
+ throw new UnauthorizedError("No auth provider");
26
+ }
27
+ let result;
28
+ try {
29
+ result = await auth(this._authProvider, { serverUrl: this._url });
30
+ }
31
+ catch (error) {
32
+ (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
33
+ throw error;
23
34
  }
35
+ if (result !== "AUTHORIZED") {
36
+ throw new UnauthorizedError();
37
+ }
38
+ return await this._startOrAuth();
39
+ }
40
+ async _commonHeaders() {
41
+ const headers = {};
42
+ if (this._authProvider) {
43
+ const tokens = await this._authProvider.tokens();
44
+ if (tokens) {
45
+ headers["Authorization"] = `Bearer ${tokens.access_token}`;
46
+ }
47
+ }
48
+ return headers;
49
+ }
50
+ _startOrAuth() {
24
51
  return new Promise((resolve, reject) => {
25
- this._eventSource = new EventSource(this._url.href, this._eventSourceInit);
52
+ var _a;
53
+ this._eventSource = new EventSource(this._url.href, (_a = this._eventSourceInit) !== null && _a !== void 0 ? _a : {
54
+ fetch: (url, init) => this._commonHeaders().then((headers) => fetch(url, {
55
+ ...init,
56
+ headers: {
57
+ ...headers,
58
+ Accept: "text/event-stream"
59
+ }
60
+ })),
61
+ });
26
62
  this._abortController = new AbortController();
27
63
  this._eventSource.onerror = (event) => {
28
64
  var _a;
65
+ if (event.code === 401 && this._authProvider) {
66
+ this._authThenStart().then(resolve, reject);
67
+ return;
68
+ }
29
69
  const error = new SseError(event.code, event.message, event);
30
70
  reject(error);
31
71
  (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);
@@ -65,6 +105,24 @@ export class SSEClientTransport {
65
105
  };
66
106
  });
67
107
  }
108
+ async start() {
109
+ if (this._eventSource) {
110
+ throw new Error("SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.");
111
+ }
112
+ return await this._startOrAuth();
113
+ }
114
+ /**
115
+ * Call this method after the user has finished authorizing via their user agent and is redirected back to the MCP client application. This will exchange the authorization code for an access token, enabling the next connection attempt to successfully auth.
116
+ */
117
+ async finishAuth(authorizationCode) {
118
+ if (!this._authProvider) {
119
+ throw new UnauthorizedError("No auth provider");
120
+ }
121
+ const result = await auth(this._authProvider, { serverUrl: this._url, authorizationCode });
122
+ if (result !== "AUTHORIZED") {
123
+ throw new UnauthorizedError("Failed to authorize");
124
+ }
125
+ }
68
126
  async close() {
69
127
  var _a, _b, _c;
70
128
  (_a = this._abortController) === null || _a === void 0 ? void 0 : _a.abort();
@@ -77,7 +135,8 @@ export class SSEClientTransport {
77
135
  throw new Error("Not connected");
78
136
  }
79
137
  try {
80
- const headers = new Headers((_a = this._requestInit) === null || _a === void 0 ? void 0 : _a.headers);
138
+ const commonHeaders = await this._commonHeaders();
139
+ const headers = new Headers({ ...commonHeaders, ...(_a = this._requestInit) === null || _a === void 0 ? void 0 : _a.headers });
81
140
  headers.set("content-type", "application/json");
82
141
  const init = {
83
142
  ...this._requestInit,
@@ -88,6 +147,14 @@ export class SSEClientTransport {
88
147
  };
89
148
  const response = await fetch(this._endpoint, init);
90
149
  if (!response.ok) {
150
+ if (response.status === 401 && this._authProvider) {
151
+ const result = await auth(this._authProvider, { serverUrl: this._url });
152
+ if (result !== "AUTHORIZED") {
153
+ throw new UnauthorizedError();
154
+ }
155
+ // Purposely _not_ awaited, so we don't call onerror twice
156
+ return this.send(message);
157
+ }
91
158
  const text = await response.text().catch(() => null);
92
159
  throw new Error(`Error POSTing to endpoint (HTTP ${response.status}): ${text}`);
93
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/client/sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/client/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { OAuthClientInformationFull } from "../../shared/auth.js";
2
+ /**
3
+ * Stores information about registered OAuth clients for this server.
4
+ */
5
+ export interface OAuthRegisteredClientsStore {
6
+ /**
7
+ * Returns information about a registered client, based on its ID.
8
+ */
9
+ getClient(clientId: string): OAuthClientInformationFull | undefined | Promise<OAuthClientInformationFull | undefined>;
10
+ /**
11
+ * Registers a new client with the server. The client ID and secret will be automatically generated by the library. A modified version of the client information can be returned to reflect specific values enforced by the server.
12
+ *
13
+ * NOTE: Implementations should NOT delete expired client secrets in-place. Auth middleware provided by this library will automatically check the `client_secret_expires_at` field and reject requests with expired secrets. Any custom logic for authenticating clients should check the `client_secret_expires_at` field as well.
14
+ *
15
+ * If unimplemented, dynamic client registration is unsupported.
16
+ */
17
+ registerClient?(client: OAuthClientInformationFull): OAuthClientInformationFull | Promise<OAuthClientInformationFull>;
18
+ }
19
+ //# sourceMappingURL=clients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../../../src/server/auth/clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,0BAA0B,GAAG,SAAS,GAAG,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC,CAAC;IAEtH;;;;;;OAMG;IACH,cAAc,CAAC,CAAC,MAAM,EAAE,0BAA0B,GAAG,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;CACvH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../../src/server/auth/clients.ts"],"names":[],"mappings":""}
@@ -0,0 +1,126 @@
1
+ import { OAuthErrorResponse } from "../../shared/auth.js";
2
+ /**
3
+ * Base class for all OAuth errors
4
+ */
5
+ export declare class OAuthError extends Error {
6
+ readonly errorCode: string;
7
+ readonly errorUri?: string | undefined;
8
+ constructor(errorCode: string, message: string, errorUri?: string | undefined);
9
+ /**
10
+ * Converts the error to a standard OAuth error response object
11
+ */
12
+ toResponseObject(): OAuthErrorResponse;
13
+ }
14
+ /**
15
+ * Invalid request error - The request is missing a required parameter,
16
+ * includes an invalid parameter value, includes a parameter more than once,
17
+ * or is otherwise malformed.
18
+ */
19
+ export declare class InvalidRequestError extends OAuthError {
20
+ constructor(message: string, errorUri?: string);
21
+ }
22
+ /**
23
+ * Invalid client error - Client authentication failed (e.g., unknown client, no client
24
+ * authentication included, or unsupported authentication method).
25
+ */
26
+ export declare class InvalidClientError extends OAuthError {
27
+ constructor(message: string, errorUri?: string);
28
+ }
29
+ /**
30
+ * Invalid grant error - The provided authorization grant or refresh token is
31
+ * invalid, expired, revoked, does not match the redirection URI used in the
32
+ * authorization request, or was issued to another client.
33
+ */
34
+ export declare class InvalidGrantError extends OAuthError {
35
+ constructor(message: string, errorUri?: string);
36
+ }
37
+ /**
38
+ * Unauthorized client error - The authenticated client is not authorized to use
39
+ * this authorization grant type.
40
+ */
41
+ export declare class UnauthorizedClientError extends OAuthError {
42
+ constructor(message: string, errorUri?: string);
43
+ }
44
+ /**
45
+ * Unsupported grant type error - The authorization grant type is not supported
46
+ * by the authorization server.
47
+ */
48
+ export declare class UnsupportedGrantTypeError extends OAuthError {
49
+ constructor(message: string, errorUri?: string);
50
+ }
51
+ /**
52
+ * Invalid scope error - The requested scope is invalid, unknown, malformed, or
53
+ * exceeds the scope granted by the resource owner.
54
+ */
55
+ export declare class InvalidScopeError extends OAuthError {
56
+ constructor(message: string, errorUri?: string);
57
+ }
58
+ /**
59
+ * Access denied error - The resource owner or authorization server denied the request.
60
+ */
61
+ export declare class AccessDeniedError extends OAuthError {
62
+ constructor(message: string, errorUri?: string);
63
+ }
64
+ /**
65
+ * Server error - The authorization server encountered an unexpected condition
66
+ * that prevented it from fulfilling the request.
67
+ */
68
+ export declare class ServerError extends OAuthError {
69
+ constructor(message: string, errorUri?: string);
70
+ }
71
+ /**
72
+ * Temporarily unavailable error - The authorization server is currently unable to
73
+ * handle the request due to a temporary overloading or maintenance of the server.
74
+ */
75
+ export declare class TemporarilyUnavailableError extends OAuthError {
76
+ constructor(message: string, errorUri?: string);
77
+ }
78
+ /**
79
+ * Unsupported response type error - The authorization server does not support
80
+ * obtaining an authorization code using this method.
81
+ */
82
+ export declare class UnsupportedResponseTypeError extends OAuthError {
83
+ constructor(message: string, errorUri?: string);
84
+ }
85
+ /**
86
+ * Unsupported token type error - The authorization server does not support
87
+ * the requested token type.
88
+ */
89
+ export declare class UnsupportedTokenTypeError extends OAuthError {
90
+ constructor(message: string, errorUri?: string);
91
+ }
92
+ /**
93
+ * Invalid token error - The access token provided is expired, revoked, malformed,
94
+ * or invalid for other reasons.
95
+ */
96
+ export declare class InvalidTokenError extends OAuthError {
97
+ constructor(message: string, errorUri?: string);
98
+ }
99
+ /**
100
+ * Method not allowed error - The HTTP method used is not allowed for this endpoint.
101
+ * (Custom, non-standard error)
102
+ */
103
+ export declare class MethodNotAllowedError extends OAuthError {
104
+ constructor(message: string, errorUri?: string);
105
+ }
106
+ /**
107
+ * Too many requests error - Rate limit exceeded.
108
+ * (Custom, non-standard error based on RFC 6585)
109
+ */
110
+ export declare class TooManyRequestsError extends OAuthError {
111
+ constructor(message: string, errorUri?: string);
112
+ }
113
+ /**
114
+ * Invalid client metadata error - The client metadata is invalid.
115
+ * (Custom error for dynamic client registration - RFC 7591)
116
+ */
117
+ export declare class InvalidClientMetadataError extends OAuthError {
118
+ constructor(message: string, errorUri?: string);
119
+ }
120
+ /**
121
+ * Insufficient scope error - The request requires higher privileges than provided by the access token.
122
+ */
123
+ export declare class InsufficientScopeError extends OAuthError {
124
+ constructor(message: string, errorUri?: string);
125
+ }
126
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/server/auth/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAEjB,SAAS,EAAE,MAAM;aAEjB,QAAQ,CAAC,EAAE,MAAM;gBAFjB,SAAS,EAAE,MAAM,EACjC,OAAO,EAAE,MAAM,EACC,QAAQ,CAAC,EAAE,MAAM,YAAA;IAMnC;;OAEG;IACH,gBAAgB,IAAI,kBAAkB;CAYvC;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;gBACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,UAAU;gBACpC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;gBACzC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,UAAU;gBAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,UAAU;gBAC7C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,UAAU;gBAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,UAAU;gBAC3C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;gBACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;gBACvC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;gBACtC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,UAAU;gBAC5C,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,UAAU;gBACxC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;CAG/C"}