@modelcontextprotocol/sdk 1.15.1 → 1.17.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.
- package/README.md +43 -7
- package/dist/cjs/client/auth.d.ts +69 -12
- package/dist/cjs/client/auth.d.ts.map +1 -1
- package/dist/cjs/client/auth.js +216 -39
- package/dist/cjs/client/auth.js.map +1 -1
- package/dist/cjs/client/index.d.ts +63 -63
- package/dist/cjs/client/sse.js +3 -3
- package/dist/cjs/client/sse.js.map +1 -1
- package/dist/cjs/client/streamableHttp.d.ts.map +1 -1
- package/dist/cjs/client/streamableHttp.js +18 -18
- package/dist/cjs/client/streamableHttp.js.map +1 -1
- package/dist/cjs/server/auth/clients.d.ts +1 -1
- package/dist/cjs/server/auth/clients.d.ts.map +1 -1
- package/dist/cjs/server/auth/errors.d.ts +33 -18
- package/dist/cjs/server/auth/errors.d.ts.map +1 -1
- package/dist/cjs/server/auth/errors.js +55 -51
- package/dist/cjs/server/auth/errors.js.map +1 -1
- package/dist/cjs/server/auth/handlers/register.d.ts +7 -1
- package/dist/cjs/server/auth/handlers/register.d.ts.map +1 -1
- package/dist/cjs/server/auth/handlers/register.js +5 -4
- package/dist/cjs/server/auth/handlers/register.js.map +1 -1
- package/dist/cjs/server/auth/providers/proxyProvider.d.ts +6 -0
- package/dist/cjs/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/dist/cjs/server/auth/providers/proxyProvider.js +9 -4
- package/dist/cjs/server/auth/providers/proxyProvider.js.map +1 -1
- package/dist/cjs/server/auth/router.js +1 -1
- package/dist/cjs/server/auth/router.js.map +1 -1
- package/dist/cjs/server/index.d.ts +6 -6
- package/dist/cjs/shared/auth.d.ts +290 -0
- package/dist/cjs/shared/auth.d.ts.map +1 -1
- package/dist/cjs/shared/auth.js +59 -1
- package/dist/cjs/shared/auth.js.map +1 -1
- package/dist/cjs/shared/protocol.d.ts +8 -0
- package/dist/cjs/shared/protocol.d.ts.map +1 -1
- package/dist/cjs/shared/protocol.js +37 -0
- package/dist/cjs/shared/protocol.js.map +1 -1
- package/dist/cjs/types.d.ts +687 -687
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +19 -3
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/client/auth.d.ts +69 -12
- package/dist/esm/client/auth.d.ts.map +1 -1
- package/dist/esm/client/auth.js +208 -34
- package/dist/esm/client/auth.js.map +1 -1
- package/dist/esm/client/index.d.ts +63 -63
- package/dist/esm/client/sse.js +3 -3
- package/dist/esm/client/sse.js.map +1 -1
- package/dist/esm/client/streamableHttp.d.ts.map +1 -1
- package/dist/esm/client/streamableHttp.js +18 -18
- package/dist/esm/client/streamableHttp.js.map +1 -1
- package/dist/esm/server/auth/clients.d.ts +1 -1
- package/dist/esm/server/auth/clients.d.ts.map +1 -1
- package/dist/esm/server/auth/errors.d.ts +33 -18
- package/dist/esm/server/auth/errors.d.ts.map +1 -1
- package/dist/esm/server/auth/errors.js +52 -49
- package/dist/esm/server/auth/errors.js.map +1 -1
- package/dist/esm/server/auth/handlers/register.d.ts +7 -1
- package/dist/esm/server/auth/handlers/register.d.ts.map +1 -1
- package/dist/esm/server/auth/handlers/register.js +5 -4
- package/dist/esm/server/auth/handlers/register.js.map +1 -1
- package/dist/esm/server/auth/providers/proxyProvider.d.ts +6 -0
- package/dist/esm/server/auth/providers/proxyProvider.d.ts.map +1 -1
- package/dist/esm/server/auth/providers/proxyProvider.js +9 -4
- package/dist/esm/server/auth/providers/proxyProvider.js.map +1 -1
- package/dist/esm/server/auth/router.js +1 -1
- package/dist/esm/server/auth/router.js.map +1 -1
- package/dist/esm/server/index.d.ts +6 -6
- package/dist/esm/shared/auth.d.ts +290 -0
- package/dist/esm/shared/auth.d.ts.map +1 -1
- package/dist/esm/shared/auth.js +58 -0
- package/dist/esm/shared/auth.js.map +1 -1
- package/dist/esm/shared/protocol.d.ts +8 -0
- package/dist/esm/shared/protocol.d.ts.map +1 -1
- package/dist/esm/shared/protocol.js +37 -0
- package/dist/esm/shared/protocol.js.map +1 -1
- package/dist/esm/types.d.ts +687 -687
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +19 -3
- package/dist/esm/types.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -45,7 +45,7 @@ The Model Context Protocol allows applications to provide context for LLMs in a
|
|
|
45
45
|
npm install @modelcontextprotocol/sdk
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
> ⚠️ MCP requires Node v18.x
|
|
48
|
+
> ⚠️ MCP requires Node.js v18.x or higher to work fine.
|
|
49
49
|
|
|
50
50
|
## Quick Start
|
|
51
51
|
|
|
@@ -571,7 +571,6 @@ app.listen(3000);
|
|
|
571
571
|
|
|
572
572
|
> [!TIP]
|
|
573
573
|
> When using this in a remote environment, make sure to allow the header parameter `mcp-session-id` in CORS. Otherwise, it may result in a `Bad Request: No valid session ID provided` error. Read the following section for examples.
|
|
574
|
-
> ```
|
|
575
574
|
|
|
576
575
|
|
|
577
576
|
#### CORS Configuration for Browser-Based Clients
|
|
@@ -584,8 +583,8 @@ import cors from 'cors';
|
|
|
584
583
|
// Add CORS middleware before your MCP routes
|
|
585
584
|
app.use(cors({
|
|
586
585
|
origin: '*', // Configure appropriately for production, for example:
|
|
587
|
-
// origin: ['https://your-remote-domain.com, https://your-other-remote-domain.com'],
|
|
588
|
-
exposedHeaders: ['Mcp-Session-Id']
|
|
586
|
+
// origin: ['https://your-remote-domain.com', 'https://your-other-remote-domain.com'],
|
|
587
|
+
exposedHeaders: ['Mcp-Session-Id'],
|
|
589
588
|
allowedHeaders: ['Content-Type', 'mcp-session-id'],
|
|
590
589
|
}));
|
|
591
590
|
```
|
|
@@ -876,7 +875,7 @@ const putMessageTool = server.tool(
|
|
|
876
875
|
"putMessage",
|
|
877
876
|
{ channel: z.string(), message: z.string() },
|
|
878
877
|
async ({ channel, message }) => ({
|
|
879
|
-
content: [{ type: "text", text: await putMessage(channel,
|
|
878
|
+
content: [{ type: "text", text: await putMessage(channel, message) }]
|
|
880
879
|
})
|
|
881
880
|
);
|
|
882
881
|
// Until we upgrade auth, `putMessage` is disabled (won't show up in listTools)
|
|
@@ -884,7 +883,7 @@ putMessageTool.disable()
|
|
|
884
883
|
|
|
885
884
|
const upgradeAuthTool = server.tool(
|
|
886
885
|
"upgradeAuth",
|
|
887
|
-
{ permission: z.enum(["write
|
|
886
|
+
{ permission: z.enum(["write", "admin"])},
|
|
888
887
|
// Any mutations here will automatically emit `listChanged` notifications
|
|
889
888
|
async ({ permission }) => {
|
|
890
889
|
const { ok, err, previous } = await upgradeAuthAndStoreToken(permission)
|
|
@@ -913,6 +912,43 @@ const transport = new StdioServerTransport();
|
|
|
913
912
|
await server.connect(transport);
|
|
914
913
|
```
|
|
915
914
|
|
|
915
|
+
### Improving Network Efficiency with Notification Debouncing
|
|
916
|
+
|
|
917
|
+
When performing bulk updates that trigger notifications (e.g., enabling or disabling multiple tools in a loop), the SDK can send a large number of messages in a short period. To improve performance and reduce network traffic, you can enable notification debouncing.
|
|
918
|
+
|
|
919
|
+
This feature coalesces multiple, rapid calls for the same notification type into a single message. For example, if you disable five tools in a row, only one `notifications/tools/list_changed` message will be sent instead of five.
|
|
920
|
+
|
|
921
|
+
> [!IMPORTANT]
|
|
922
|
+
> This feature is designed for "simple" notifications that do not carry unique data in their parameters. To prevent silent data loss, debouncing is **automatically bypassed** for any notification that contains a `params` object or a `relatedRequestId`. Such notifications will always be sent immediately.
|
|
923
|
+
|
|
924
|
+
This is an opt-in feature configured during server initialization.
|
|
925
|
+
|
|
926
|
+
```typescript
|
|
927
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
928
|
+
|
|
929
|
+
const server = new McpServer(
|
|
930
|
+
{
|
|
931
|
+
name: "efficient-server",
|
|
932
|
+
version: "1.0.0"
|
|
933
|
+
},
|
|
934
|
+
{
|
|
935
|
+
// Enable notification debouncing for specific methods
|
|
936
|
+
debouncedNotificationMethods: [
|
|
937
|
+
'notifications/tools/list_changed',
|
|
938
|
+
'notifications/resources/list_changed',
|
|
939
|
+
'notifications/prompts/list_changed'
|
|
940
|
+
]
|
|
941
|
+
}
|
|
942
|
+
);
|
|
943
|
+
|
|
944
|
+
// Now, any rapid changes to tools, resources, or prompts will result
|
|
945
|
+
// in a single, consolidated notification for each type.
|
|
946
|
+
server.registerTool("tool1", ...).disable();
|
|
947
|
+
server.registerTool("tool2", ...).disable();
|
|
948
|
+
server.registerTool("tool3", ...).disable();
|
|
949
|
+
// Only one 'notifications/tools/list_changed' is sent.
|
|
950
|
+
```
|
|
951
|
+
|
|
916
952
|
### Low-Level Server
|
|
917
953
|
|
|
918
954
|
For more control, you can use the low-level Server class directly:
|
|
@@ -1175,7 +1211,7 @@ This setup allows you to:
|
|
|
1175
1211
|
|
|
1176
1212
|
### Backwards Compatibility
|
|
1177
1213
|
|
|
1178
|
-
Clients and servers with StreamableHttp
|
|
1214
|
+
Clients and servers with StreamableHttp transport can maintain [backwards compatibility](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#backwards-compatibility) with the deprecated HTTP+SSE transport (from protocol version 2024-11-05) as follows
|
|
1179
1215
|
|
|
1180
1216
|
#### Client-Side Compatibility
|
|
1181
1217
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { OAuthClientMetadata, OAuthClientInformation, OAuthTokens, OAuthMetadata, OAuthClientInformationFull, OAuthProtectedResourceMetadata, AuthorizationServerMetadata } from "../shared/auth.js";
|
|
2
|
+
import { OAuthError } from "../server/auth/errors.js";
|
|
3
|
+
import { FetchLike } from "../shared/transport.js";
|
|
2
4
|
/**
|
|
3
5
|
* Implements an end-to-end OAuth client to be used with one MCP server.
|
|
4
6
|
*
|
|
@@ -76,7 +78,7 @@ export interface OAuthClientProvider {
|
|
|
76
78
|
* @param url - The token endpoint URL being called
|
|
77
79
|
* @param metadata - Optional OAuth metadata for the server, which may include supported authentication methods
|
|
78
80
|
*/
|
|
79
|
-
addClientAuthentication?(headers: Headers, params: URLSearchParams, url: string | URL, metadata?:
|
|
81
|
+
addClientAuthentication?(headers: Headers, params: URLSearchParams, url: string | URL, metadata?: AuthorizationServerMetadata): void | Promise<void>;
|
|
80
82
|
/**
|
|
81
83
|
* If defined, overrides the selection and validation of the
|
|
82
84
|
* RFC 8707 Resource Indicator. If left undefined, default
|
|
@@ -85,22 +87,41 @@ export interface OAuthClientProvider {
|
|
|
85
87
|
* Implementations must verify the returned resource matches the MCP server.
|
|
86
88
|
*/
|
|
87
89
|
validateResourceURL?(serverUrl: string | URL, resource?: string): Promise<URL | undefined>;
|
|
90
|
+
/**
|
|
91
|
+
* If implemented, provides a way for the client to invalidate (e.g. delete) the specified
|
|
92
|
+
* credentials, in the case where the server has indicated that they are no longer valid.
|
|
93
|
+
* This avoids requiring the user to intervene manually.
|
|
94
|
+
*/
|
|
95
|
+
invalidateCredentials?(scope: 'all' | 'client' | 'tokens' | 'verifier'): void | Promise<void>;
|
|
88
96
|
}
|
|
89
97
|
export type AuthResult = "AUTHORIZED" | "REDIRECT";
|
|
90
98
|
export declare class UnauthorizedError extends Error {
|
|
91
99
|
constructor(message?: string);
|
|
92
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Parses an OAuth error response from a string or Response object.
|
|
103
|
+
*
|
|
104
|
+
* If the input is a standard OAuth2.0 error response, it will be parsed according to the spec
|
|
105
|
+
* and an instance of the appropriate OAuthError subclass will be returned.
|
|
106
|
+
* If parsing fails, it falls back to a generic ServerError that includes
|
|
107
|
+
* the response status (if available) and original content.
|
|
108
|
+
*
|
|
109
|
+
* @param input - A Response object or string containing the error response
|
|
110
|
+
* @returns A Promise that resolves to an OAuthError instance
|
|
111
|
+
*/
|
|
112
|
+
export declare function parseErrorResponse(input: Response | string): Promise<OAuthError>;
|
|
93
113
|
/**
|
|
94
114
|
* Orchestrates the full auth flow with a server.
|
|
95
115
|
*
|
|
96
116
|
* This can be used as a single entry point for all authorization functionality,
|
|
97
117
|
* instead of linking together the other lower-level functions in this module.
|
|
98
118
|
*/
|
|
99
|
-
export declare function auth(provider: OAuthClientProvider,
|
|
119
|
+
export declare function auth(provider: OAuthClientProvider, options: {
|
|
100
120
|
serverUrl: string | URL;
|
|
101
121
|
authorizationCode?: string;
|
|
102
122
|
scope?: string;
|
|
103
123
|
resourceMetadataUrl?: URL;
|
|
124
|
+
fetchFn?: FetchLike;
|
|
104
125
|
}): Promise<AuthResult>;
|
|
105
126
|
export declare function selectResourceURL(serverUrl: string | URL, provider: OAuthClientProvider, resourceMetadata?: OAuthProtectedResourceMetadata): Promise<URL | undefined>;
|
|
106
127
|
/**
|
|
@@ -116,22 +137,55 @@ export declare function extractResourceMetadataUrl(res: Response): URL | undefin
|
|
|
116
137
|
export declare function discoverOAuthProtectedResourceMetadata(serverUrl: string | URL, opts?: {
|
|
117
138
|
protocolVersion?: string;
|
|
118
139
|
resourceMetadataUrl?: string | URL;
|
|
119
|
-
}): Promise<OAuthProtectedResourceMetadata>;
|
|
140
|
+
}, fetchFn?: FetchLike): Promise<OAuthProtectedResourceMetadata>;
|
|
120
141
|
/**
|
|
121
142
|
* Looks up RFC 8414 OAuth 2.0 Authorization Server Metadata.
|
|
122
143
|
*
|
|
123
144
|
* If the server returns a 404 for the well-known endpoint, this function will
|
|
124
145
|
* return `undefined`. Any other errors will be thrown as exceptions.
|
|
146
|
+
*
|
|
147
|
+
* @deprecated This function is deprecated in favor of `discoverAuthorizationServerMetadata`.
|
|
125
148
|
*/
|
|
126
149
|
export declare function discoverOAuthMetadata(issuer: string | URL, { authorizationServerUrl, protocolVersion, }?: {
|
|
127
150
|
authorizationServerUrl?: string | URL;
|
|
128
151
|
protocolVersion?: string;
|
|
129
|
-
}): Promise<OAuthMetadata | undefined>;
|
|
152
|
+
}, fetchFn?: FetchLike): Promise<OAuthMetadata | undefined>;
|
|
153
|
+
/**
|
|
154
|
+
* Builds a list of discovery URLs to try for authorization server metadata.
|
|
155
|
+
* URLs are returned in priority order:
|
|
156
|
+
* 1. OAuth metadata at the given URL
|
|
157
|
+
* 2. OAuth metadata at root (if URL has path)
|
|
158
|
+
* 3. OIDC metadata endpoints
|
|
159
|
+
*/
|
|
160
|
+
export declare function buildDiscoveryUrls(authorizationServerUrl: string | URL): {
|
|
161
|
+
url: URL;
|
|
162
|
+
type: 'oauth' | 'oidc';
|
|
163
|
+
}[];
|
|
164
|
+
/**
|
|
165
|
+
* Discovers authorization server metadata with support for RFC 8414 OAuth 2.0 Authorization Server Metadata
|
|
166
|
+
* and OpenID Connect Discovery 1.0 specifications.
|
|
167
|
+
*
|
|
168
|
+
* This function implements a fallback strategy for authorization server discovery:
|
|
169
|
+
* 1. Attempts RFC 8414 OAuth metadata discovery first
|
|
170
|
+
* 2. If OAuth discovery fails, falls back to OpenID Connect Discovery
|
|
171
|
+
*
|
|
172
|
+
* @param authorizationServerUrl - The authorization server URL obtained from the MCP Server's
|
|
173
|
+
* protected resource metadata, or the MCP server's URL if the
|
|
174
|
+
* metadata was not found.
|
|
175
|
+
* @param options - Configuration options
|
|
176
|
+
* @param options.fetchFn - Optional fetch function for making HTTP requests, defaults to global fetch
|
|
177
|
+
* @param options.protocolVersion - MCP protocol version to use, defaults to LATEST_PROTOCOL_VERSION
|
|
178
|
+
* @returns Promise resolving to authorization server metadata, or undefined if discovery fails
|
|
179
|
+
*/
|
|
180
|
+
export declare function discoverAuthorizationServerMetadata(authorizationServerUrl: string | URL, { fetchFn, protocolVersion, }?: {
|
|
181
|
+
fetchFn?: FetchLike;
|
|
182
|
+
protocolVersion?: string;
|
|
183
|
+
}): Promise<AuthorizationServerMetadata | undefined>;
|
|
130
184
|
/**
|
|
131
185
|
* Begins the authorization flow with the given server, by generating a PKCE challenge and constructing the authorization URL.
|
|
132
186
|
*/
|
|
133
187
|
export declare function startAuthorization(authorizationServerUrl: string | URL, { metadata, clientInformation, redirectUrl, scope, state, resource, }: {
|
|
134
|
-
metadata?:
|
|
188
|
+
metadata?: AuthorizationServerMetadata;
|
|
135
189
|
clientInformation: OAuthClientInformation;
|
|
136
190
|
redirectUrl: string | URL;
|
|
137
191
|
scope?: string;
|
|
@@ -153,14 +207,15 @@ export declare function startAuthorization(authorizationServerUrl: string | URL,
|
|
|
153
207
|
* @returns Promise resolving to OAuth tokens
|
|
154
208
|
* @throws {Error} When token exchange fails or authentication is invalid
|
|
155
209
|
*/
|
|
156
|
-
export declare function exchangeAuthorization(authorizationServerUrl: string | URL, { metadata, clientInformation, authorizationCode, codeVerifier, redirectUri, resource, addClientAuthentication }: {
|
|
157
|
-
metadata?:
|
|
210
|
+
export declare function exchangeAuthorization(authorizationServerUrl: string | URL, { metadata, clientInformation, authorizationCode, codeVerifier, redirectUri, resource, addClientAuthentication, fetchFn, }: {
|
|
211
|
+
metadata?: AuthorizationServerMetadata;
|
|
158
212
|
clientInformation: OAuthClientInformation;
|
|
159
213
|
authorizationCode: string;
|
|
160
214
|
codeVerifier: string;
|
|
161
215
|
redirectUri: string | URL;
|
|
162
216
|
resource?: URL;
|
|
163
217
|
addClientAuthentication?: OAuthClientProvider["addClientAuthentication"];
|
|
218
|
+
fetchFn?: FetchLike;
|
|
164
219
|
}): Promise<OAuthTokens>;
|
|
165
220
|
/**
|
|
166
221
|
* Exchange a refresh token for an updated access token.
|
|
@@ -174,18 +229,20 @@ export declare function exchangeAuthorization(authorizationServerUrl: string | U
|
|
|
174
229
|
* @returns Promise resolving to OAuth tokens (preserves original refresh_token if not replaced)
|
|
175
230
|
* @throws {Error} When token refresh fails or authentication is invalid
|
|
176
231
|
*/
|
|
177
|
-
export declare function refreshAuthorization(authorizationServerUrl: string | URL, { metadata, clientInformation, refreshToken, resource, addClientAuthentication, }: {
|
|
178
|
-
metadata?:
|
|
232
|
+
export declare function refreshAuthorization(authorizationServerUrl: string | URL, { metadata, clientInformation, refreshToken, resource, addClientAuthentication, fetchFn, }: {
|
|
233
|
+
metadata?: AuthorizationServerMetadata;
|
|
179
234
|
clientInformation: OAuthClientInformation;
|
|
180
235
|
refreshToken: string;
|
|
181
236
|
resource?: URL;
|
|
182
237
|
addClientAuthentication?: OAuthClientProvider["addClientAuthentication"];
|
|
238
|
+
fetchFn?: FetchLike;
|
|
183
239
|
}): Promise<OAuthTokens>;
|
|
184
240
|
/**
|
|
185
241
|
* Performs OAuth 2.0 Dynamic Client Registration according to RFC 7591.
|
|
186
242
|
*/
|
|
187
|
-
export declare function registerClient(authorizationServerUrl: string | URL, { metadata, clientMetadata, }: {
|
|
188
|
-
metadata?:
|
|
243
|
+
export declare function registerClient(authorizationServerUrl: string | URL, { metadata, clientMetadata, fetchFn, }: {
|
|
244
|
+
metadata?: AuthorizationServerMetadata;
|
|
189
245
|
clientMetadata: OAuthClientMetadata;
|
|
246
|
+
fetchFn?: FetchLike;
|
|
190
247
|
}): Promise<OAuthClientInformationFull>;
|
|
191
248
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/client/auth.ts"],"names":[],"mappings":"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"}
|