cdk-serverless 3.2.1 → 3.3.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 (73) hide show
  1. package/README.md +111 -0
  2. package/docs/constructs/assets/hierarchy.js +1 -1
  3. package/docs/constructs/assets/navigation.js +1 -1
  4. package/docs/constructs/assets/search.js +1 -1
  5. package/docs/constructs/classes/McpAuth.html +43 -0
  6. package/docs/constructs/classes/McpCognitoAuth.html +43 -0
  7. package/docs/constructs/classes/RestApi.html +6 -3
  8. package/docs/constructs/classes/SingleTableDatastore.html +1 -1
  9. package/docs/constructs/classes/Workflow.html +1 -1
  10. package/docs/constructs/hierarchy.html +1 -1
  11. package/docs/constructs/index.html +112 -1
  12. package/docs/constructs/interfaces/McpAuthCognitoOptions.html +17 -0
  13. package/docs/constructs/interfaces/McpAuthFunctions.html +14 -0
  14. package/docs/constructs/interfaces/McpAuthGenericOptions.html +11 -0
  15. package/docs/constructs/interfaces/McpAuthOptions.html +33 -0
  16. package/docs/constructs/interfaces/McpAuthProps.html +43 -0
  17. package/docs/constructs/interfaces/McpCognitoAuthProps.html +49 -0
  18. package/docs/constructs/interfaces/RestApiProps.html +24 -6
  19. package/docs/constructs/modules.html +1 -1
  20. package/docs/lambda/index.html +112 -1
  21. package/docs/projen/index.html +112 -1
  22. package/lib/constructs/index.d.ts +2 -0
  23. package/lib/constructs/index.js +3 -1
  24. package/lib/constructs/mcp-auth.d.ts +117 -0
  25. package/lib/constructs/mcp-auth.js +127 -0
  26. package/lib/constructs/mcp-cognito-auth.d.ts +110 -0
  27. package/lib/constructs/mcp-cognito-auth.js +76 -0
  28. package/lib/constructs/rest-api.d.ts +136 -0
  29. package/lib/constructs/rest-api.js +159 -1
  30. package/lib/mcp-auth/config.d.ts +39 -0
  31. package/lib/mcp-auth/config.js +3 -0
  32. package/lib/mcp-auth/handlers/authorization-server.d.ts +7 -0
  33. package/lib/mcp-auth/handlers/authorization-server.js +34 -0
  34. package/lib/mcp-auth/handlers/authorize.d.ts +8 -0
  35. package/lib/mcp-auth/handlers/authorize.js +32 -0
  36. package/lib/mcp-auth/handlers/index.d.ts +7 -0
  37. package/lib/mcp-auth/handlers/index.js +24 -0
  38. package/lib/mcp-auth/handlers/protected-resource.d.ts +7 -0
  39. package/lib/mcp-auth/handlers/protected-resource.js +26 -0
  40. package/lib/mcp-auth/handlers/register.d.ts +7 -0
  41. package/lib/mcp-auth/handlers/register.js +68 -0
  42. package/lib/mcp-auth/handlers/token.d.ts +8 -0
  43. package/lib/mcp-auth/handlers/token.js +74 -0
  44. package/lib/mcp-auth/handlers/types.d.ts +21 -0
  45. package/lib/mcp-auth/handlers/types.js +3 -0
  46. package/lib/mcp-auth/handlers/validate-redirect-uris.d.ts +10 -0
  47. package/lib/mcp-auth/handlers/validate-redirect-uris.js +22 -0
  48. package/lib/mcp-auth/index.d.ts +3 -0
  49. package/lib/mcp-auth/index.js +20 -0
  50. package/lib/mcp-auth/lambda-handlers/authorization-server.handler.d.ts +2 -0
  51. package/lib/mcp-auth/lambda-handlers/authorization-server.handler.js +23 -0
  52. package/lib/mcp-auth/lambda-handlers/authorize.handler.d.ts +2 -0
  53. package/lib/mcp-auth/lambda-handlers/authorize.handler.js +23 -0
  54. package/lib/mcp-auth/lambda-handlers/env-config.d.ts +7 -0
  55. package/lib/mcp-auth/lambda-handlers/env-config.js +37 -0
  56. package/lib/mcp-auth/lambda-handlers/protected-resource.handler.d.ts +2 -0
  57. package/lib/mcp-auth/lambda-handlers/protected-resource.handler.js +23 -0
  58. package/lib/mcp-auth/lambda-handlers/register.handler.d.ts +2 -0
  59. package/lib/mcp-auth/lambda-handlers/register.handler.js +23 -0
  60. package/lib/mcp-auth/lambda-handlers/token.handler.d.ts +2 -0
  61. package/lib/mcp-auth/lambda-handlers/token.handler.js +23 -0
  62. package/lib/mcp-auth/mcp/errors.d.ts +8 -0
  63. package/lib/mcp-auth/mcp/errors.js +20 -0
  64. package/lib/mcp-auth/mcp/index.d.ts +4 -0
  65. package/lib/mcp-auth/mcp/index.js +21 -0
  66. package/lib/mcp-auth/mcp/jsonrpc.d.ts +21 -0
  67. package/lib/mcp-auth/mcp/jsonrpc.js +56 -0
  68. package/lib/mcp-auth/mcp/server.d.ts +9 -0
  69. package/lib/mcp-auth/mcp/server.js +107 -0
  70. package/lib/mcp-auth/mcp/types.d.ts +32 -0
  71. package/lib/mcp-auth/mcp/types.js +3 -0
  72. package/llm.md +214 -0
  73. package/package.json +1 -1
package/README.md CHANGED
@@ -172,6 +172,117 @@ await test.cleanupItems();
172
172
  await test.removeUser('test@example.com');
173
173
  ```
174
174
 
175
+ ## MCP Auth
176
+
177
+ CDK Serverless includes built-in support for adding [Model Context Protocol (MCP)](https://spec.modelcontextprotocol.io) OAuth authentication to your API. This enables MCP clients like Claude and ChatGPT to authenticate with your API using standard OAuth 2.0 flows.
178
+
179
+ When activated, the following endpoints are automatically added to your OpenAPI spec:
180
+
181
+ | Endpoint | Method | RFC | Purpose |
182
+ |----------|--------|-----|---------|
183
+ | `/.well-known/oauth-protected-resource` | GET | RFC 9728 | Resource metadata discovery |
184
+ | `/.well-known/oauth-authorization-server` | GET | RFC 8414 | Authorization server metadata |
185
+ | `/oauth/authorize` | GET | — | Authorize proxy (redirect to upstream) |
186
+ | `/oauth/token` | POST | — | Token proxy (forward to upstream) |
187
+ | `/oauth/register` | POST | RFC 7591 | Dynamic client registration |
188
+
189
+ All MCP auth endpoints are anonymous (no API authorizer applied).
190
+
191
+ ### With Cognito
192
+
193
+ MCP clients like Claude enforce that all OAuth endpoints (discovery, authorize, token, register) live on the **same origin** as the API itself. Cognito's hosted UI lives on a different domain (`auth.example.com`), so MCP clients cannot talk to it directly. Additionally:
194
+
195
+ - Cognito Managed Login v2 requires the RFC 8707 `resource` parameter for custom scopes in authorize requests — MCP clients do not send this parameter.
196
+ - MCP clients construct the token endpoint URL from the OAuth metadata `issuer` field rather than using the explicit `token_endpoint` — so the token exchange must be proxied through the API domain.
197
+ - Dynamic Client Registration (RFC 7591) is not natively supported by Cognito.
198
+
199
+ The MCP auth proxy solves all three problems: it serves discovery metadata on the API domain, strips unsupported parameters before forwarding to Cognito, and implements a simplified registration endpoint that returns a pre-provisioned client ID.
200
+
201
+ If your API already uses `CognitoAuthentication`, add MCP auth with minimal config — a dedicated user pool client is created automatically:
202
+
203
+ ```typescript
204
+ const api = new TestApiRestApi(this, 'Api', {
205
+ stageName: 'dev',
206
+ domainName: 'example.com',
207
+ apiHostname: 'api',
208
+ authentication: cognitoAuth,
209
+ cors: true,
210
+ mcpAuth: {
211
+ cognito: {
212
+ auth: cognitoAuth, // your CognitoAuthentication construct
213
+ authDomain: 'auth.example.com', // Cognito custom/hosted domain (required)
214
+ },
215
+ serverInfo: { name: 'my-mcp-server', version: '1.0.0' },
216
+ },
217
+ });
218
+ ```
219
+
220
+ The `apiDomain` is derived from the RestApi's own domain config (`apiHostname` + `domainName`), and `stageName` is reused — no duplication needed.
221
+
222
+ ### With any OAuth2 provider
223
+
224
+ For non-Cognito providers, use `generic` mode with explicit endpoint URLs:
225
+
226
+ ```typescript
227
+ const api = new TestApiRestApi(this, 'Api', {
228
+ // ...
229
+ mcpAuth: {
230
+ generic: {
231
+ authorizeEndpoint: 'https://auth.example.com/authorize',
232
+ tokenEndpoint: 'https://auth.example.com/token',
233
+ clientId: 'my-pre-provisioned-client-id',
234
+ },
235
+ serverInfo: { name: 'my-mcp-server', version: '1.0.0' },
236
+ },
237
+ });
238
+ ```
239
+
240
+ ### Configuration options
241
+
242
+ | Option | Default | Description |
243
+ |--------|---------|-------------|
244
+ | `serverInfo` | (required) | `{ name, version }` returned in MCP initialize |
245
+ | `allowedRedirectUris` | Claude + ChatGPT callbacks | Allowlist for dynamic registration |
246
+ | `protocolVersions` | `['2025-11-25', '2025-03-26', '2024-11-05']` | Supported MCP versions |
247
+ | `scopes` | `['openid', 'email', 'profile']` | Advertised OAuth scopes |
248
+ | `stripParameters` | `['resource']` | Params stripped from authorize/token proxying |
249
+ | `lambdaOptions` | — | Lambda config for MCP auth handlers |
250
+
251
+ ### MCP Server runtime
252
+
253
+ The `cdk-serverless/mcp-auth` module also exports a JSON-RPC server for implementing the MCP tool endpoint itself:
254
+
255
+ ```typescript
256
+ import { createMcpServer } from 'cdk-serverless/mcp-auth';
257
+
258
+ const server = createMcpServer({
259
+ serverInfo: { name: 'my-server', version: '1.0.0' },
260
+ protocolVersions: ['2025-11-25'],
261
+ resolver: {
262
+ async resolve(headers) {
263
+ // Validate Bearer token, return principal or throw McpUnauthorizedError
264
+ const token = headers.authorization?.replace('Bearer ', '');
265
+ if (!token) throw new McpUnauthorizedError('Bearer');
266
+ return verifyToken(token);
267
+ },
268
+ },
269
+ tools: [
270
+ {
271
+ name: 'search',
272
+ description: 'Search documents',
273
+ inputSchema: { type: 'object', properties: { query: { type: 'string' } } },
274
+ async invoke(principal, args) {
275
+ const results = await search(principal, (args as any).query);
276
+ return { content: [{ type: 'text', text: JSON.stringify(results) }] };
277
+ },
278
+ },
279
+ ],
280
+ });
281
+
282
+ // In your Lambda handler:
283
+ const response = await server.handle(parsedBody, event.headers);
284
+ ```
285
+
175
286
  ## Breaking Change: `axios` Removed
176
287
 
177
288
  CDK Serverless no longer depends on `axios`. The library now uses the
@@ -1 +1 @@
1
- window.hierarchyData = "eJyVkztvwyAYRf/LN5MmNoZgtqSVqm59bVEG6pAYlUAEZIr83ytat6WN5cfiwb4f5x4MF3DWBg98w0q0xCjPEcXZFoGTey2roKzxwC+Q5/FpxFECh4dbezAq2NU51NIEVYmYAwTvyuyA54QiODsNHJQJ0u1FJf28e+imDkcNCCotvAcOwe9mcZXZz2T8WCu9c9IA3xTltkFQlEmb/jJZzr7LfDKkn08r8vWiQbDECXQtvFyd1KOzJz8gnkan6mJCEVmw6MzKa3yfZRsZ8PpLYxQRXEQaJjTB3Ttxqp/0SOF/6RHOEci6gX2Kv6nhv0cWLFn/Wfow0iaNjlMhuLhG9Xm0kWEJirP0Gr4oc9DyVbxpeSeC8ME6OXQLu2amnkpakHhGaEGSNr1lOqQnFWl3oGk+AKzSjMo="
1
+ window.hierarchyData = "eJyVk0tzwiAUhf/LXWNVEglhZ9uZTnd97RwXNF4NUwQHcOXkv3ewtqU1k8eGBZx7z/ngcgJnbfAgVrwkRUYoJUWWrwk43GqsgrLGgzgBpXE1co8g4PHO7owKdnkMNZqgKhl1QOBDmQ0IumAEjk6DAGUCuq2s0E/bi27qsNdAoNLSexAQ/GYSu0x+KuNhrfTGoQGxyst1QyAvkzTdYeaUf4c5e6CfjgvytdEQKLLE9FZ6XB7Uk7MH3wOeSsfiZgtG2GwemXl5bd9FeZH0cP1144wwyqNbtmCJ3YOTh/pZDwT+px7AHA15u2EX4q+q//XYbJ70f0EfBtKk0mEojPJrqy6Oi2TICObpN3xVZqfxTb5rvJdB+mAd9v3CtpqxU1nk5xkp8pSzM0wL9Kgglxtomk+59IzW"
@@ -1 +1 @@
1
- window.navigationData = "eJyNlF1PwjAUhv9Lr4kKCX5whxiNxERFoheGi7IdtobSLu1BNIb/bjQb2+zpGdfnOc/ete/2/i0QPlGMxNh7wElqRE8UEnMxEomW3oM/rSYnOW606Im1MqkY9QeX+95h+1p6GBcqXC4H3O7EZkahHW8xB4MqkagsEYPEOO+dk0X+rMlY9YwzPMjNMpW3W5PQkdpzzjQDj2SQcsDtviiTaZjLpYYbidKjdRCKKIqzvlm3Xmm7C03VhNuuOvHkbOFrhTIIbiWTRmv+iLZqMDwPqxM3NQFORBYkro3j3EPq4sTN/xhOd99R/oaVRln5dIfHiAOMlfJ1bHq7K9lWT/0MvNUf4B6L3xj06QYUp2x/ofErI7hu7dzJRJmMC0uBnLj8HcSDNgFORJ193Bqlj30EeJXR7QooTvmK+pgKhBgnrf5n8ddvEd33HkTDr+Jw13Sgs6uL/nCwX/wACnuUNw=="
1
+ window.navigationData = "eJyNlU1PAjEQQP9Lz0SFBD+4IUYi0ahI9GA8lKXsNpR20w6iMfx3o9mFLp3O9jxvXqftTPv+w0B8ARuwoXMCRgvNOqzkULAByxR3TrjTOnJSwFqxDltJvWCDbu9y19lnX3MnhqUMk6sAlTsyuZZghhsohAaZcZAGKQPFKO/Y8rJ4VmhZhxhluOfr+YLfbnSGl9SMU6aHrPwrPFRUgZZcb++owotTpqlwgB5HFaByX6TOlZjxuRI3HLgDY0UowijK+mbsaqnMNjTVESq77swna0p3UEgNwi555vXuP9FU9frnYQPHTT5AidA2jWvjOLXIoX3j5iOG0t21jKBnxVFSPtlCijjASCndjr63vSWb6ombCmfUp7CP5V8Z+OkGFKVsvhPxK0O4du3M8kzqnCoWAylx9ShVV02ZUTJBXe+RtO6hBOFYaGFlllBrk0xQJzjTZfHL94EWkTeDpO+Yo7TVFxD3+QAlwuYtbo3SqUsIJ3P8RQkoSvkKKmXsQ4yS1n9YfPsNon3Wg9Lgu9zPN17Q2dVFt9/bffwCDG1v9A=="
@@ -1 +1 @@
1
- window.searchData = "eJy1XW2T3LaR/itXs18nCpvv1DdZinN2HMfRSk7VbamuqCF2l9IsOSE5kjcq/fcrgORMA2iQzRneJ8tLdPdD4EGj0Y0Bv22a+mu7eXn3bfO5rIrNS/DT7abKn8Tm5eZV24rudVFttptjs9+83Oz2eduK9s/jgxeP3dN+sx3/vnm52Xzfjpoi8E+adnXVds1x19XNtLIbvSVSvN0c8kZUHcZ1NgaeH56sSZnuh+Pus+hmrKmWH8eWV1h7Uz/lZfWr/AvDYqFaV33ry6z+p67mTA1N+PrR0P+Qt+LVobQsDH9fZeCxLta4j6BcA3EoJ4ZBs5YfSscYdG3xp7L906GpO7HrRLHM/o//fPPrrOX7f6sptZbN/67bjvXGj3Xbrfm+Up8o/ocioma6b2excaFlRM7X9UNVdvWrY/coqq7c5V1Z206KbLUKcd2aWTSm4Ts6eXdsu/rp76Jt8wfx47HaLXzXm17BU6/g/qxgBWxlIdt0z7/V9X4JpFHu0MutgOTQiNvyoXp/uKSHDo1oy4fqeFi3dw6NeFd/FtVfRSUa1fJCcJ3U8nDSsi7KYyuaw8LxQzKXIfC98Dyb86J434pGkuj1vpQKFkDJi2JEsxuFL+wV5GD+2uSHx3/uqQXw/GgVV2KoY/kPhM69Ksxa6ttcYWFirSVsMZfb/xr+UFaPoimNVYEFi1yCCUCzq/D1UJwrMwGHtThfCWliwTYRMdfsKwF1+ce9eJN3+W19bHbzqFT7Iu/ydmy/gL+m03nzXOVP9ZuPP9++FW29/yLmZ2deFIWSKj5+apuz1Aoofu/2l8D40u3XwbGsF9Z6+1/yp49FvsTyXkmsY31hn6/T1w+iG+OAH+vmH4dhVZ8F8CC6ceW/r5sayV2MpMmr7tVuJ9p23rpsm49tV7Ao1+ElVvO+/QqW31dLbR+r5dZxONGz3Bn96Y9XCSsIlazQwkA61ZlvxF50QqURWOaVUKGE8kHoagxvRV4oBDaBnRAakRf5KHM1gltRFX95ysv9AgStqAoxylyN4J1cE/8lF18+ArWOfh1krkbw/rCvl4/DUUmtNxLvh22A5MQCFINU00utimLhoGAoa4xNK3pusBC0oifFCjbLJ1EfeT5BWj01v9LuuIfkGp7dxDotY9f+VrQdtU0c/r6KM8e6WF58BLVgd6jZmNoazuue2BeaVtbYFM4DIneEJpTrtoPzIJx7QRPI9RvBeTC3B7GbBdL2jS6iwcROUzOzxjbThmLG+a+qunp+qo/tKdq21yn97YsiH2VqLMPtDBPBa5WEle3khoPc65oA+rxtI9quETPb3Xn7iyyvYXO3F3l1PMwTbWhokW2qOjBjm7vD0nAs3V7xMcxwDRm+mGFPdVHeP5/elGm5lzq96tUoDnm3e7wVu2NTds/TplXT9tx0lXHX7N/uHsWTmOkBDUZ7klgFTSu6xX6nFd11fgeHJrdl9bAX78YUW9vVjT33qUarBC1OxawIhsQ+lURcYH86zp2xrA3xfVM/0SG227qUuQoBHuJ/1c3n+3391bI/PlhlKDVlrOE74XIMmdrv/NaU1a485HbErhtUjQ+o8WU2m5oYJ93S0OQy/V+H568ae6XRzYwt88a9vBDW/Ci2Tub81tSHs08pq0409/kOnQRRDSZZoL1EYcfuk0pvFpxk6bFOBIwLzJJBMsco7sThkIGzD/FzfhfmRVFKt53v/1J9Yam9OYsIJUK/kgZ3eqNROXqSMO3YcFxg2DV8pNHrDZpn06Ytyta7wj3fWCbp8ybThk2Zy81Pz03bNGNqcswSW7lJs44t3VKzfZ3nHwc9apq03IvUh+mgiW/8XZPvyuphifHuJHK58adanlNo2Ja19pebbafCxUkAveS5NjtIXgGlyx8En+iq+SU8x4sBeTzEuTS4W/MXioemPl6k/eYkSb/txKssOci1ANDlB7qmeSBaVVuRRRZUol0ArBVtX2kZNawFrWvKhwfRXDR8SHYtOMch+e2aNHOQxmT45Cy6HNal8+iE6zAouAIYnuzniq0TmdFkxfiP0jwRAvJO2FwTFdKApjPRV8Jx8dQF5f8FxkQESeOggsg1gMzGlTQcd2i5AqhC3JeVouSP5d65GJPAzqL35X56YeaCmQx9aRCTpaVremY6ICbBTJc5rgEzGyaTeNyR8mqQJoLnCUhU/LwCpOmQmsTjiKpXAMMNtElYs7H2GgCnwm8aFRmBrwDl2IpfhZw7t12++8wn+LEVlZJrR7ml/geHCz9N/+AEgaFb8oMH6zQ+T/f8iXzHKzje9+evHeNdrVYLgqRjUYpqRzLMofcGyTje0Ybt2u+07VE07xu6nx32e6FjM9HJbACfvn5uF5qXIhcb10Z3sjCEkSwuDk3UZVh6Z2ozNHL6LX9ux6O9E4uj1Yj/dofyIPZlJW47cZC+coH+m1G27cShys2aI35j+y3cPrt9/D3fHxcBUVJfRqnlEHCH68elnPsqotmKeyuXdmaKnXqHBb8xZgFh/OJ4KQzixBUbCiNLvABOIdpdUx5cS4YTii53NQxRdc3zIgCjxNWmH/Oq2NPJKqfxs8zV5stqtz8W4vbN3xYhGMTa4vMaID59XTYn+vZXm53dCzkB8CoHi6FM7IFmoMzVERZAmYzmnTDmc+oLIDgjAaf5JWeR502rg9jLGHE+Ib8KH47m4WQOhoUnlKd2ML9gPs7OEL0df3n+423+PMt5QvnNH03+zKO88Qr02w7nopwxCH6+YvBhqb0wq6vBd4GZOFo2DWn5+bJrcssEgAsSy0wgLi9HglgfwEQ+mUCwNJnMgjC7aSeAXJZG5sKpm/I/SvPtrj7QTpjGdBJsR8ErSGoD+eHZPhi8FNPHZ/Y54Tl49XBLhHhbHx1rFQmpHu6FEM0odzmMXU3XM23DQ8vLTfGqC7bhBaUFFozJjRNhfnlRgQNjuqJgw7ignMCB8alPIEmSi+bd84GJ5tPXLj+Jdb3Y5UMyG8TbAC6rZiwGs9hjaLjW8hWzOwsXjqWlFQ6Y6bqKjeSCogoHRrM03ruREvmhnD5WwDHNLebYEK6q5LCgTW38CDyLazgOEDgSpxK2zmFyNl5wflnd5LRc+c1JkH8mfyYDtWuenXmwGTCa8OqA/ibI1Bgb02fhTpRxYLn4wRo61WjBGbt9/THf/1QV4g86qKJ13/Ry5Ulu/m179C6nXe8uQaHEVgNxaMqnvHlmDD+CMAhxx3wSgPyp97v6l/KLeNV1Tfnx2JGuyYFESnf1vvwiciS9HBKmH7oAZiLisFstcEj25Ubzmm8YVxwR0B0QvuRNKXtiybvdYKELAOBOHn/K4vT7WoMlvp6zh7CVL9lE6NhngdweP7Zd2R2dVJpE0xrSV0Da1w8PZfXwWr7iw9EdtBJ4BtGdIXoFmLbLO/H3fPdYVsK1rSCAKLGnXmxyW8ECMYS/l/TIIHpdj/helkB0/sHdL+Q+R77nmCid8DUfthu1LGxeftt8EU0rAb3c+C+CF9lmu7kvxb6QdzpvRm7L+z/V1YhFvTuqf34Ymv0u5A/5ZOO+9Z+9zfbO2wbJCy8KP3zY3o3C6oH6w6jj/BclCJvtHWwD70Wc6YJgCYIm6G+2d/429F9kga8J+pagrwkGm+1dQAkGlmCgCYab7V24DdMXno40tORCTS7abO8iQi6y5CJNLnZ1TWwJxppgstnexdsgexHFiSaYWIKJJphutncJJZhagqkmmG22d+k2CF4EiS6YWYKZPvySDRklCTZzwKCO4o5H9CwQ5NHZA76TdzZ/QCcQSFoAUHZtCoHOIZDUAJK3YPMIdCKB5AcElGGbS6CTCRSbKPqCTSfQ+QSSJRBRxACbUqBzCiRTIKYM26wCnVYgyQIJJWsTC3Rm+Z5rhH2bWb7OLF8xKyW9i00t33BMvmv6+YRr0qnlB64Z6NvU8nVq+aFrEvo2s3ydWX7kmoa+zSxfZ5avmJURg+TbzPJ1ZvmSKz41hX2bWL5OLF9yxaemoW8Ty9eJ5Uuu+D4laxPL14kVSK741CwMbGIFOrECSRWfmoWBzatA51WgVryIXLlsYgXGoie54lOzMCCWPZ1YgeSKT83CwCZWoBMrkFzxU0rWJlagEyuQXPEpYgU2sQKdWEHimv2BTaxAJ1YguRJQpAxsYgU6sQLJlYAiZWATK9CJFUquBBQpQ5tYoU6sUHIloEgZ2sQKdWKFkioBGdnYvAp1XoUqmqKim9DmVWjEU5IqAcXJkAipdF6FkioBxcnQ5lWo8yqUVAkoToY2r0KdV6GkSkBxMrR5Feq8CiVVQopXoc2rUOdVmLn4HNq8CnVeRZ5zNYtsYkU6sSJwrWaRTaxIJ1bku1azyCZWpBMrClyrWWQTK9KJFalInZqEkU2syAjWnSthRMTrOrEiyZWQmsCRTaxIJ1YkuRJSEziyiRXpxIoUsagJHNnEinRiRZIrIbk9sYkV6cSKPeeKFNvEinVixZIrITX7Y5tYsU6sWHIlpGZ/bBMr1okVS66E1OyPbWLFOrFiRSxq9sc2sWKdWLHaBlKzP7aJFRs7QcmVCKj9dUxsBnVmxc6lMLaZFevMiiVZIp+awrFNrVinVizZElGUjm1qxTq1EkmWiKJ0YjMr0ZmVOHMKic2sRGdWIskSUdMhsZmV6MxKJFkiitGJzaxEZ1YiyRJRjE5sZiU6sxLFLIrRic2sRGdWopiVUcxKbGYlRp5BJRooSidEpkFnViK5ElM+OrGJlejESiRXYp8EbTMr0ZmVeq6FJbWZlerMStViGJAZEptaqU6t1HflyFKbWqlOrVSyJQ5Jwza3Up1baegc49QmV6qTK3Wuh6lNrlQnVyrpEkfbIHrhhYawTa5UJ1eqyBWTqG12pUYiS7GLTmURuSydXmnm9LapTa9Up1cmGROnlHBm8yvT+ZUpflHrS2bTK9Pplalgi5qMmU2vTKdXFjizUplNr0ynVyYJk1AzObPZlensyiRhEipiymx2ZTq7MsmXhFpeMptcmU6uTNIloZaXzOZWpnMrU1lSaonIbGplRp7U7bkyIlVq5kqdrqt/pEujvw3ibu/VPzPljZSp53Rg/SNT3Miaem4f1j8z5Y3Mqad4Rm5F+memvJE89SKnG+yfmfJGAtWL3alqIoXqGTlUL3E6w/6ZKW+kUb3U6Q/7Z6a8kUr1MqdL7J+Z8gb5VPKd9opA5eqtZD04HSOQ+XqDfSoJn5C5YCplb+bsVR4+oYIkoLL2Ztq+z9vTKXAqcW9m7lU2PqE8O1C5ezN5rxLyKV3qILhn5u9VSj4lKxZUAt/M4KusfEp5aaBy+GYSXyXmU7JsQaXxjTw+qNw8vQcBIpUPRi4fVHo+JSsfRDIfjGw+qAx9Srl7IPL5YCT0QSXpU7L8QaT0wcjpQ5/UJ1lPZPXBSOuDStXT6w0QmX0wUvug0vV0tYpI7oOR3QeVsSdrrUDk98FI8INK2qfknCVS/GDk+EHl7VNyzhFZfjDS/KBS9xk554hEPxiZflDZ+4yuEhK0M5L9oPL3GTnniGw/GOl+UCl8x2pDZPzBSPmDSuM7Vhsi6w9G2h9UKt/h7YnMPxipf1DpfMekJ7L/YKT/QaX0M9LnEAUAMCoAoLL6DndPFAHAqAKAyuxnpM8h6gBgFAJAJfcz0ucQpQAwagGg8vtZTBeZCe4Z9QBQOX6H1yBKAmDUBEDl+TPSaRFVATDKAhA6C5lAFAbAqAyAyvY7wlyiOABGdQBUxp8Oc4n6ABgFAlBJf0eYS9QIwCgSgEr8Z6TTI8oEYNQJQOX+M9LpEZUCMEoF0NcKPNLrEcUCMKoFEPVnMki3RxQMwKgYQF8yoIN8omgARtUAVCXAEeQThQMwKgegqgF0kE/UDsAoHoAqCIBHum2ifgBGAQEid8YEiBoCGEUEUIUB8OgjIgT5jEICRBObDKKWAEYxAaKJTQZRTwCjoACqRuDwXERJAYyaAqg6gWOTQpQVwKgrgKoVOJYtorQARm0BVL0APPqYDUE/o74AqmYAHun5iRIDGDUGiHv+keEmUWYAo84AqnQAHum6iUoDGKUG6GsNHum9iGoDGOUGUBUE8Ej3RRQcwKg4gKoiAH0mjCg6gFF1AFVJAPpsF1F4AKPyAH3pAcj5TxQfwKg+gKooAH3EiyhAgFGBgKQ/mkbyjyhCgFGFAFVZACD5RxQiwKhEgKouAH3aiyhGgFGNAFVgcLh/oh4BRkECVJEB6BNjRE0CjKIEqEIDAMlfoi4BRmECkp5/JH+J0gQYtQlQ9QYgD0QBUZ4Aoz4BfYGCXj+ICsX4N3Uw+ItoOlH81B8QvrvbuL5m9W3zv8Mp4vB0LvnbJoo3L799/34+Nfzy23d0cFg+k6YdX6hCOgOkM+HqpD6vfNbpe2ed/mKd2vd7kVJASlOuUnyvw1lXjDoyyXrpbPiv3JP3/wh9rhVHNyArfsbVZX45GelDQxV4XH3OgQ/RwLP7c7zsZLcv1VH1sz6Iz/qArc812AhcADxl03MnSxC8MOCplB9YRG+YovGEXiZijoP+EUXERETEXtb3B83M1x6/iXjWid40HXQGg04mo/HdH2e96PWHueKHg95Bf+oNU8cb/xGGXItWzyC2pzDqHf8RRly9/SfrEO+RH4mY6PBlcIikiA6j72B65dOtImdtyGcOnZeOWr3xH+Ey9cPvps82IjSECbMHzdvnztqwOxrfn+ntT3eEInahDpAJdZ4e/VIUxB7kQNIRnTf+I+TCJO43QS4lxS6F6fJmridB2jOsnbl8EDeNIP/l4S5meq6PeSsMPxihCbREh0XHGE3FhNd/2nco0aTGmHh9tetv2nVTCDRCXq7Tfm00shlXMfqaG4KIEPaS8TgRBwc9uJJgWFzCwXHHw/8nXPONwSRsmblS9XHok2jb/EGMX7HUtGKlvBUa/wIXK0KzX+65WKqIn5uiNRVHN96w7EE0OuaE56+cPyLF2HGgkvAclXYvJ3Kp2EExY+bxhgU82GhyyQwISw25YkSI+clA1XTsTG+MuyPegOHrFzBaPFIxz0EZtyZgbXg0Yt4oD5eUonHArpy5E0AfoET9h5bcmKfH+cFcFMeg8Q0GRse81UH/Ki7yx2gQYp57MO5ywGOAuy/m0Vh9jTLf7USr6fIRroBHM6RJ+nVNGyJHwJsXSNuxsvSh+RrwmKv0FWIvOqEiNS0+QwtYsKDb0Ec8EfUQSRLeNkIpa0ReKGTaOATI1QdMIktt6gNR6ktRmjYUiYdM4kpt59tDNW1okoVM7kptx8O+Jt8VLUbMlEKvb9hqyx7U9KGRYG5kLX32S6OJwdyzPciPMvx7b26SscNkj+ygyAqVEvSuGZfC/VfXkBI0DzLeAJyuekbxOA4HmekXfAMc0oRDiSFOG9a+aPhvOq6F3hjQMbeq1L49RsiZAUU5Gx0nOLZgRmv69+cQZ9D8hSEcyJgqh2vtHCBxVwPPo+I7ttGYabEpzyuU9N1hKC4IMDzeZEGft0CKMDrgDfE5Z3m6kg8pxAG0z3vd05cvkBo8sMykoLplHHU8VhHwZi9x1SEOJ7DGiEeKPilLbVp8RLGAFx/qyiyfl2IP6vOmvXG3Ipr7yIGmoy/xht0fBGNCJBofpbyxdt+ZiDsa05tZWzAuQUQvghaodMTvpeOLnHZkPJJpZohuyzD/mQGKfg0Y3tHhlYMZttPX+2Cl2P8ykydPdVHenweLjtwR+2LedMPXRaIBw2nocZy8scjCTNIc8m732IrdsSk7bUsVotePeUuFpqvdPYonfZxCNJOZu1ziCzFoHuNts8/rykOjtt/HA5kf0eYTV19XfxbVkBREg64pxmzn+TB84RxmJV6IEl6QNFzyqQ0FmjHMxKp+VSiayTgdEI7lA+b2tqmN/Tcu1/BYZ37aFgUnqK8yHt9a0c2UuSLUc8zkRys6K9EQoMnLLLVINeWTqI/6HhTNU2b1ohXd+ZMKSBOansz8/Vz8FaERiMd01OihxtAcmPkLypjFRnlUCU01JoWQZiI7hxeCmNkx50tkkcPG9b3x5WGcMcG4I2EuCto3q5BTxNPRZ76/dcMc9jg4xE94q4qdV0MhYTyuVWPuHJhh3Xno7YQ0AsksEWpfNkHuDK8BAW+0ySs5cRfigJhZEaAv28NbOhz0pDx3e/7iNvKSCFzG80TWVyWRNhxbA4/JlDMCvLaP0ei4dQVmsk3/mjcCicY447HF+AA30oX8TcajC7pTFJNEe2PecoUOdxAxNmjxDDOn+HW4t1GbvegdmTHHqCZvNNZGiB7Mdxw12a5eOxDDrLZrX9hBsx53PjPDaWadcBZyXsGH7Sm43by8+/D9+/8BzD2h5w==";
1
+ window.searchData = "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";
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>McpAuth | cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">cdk-serverless</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">McpAuth</a></li></ul><h1>Class McpAuth</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>CDK construct that creates Lambda functions for the MCP OAuth façade.
2
+ Service-agnostic — proxies authorize/token requests to any upstream
3
+ OAuth2/OIDC provider.</p>
4
+ <p>Use with <code>RestApi</code> by passing <code>mcpAuth</code> prop, which auto-injects the
5
+ required paths into the OpenAPI spec and wires Lambda integrations.</p>
6
+ </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">mcpAuth</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">McpAuth</span><span class="hl-1">(</span><span class="hl-5">this</span><span class="hl-1">, </span><span class="hl-2">&#39;McpAuth&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">apiDomain:</span><span class="hl-1"> </span><span class="hl-2">&#39;api.example.com&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">authorizeEndpoint:</span><span class="hl-1"> </span><span class="hl-2">&#39;https://auth.example.com/oauth2/authorize&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">tokenEndpoint:</span><span class="hl-1"> </span><span class="hl-2">&#39;https://auth.example.com/oauth2/token&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">allowedRedirectUris:</span><span class="hl-1"> [</span><span class="hl-2">&#39;https://claude.ai/oauth/callback&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-4">clientId:</span><span class="hl-1"> </span><span class="hl-2">&#39;my-client-id&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">serverInfo:</span><span class="hl-1"> { </span><span class="hl-4">name:</span><span class="hl-1"> </span><span class="hl-2">&#39;my-mcp-server&#39;</span><span class="hl-1">, </span><span class="hl-4">version:</span><span class="hl-1"> </span><span class="hl-2">&#39;1.0.0&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">stageName:</span><span class="hl-1"> </span><span class="hl-2">&#39;dev&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">});</span>
7
+ </code><button type="button">Copy</button></pre>
8
+
9
+ </div></div></section><section class="tsd-panel tsd-hierarchy" data-refl="530"><h4>Hierarchy</h4><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-signature-type">Construct</span><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">McpAuth</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
10
+ </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#functions" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>functions</span></a>
11
+ <a href="#mcpenvvars" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mcp<wbr/>Env<wbr/>Vars</span></a>
12
+ <a href="#node" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>node</span></a>
13
+ </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="#tostring" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>to<wbr/>String</span></a>
14
+ <a href="#with" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>with</span></a>
15
+ <a href="#isconstruct" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Construct</span></a>
16
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Constructors</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="constructor"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="constructormcpauth"><span class="tsd-signature-keyword">new</span> <span class="tsd-kind-constructor-signature">McpAuth</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">scope</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Construct</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">id</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/McpAuthProps.html" class="tsd-signature-type tsd-kind-interface">McpAuthProps</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">McpAuth</a><a href="#constructormcpauth" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">scope</span>: <span class="tsd-signature-type">Construct</span></span></li><li><span><span class="tsd-kind-parameter">id</span>: <span class="tsd-signature-type">string</span></span></li><li><span><span class="tsd-kind-parameter">props</span>: <a href="../interfaces/McpAuthProps.html" class="tsd-signature-type tsd-kind-interface">McpAuthProps</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">McpAuth</a></h4><aside class="tsd-sources"><p>Overrides Construct.constructor</p></aside></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="functions"><code class="tsd-tag">Readonly</code><span>functions</span><a href="#functions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">functions</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/McpAuthFunctions.html" class="tsd-signature-type tsd-kind-interface">McpAuthFunctions</a></div><div class="tsd-comment tsd-typography"><p>The Lambda functions created for the OAuth endpoints.</p>
17
+ </div></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="mcpenvvars"><code class="tsd-tag">Readonly</code><span>mcp<wbr/>Env<wbr/>Vars</span><a href="#mcpenvvars" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">mcpEnvVars</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span></div><div class="tsd-comment tsd-typography"><p>The environment variables map that should be injected into the MCP RPC
18
+ handler Lambda (if you have one) so it can read MCP config at runtime.</p>
19
+ </div></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="node"><code class="tsd-tag">Readonly</code><span>node</span><a href="#node" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">node</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Node</span></div><div class="tsd-comment tsd-typography"><p>The tree node.</p>
20
+ </div><aside class="tsd-sources"><p>Inherited from Construct.node</p></aside></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Methods</h2></summary><section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="tostring"><span>to<wbr/>String</span><a href="#tostring" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="tostring-1"><span class="tsd-kind-call-signature">toString</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#tostring-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns a string representation of this construct.</p>
21
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><aside class="tsd-sources"><p>Inherited from Construct.toString</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="with"><span>with</span><a href="#with" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="with-1"><span class="tsd-kind-call-signature">with</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">mixins</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IMixin</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IConstruct</span><a href="#with-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Applies one or more mixins to this construct.</p>
22
+ <p>Mixins are applied in order. The list of constructs is captured at the
23
+ start of the call, so constructs added by a mixin will not be visited.
24
+ Use multiple <code>with()</code> calls if subsequent mixins should apply to added
25
+ constructs.</p>
26
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">mixins</span>: <span class="tsd-signature-type">IMixin</span><span class="tsd-signature-symbol">[]</span></span><div class="tsd-comment tsd-typography"><p>The mixins to apply</p>
27
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IConstruct</span></h4><p>This construct for chaining</p>
28
+ <aside class="tsd-sources"><p>Inherited from Construct.with</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="isconstruct"><code class="tsd-tag">Static</code><span>is<wbr/>Construct</span><a href="#isconstruct" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="isconstruct-1"><span class="tsd-kind-call-signature">isConstruct</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">x</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-kind-parameter">x</span> <span class="tsd-signature-keyword">is</span> <span class="tsd-signature-type">Construct</span><a href="#isconstruct-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Checks if <code>x</code> is a construct.</p>
29
+ <p>Use this method instead of <code>instanceof</code> to properly detect <code>Construct</code>
30
+ instances, even when the construct library is symlinked.</p>
31
+ <p>Explanation: in JavaScript, multiple copies of the <code>constructs</code> library on
32
+ disk are seen as independent, completely different libraries. As a
33
+ consequence, the class <code>Construct</code> in each copy of the <code>constructs</code> library
34
+ is seen as a different class, and an instance of one class will not test as
35
+ <code>instanceof</code> the other class. <code>npm install</code> will not create installations
36
+ like this, but users may manually symlink construct libraries together or
37
+ use a monorepo tool: in those cases, multiple copies of the <code>constructs</code>
38
+ library can be accidentally installed, and <code>instanceof</code> will behave
39
+ unpredictably. It is safest to avoid using <code>instanceof</code>, and using
40
+ this type-testing method instead.</p>
41
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">x</span>: <span class="tsd-signature-type">any</span></span><div class="tsd-comment tsd-typography"><p>Any object</p>
42
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-kind-parameter">x</span> <span class="tsd-signature-keyword">is</span> <span class="tsd-signature-type">Construct</span></h4><p>true if <code>x</code> is an object created from a class which extends <code>Construct</code>.</p>
43
+ <aside class="tsd-sources"><p>Inherited from Construct.isConstruct</p></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#functions"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>functions</span></a><a href="#mcpenvvars"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mcp<wbr/>Env<wbr/>Vars</span></a><a href="#node" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>node</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#tostring" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>to<wbr/>String</span></a><a href="#with" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>with</span></a><a href="#isconstruct" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Construct</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>McpCognitoAuth | cdk-serverless</title><meta name="description" content="Documentation for cdk-serverless"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">cdk-serverless</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">McpCognitoAuth</a></li></ul><h1>Class McpCognitoAuth</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Convenience construct that creates an McpAuth backed by Amazon Cognito.</p>
2
+ <p>It creates a dedicated Cognito user pool client configured for the
3
+ authorization code + PKCE flow and wires it into the generic McpAuth
4
+ construct. Use this when your authentication is managed by Cognito;
5
+ use McpAuth directly for other OAuth2/OIDC providers.</p>
6
+ </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="ts"><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">mcpAuth</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">McpCognitoAuth</span><span class="hl-1">(</span><span class="hl-5">this</span><span class="hl-1">, </span><span class="hl-2">&#39;McpAuth&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">auth:</span><span class="hl-1"> </span><span class="hl-4">cognitoAuthentication</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">apiDomain:</span><span class="hl-1"> </span><span class="hl-2">&#39;api.example.com&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">authDomain:</span><span class="hl-1"> </span><span class="hl-2">&#39;auth.example.com&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-4">serverInfo:</span><span class="hl-1"> { </span><span class="hl-4">name:</span><span class="hl-1"> </span><span class="hl-2">&#39;my-mcp-server&#39;</span><span class="hl-1">, </span><span class="hl-4">version:</span><span class="hl-1"> </span><span class="hl-2">&#39;1.0.0&#39;</span><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-4">stageName:</span><span class="hl-1"> </span><span class="hl-2">&#39;dev&#39;</span><span class="hl-1">,</span><br/><span class="hl-1">});</span><br/><br/><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-7">api</span><span class="hl-1"> = </span><span class="hl-5">new</span><span class="hl-1"> </span><span class="hl-0">MyApiRestApi</span><span class="hl-1">(</span><span class="hl-5">this</span><span class="hl-1">, </span><span class="hl-2">&#39;Api&#39;</span><span class="hl-1">, {</span><br/><span class="hl-1"> </span><span class="hl-4">mcpAuth:</span><span class="hl-1"> </span><span class="hl-4">mcpAuth</span><span class="hl-1">.</span><span class="hl-4">mcpAuth</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-6">// ...</span><br/><span class="hl-1">});</span>
7
+ </code><button type="button">Copy</button></pre>
8
+
9
+ </div></div></section><section class="tsd-panel tsd-hierarchy" data-refl="563"><h4>Hierarchy</h4><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-signature-type">Construct</span><ul class="tsd-hierarchy"><li class="tsd-hierarchy-item"><span class="tsd-hierarchy-target">McpCognitoAuth</span></li></ul></li></ul></section><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Constructors</h3><div class="tsd-index-list"><a href="#constructor" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a>
10
+ </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#mcpauth" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mcp<wbr/>Auth</span></a>
11
+ <a href="#node" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>node</span></a>
12
+ <a href="#userpoolclient" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>user<wbr/>Pool<wbr/>Client</span></a>
13
+ </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Methods</h3><div class="tsd-index-list"><a href="#tostring" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>to<wbr/>String</span></a>
14
+ <a href="#with" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>with</span></a>
15
+ <a href="#isconstruct" class="tsd-index-link tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Construct</span></a>
16
+ </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Constructors</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="constructor"><span>constructor</span><a href="#constructor" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="constructormcpcognitoauth"><span class="tsd-signature-keyword">new</span> <span class="tsd-kind-constructor-signature">McpCognitoAuth</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">scope</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Construct</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">id</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">props</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/McpCognitoAuthProps.html" class="tsd-signature-type tsd-kind-interface">McpCognitoAuthProps</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <a href="" class="tsd-signature-type tsd-kind-class">McpCognitoAuth</a><a href="#constructormcpcognitoauth" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">scope</span>: <span class="tsd-signature-type">Construct</span></span></li><li><span><span class="tsd-kind-parameter">id</span>: <span class="tsd-signature-type">string</span></span></li><li><span><span class="tsd-kind-parameter">props</span>: <a href="../interfaces/McpCognitoAuthProps.html" class="tsd-signature-type tsd-kind-interface">McpCognitoAuthProps</a></span></li></ul></div><h4 class="tsd-returns-title">Returns <a href="" class="tsd-signature-type tsd-kind-class">McpCognitoAuth</a></h4><aside class="tsd-sources"><p>Overrides Construct.constructor</p></aside></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="mcpauth"><code class="tsd-tag">Readonly</code><span>mcp<wbr/>Auth</span><a href="#mcpauth" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">mcpAuth</span><span class="tsd-signature-symbol">:</span> <a href="McpAuth.html" class="tsd-signature-type tsd-kind-class">McpAuth</a></div><div class="tsd-comment tsd-typography"><p>The underlying service-agnostic McpAuth construct.
17
+ Pass this to RestApi's <code>mcpAuth</code> prop.</p>
18
+ </div></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="node"><code class="tsd-tag">Readonly</code><span>node</span><a href="#node" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">node</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Node</span></div><div class="tsd-comment tsd-typography"><p>The tree node.</p>
19
+ </div><aside class="tsd-sources"><p>Inherited from Construct.node</p></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="userpoolclient"><code class="tsd-tag">Readonly</code><span>user<wbr/>Pool<wbr/>Client</span><a href="#userpoolclient" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">userPoolClient</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">UserPoolClient</span></div><div class="tsd-comment tsd-typography"><p>The Cognito user pool client created for MCP connectors.</p>
20
+ </div></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Methods</h2></summary><section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="tostring"><span>to<wbr/>String</span><a href="#tostring" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="tostring-1"><span class="tsd-kind-call-signature">toString</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><a href="#tostring-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Returns a string representation of this construct.</p>
21
+ </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">string</span></h4><aside class="tsd-sources"><p>Inherited from Construct.toString</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="with"><span>with</span><a href="#with" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="with-1"><span class="tsd-kind-call-signature">with</span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">mixins</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IMixin</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IConstruct</span><a href="#with-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Applies one or more mixins to this construct.</p>
22
+ <p>Mixins are applied in order. The list of constructs is captured at the
23
+ start of the call, so constructs added by a mixin will not be visited.
24
+ Use multiple <code>with()</code> calls if subsequent mixins should apply to added
25
+ constructs.</p>
26
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">mixins</span>: <span class="tsd-signature-type">IMixin</span><span class="tsd-signature-symbol">[]</span></span><div class="tsd-comment tsd-typography"><p>The mixins to apply</p>
27
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IConstruct</span></h4><p>This construct for chaining</p>
28
+ <aside class="tsd-sources"><p>Inherited from Construct.with</p></aside></div></li></ul></section><section class="tsd-panel tsd-member tsd-is-inherited tsd-is-external"><h3 class="tsd-anchor-link" id="isconstruct"><code class="tsd-tag">Static</code><span>is<wbr/>Construct</span><a href="#isconstruct" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures tsd-is-inherited tsd-is-external"><li class="tsd-is-inherited tsd-is-external"><div class="tsd-signature tsd-anchor-link" id="isconstruct-1"><span class="tsd-kind-call-signature">isConstruct</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">x</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-kind-parameter">x</span> <span class="tsd-signature-keyword">is</span> <span class="tsd-signature-type">Construct</span><a href="#isconstruct-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Checks if <code>x</code> is a construct.</p>
29
+ <p>Use this method instead of <code>instanceof</code> to properly detect <code>Construct</code>
30
+ instances, even when the construct library is symlinked.</p>
31
+ <p>Explanation: in JavaScript, multiple copies of the <code>constructs</code> library on
32
+ disk are seen as independent, completely different libraries. As a
33
+ consequence, the class <code>Construct</code> in each copy of the <code>constructs</code> library
34
+ is seen as a different class, and an instance of one class will not test as
35
+ <code>instanceof</code> the other class. <code>npm install</code> will not create installations
36
+ like this, but users may manually symlink construct libraries together or
37
+ use a monorepo tool: in those cases, multiple copies of the <code>constructs</code>
38
+ library can be accidentally installed, and <code>instanceof</code> will behave
39
+ unpredictably. It is safest to avoid using <code>instanceof</code>, and using
40
+ this type-testing method instead.</p>
41
+ </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">x</span>: <span class="tsd-signature-type">any</span></span><div class="tsd-comment tsd-typography"><p>Any object</p>
42
+ </div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-kind-parameter">x</span> <span class="tsd-signature-keyword">is</span> <span class="tsd-signature-type">Construct</span></h4><p>true if <code>x</code> is an object created from a class which extends <code>Construct</code>.</p>
43
+ <aside class="tsd-sources"><p>Inherited from Construct.isConstruct</p></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Constructors"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Constructors</summary><div><a href="#constructor"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Constructor"><use href="../assets/icons.svg#icon-512"></use></svg><span>constructor</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#mcpauth"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mcp<wbr/>Auth</span></a><a href="#node" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>node</span></a><a href="#userpoolclient"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>user<wbr/>Pool<wbr/>Client</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Methods"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Methods</summary><div><a href="#tostring" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>to<wbr/>String</span></a><a href="#with" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>with</span></a><a href="#isconstruct" class="tsd-is-inherited tsd-is-external"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../assets/icons.svg#icon-2048"></use></svg><span>is<wbr/>Construct</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">cdk-serverless</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>