@usestratus/mcp-aws 0.1.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 (110) hide show
  1. package/README.md +610 -0
  2. package/dist/auth/api-key.d.ts +29 -0
  3. package/dist/auth/api-key.d.ts.map +1 -0
  4. package/dist/auth/api-key.js +42 -0
  5. package/dist/auth/api-key.js.map +1 -0
  6. package/dist/auth/cognito.d.ts +26 -0
  7. package/dist/auth/cognito.d.ts.map +1 -0
  8. package/dist/auth/cognito.js +58 -0
  9. package/dist/auth/cognito.js.map +1 -0
  10. package/dist/auth/index.d.ts +11 -0
  11. package/dist/auth/index.d.ts.map +1 -0
  12. package/dist/auth/index.js +21 -0
  13. package/dist/auth/index.js.map +1 -0
  14. package/dist/auth/metadata.d.ts +30 -0
  15. package/dist/auth/metadata.d.ts.map +1 -0
  16. package/dist/auth/metadata.js +25 -0
  17. package/dist/auth/metadata.js.map +1 -0
  18. package/dist/auth/types.d.ts +8 -0
  19. package/dist/auth/types.d.ts.map +1 -0
  20. package/dist/auth/types.js +2 -0
  21. package/dist/auth/types.js.map +1 -0
  22. package/dist/codemode/executor.d.ts +29 -0
  23. package/dist/codemode/executor.d.ts.map +1 -0
  24. package/dist/codemode/executor.js +154 -0
  25. package/dist/codemode/executor.js.map +1 -0
  26. package/dist/codemode/index.d.ts +4 -0
  27. package/dist/codemode/index.d.ts.map +1 -0
  28. package/dist/codemode/index.js +3 -0
  29. package/dist/codemode/index.js.map +1 -0
  30. package/dist/codemode/types.d.ts +10 -0
  31. package/dist/codemode/types.d.ts.map +1 -0
  32. package/dist/codemode/types.js +195 -0
  33. package/dist/codemode/types.js.map +1 -0
  34. package/dist/compose.d.ts +57 -0
  35. package/dist/compose.d.ts.map +1 -0
  36. package/dist/compose.js +138 -0
  37. package/dist/compose.js.map +1 -0
  38. package/dist/context.d.ts +22 -0
  39. package/dist/context.d.ts.map +1 -0
  40. package/dist/context.js +39 -0
  41. package/dist/context.js.map +1 -0
  42. package/dist/deploy.d.ts +57 -0
  43. package/dist/deploy.d.ts.map +1 -0
  44. package/dist/deploy.js +281 -0
  45. package/dist/deploy.js.map +1 -0
  46. package/dist/disclosure/index.d.ts +3 -0
  47. package/dist/disclosure/index.d.ts.map +1 -0
  48. package/dist/disclosure/index.js +3 -0
  49. package/dist/disclosure/index.js.map +1 -0
  50. package/dist/disclosure/search.d.ts +15 -0
  51. package/dist/disclosure/search.d.ts.map +1 -0
  52. package/dist/disclosure/search.js +73 -0
  53. package/dist/disclosure/search.js.map +1 -0
  54. package/dist/disclosure/tier.d.ts +16 -0
  55. package/dist/disclosure/tier.d.ts.map +1 -0
  56. package/dist/disclosure/tier.js +69 -0
  57. package/dist/disclosure/tier.js.map +1 -0
  58. package/dist/errors.d.ts +34 -0
  59. package/dist/errors.d.ts.map +1 -0
  60. package/dist/errors.js +56 -0
  61. package/dist/errors.js.map +1 -0
  62. package/dist/events.d.ts +93 -0
  63. package/dist/events.d.ts.map +1 -0
  64. package/dist/events.js +28 -0
  65. package/dist/events.js.map +1 -0
  66. package/dist/gating/combinators.d.ts +10 -0
  67. package/dist/gating/combinators.d.ts.map +1 -0
  68. package/dist/gating/combinators.js +34 -0
  69. package/dist/gating/combinators.js.map +1 -0
  70. package/dist/gating/gates.d.ts +21 -0
  71. package/dist/gating/gates.d.ts.map +1 -0
  72. package/dist/gating/gates.js +74 -0
  73. package/dist/gating/gates.js.map +1 -0
  74. package/dist/gating/index.d.ts +3 -0
  75. package/dist/gating/index.d.ts.map +1 -0
  76. package/dist/gating/index.js +3 -0
  77. package/dist/gating/index.js.map +1 -0
  78. package/dist/index.d.ts +21 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +28 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/server.d.ts +161 -0
  83. package/dist/server.d.ts.map +1 -0
  84. package/dist/server.js +768 -0
  85. package/dist/server.js.map +1 -0
  86. package/dist/session/dynamo.d.ts +23 -0
  87. package/dist/session/dynamo.d.ts.map +1 -0
  88. package/dist/session/dynamo.js +92 -0
  89. package/dist/session/dynamo.js.map +1 -0
  90. package/dist/session/index.d.ts +4 -0
  91. package/dist/session/index.d.ts.map +1 -0
  92. package/dist/session/index.js +4 -0
  93. package/dist/session/index.js.map +1 -0
  94. package/dist/session/memory.d.ts +16 -0
  95. package/dist/session/memory.d.ts.map +1 -0
  96. package/dist/session/memory.js +43 -0
  97. package/dist/session/memory.js.map +1 -0
  98. package/dist/session/sqlite.d.ts +17 -0
  99. package/dist/session/sqlite.d.ts.map +1 -0
  100. package/dist/session/sqlite.js +79 -0
  101. package/dist/session/sqlite.js.map +1 -0
  102. package/dist/ssrf.d.ts +25 -0
  103. package/dist/ssrf.d.ts.map +1 -0
  104. package/dist/ssrf.js +88 -0
  105. package/dist/ssrf.js.map +1 -0
  106. package/dist/types.d.ts +110 -0
  107. package/dist/types.d.ts.map +1 -0
  108. package/dist/types.js +21 -0
  109. package/dist/types.js.map +1 -0
  110. package/package.json +50 -0
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ // ── Server ──────────────────────────────────────────────────────────
2
+ export { McpServer } from "./server.js";
3
+ // ── Errors ──────────────────────────────────────────────────────────
4
+ export { McpAwsError, GateDeniedError, AuthenticationError, SessionNotFoundError, ToolExecutionError, ToolTimeoutError, } from "./errors.js";
5
+ // ── Auth ────────────────────────────────────────────────────────────
6
+ export { apiKey, ApiKeyAuth } from "./auth/api-key.js";
7
+ export { cognito, CognitoAuth } from "./auth/cognito.js";
8
+ export { chainAuth } from "./auth/index.js";
9
+ export { buildResourceMetadata, buildWwwAuthenticateHeader, } from "./auth/metadata.js";
10
+ // ── Gating ──────────────────────────────────────────────────────────
11
+ export { role, check, requires, rateLimit } from "./gating/gates.js";
12
+ export { all, any } from "./gating/combinators.js";
13
+ // ── Sessions ────────────────────────────────────────────────────────
14
+ export { MemorySessionStore } from "./session/memory.js";
15
+ export { DynamoSessionStore } from "./session/dynamo.js";
16
+ // ── Disclosure ──────────────────────────────────────────────────────
17
+ export { SearchIndex } from "./disclosure/search.js";
18
+ // ── Code Mode ───────────────────────────────────────────────────────
19
+ export { FunctionExecutor, WorkerExecutor } from "./codemode/executor.js";
20
+ // ── Context (AsyncLocalStorage) ─────────────────────────────────────
21
+ export { getAuthContext, getSession } from "./context.js";
22
+ // ── SSRF Protection ─────────────────────────────────────────────────
23
+ export { isBlockedUrl, assertSafeUrl } from "./ssrf.js";
24
+ // ── Composition ─────────────────────────────────────────────────────
25
+ export { codeMcpServer, createMcpHandler } from "./compose.js";
26
+ // ── Deploy ──────────────────────────────────────────────────────────
27
+ export { deploy, destroy, } from "./deploy.js";
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,SAAS,EAA2D,MAAM,aAAa,CAAC;AA2BjG,uEAAuE;AACvE,OAAO,EACN,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GAChB,MAAM,aAAa,CAAC;AAErB,uEAAuE;AACvE,OAAO,EAAE,MAAM,EAAE,UAAU,EAA2C,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,WAAW,EAA0B,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAuC,MAAM,iBAAiB,CAAC;AACjF,OAAO,EACN,qBAAqB,EACrB,0BAA0B,GAG1B,MAAM,oBAAoB,CAAC;AAE5B,uEAAuE;AACvE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAEnD,uEAAuE;AACvE,OAAO,EAAE,kBAAkB,EAAiC,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAiC,MAAM,qBAAqB,CAAC;AAKxF,uEAAuE;AACvE,OAAO,EAAE,WAAW,EAAqB,MAAM,wBAAwB,CAAC;AAExE,uEAAuE;AACvE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG1E,uEAAuE;AACvE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,uEAAuE;AACvE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAKxD,uEAAuE;AACvE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAA2D,MAAM,cAAc,CAAC;AAExH,uEAAuE;AACvE,OAAO,EACN,MAAM,EACN,OAAO,GAKP,MAAM,aAAa,CAAC"}
@@ -0,0 +1,161 @@
1
+ import { z } from "zod";
2
+ import type { ResourceMetadataConfig } from "./auth/metadata.js";
3
+ import type { AuthProvider } from "./auth/types.js";
4
+ import { type SearchResult } from "./disclosure/index.js";
5
+ import { type McpEventMap, type McpEventName } from "./events.js";
6
+ import { type McpServerConfig, type McpSession, type SessionStore, type ToolConfig, type ToolHandler, type ToolOptions } from "./types.js";
7
+ export type LambdaTransportConfig = {
8
+ sessionStore?: SessionStore;
9
+ baseUrl?: string;
10
+ resourceMetadata?: ResourceMetadataConfig;
11
+ };
12
+ export type ExpressTransportConfig = {
13
+ sessionStore?: SessionStore;
14
+ baseUrl?: string;
15
+ resourceMetadata?: ResourceMetadataConfig;
16
+ mcpPath?: string;
17
+ };
18
+ /** Structural type for Express-like app. Matches express.Application. */
19
+ export type ExpressLikeApp = {
20
+ get(path: string, ...handlers: ((...args: unknown[]) => void)[]): void;
21
+ post(path: string, ...handlers: ((...args: unknown[]) => void)[]): void;
22
+ delete(path: string, ...handlers: ((...args: unknown[]) => void)[]): void;
23
+ };
24
+ export declare class McpServer {
25
+ #private;
26
+ /**
27
+ * Create an MCP server.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const server = new McpServer("my-server@1.0.0");
32
+ * const server = new McpServer({ name: "my-server", version: "1.0.0" });
33
+ * ```
34
+ */
35
+ constructor(config: string | McpServerConfig);
36
+ /**
37
+ * Set the auth provider. Multiple calls or args chain automatically.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * server.auth(apiKey({ "sk-123": { roles: ["admin"] } }));
42
+ * server.auth(cognito({ userPoolId: "...", region: "us-east-1" }));
43
+ * ```
44
+ */
45
+ auth(...providers: AuthProvider[]): this;
46
+ /**
47
+ * Subscribe to server lifecycle events.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * server.on("tool:call", (e) => console.log(`${e.toolName} called`));
52
+ * server.on("auth:failure", () => metrics.increment("auth.failures"));
53
+ * ```
54
+ */
55
+ on<K extends McpEventName>(event: K, listener: (data: McpEventMap[K]) => void): this;
56
+ off<K extends McpEventName>(event: K, listener: (data: McpEventMap[K]) => void): this;
57
+ /**
58
+ * Register a tool. Returns `this` for chaining.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * // Simple: name + handler (no params)
63
+ * server.tool("ping", async () => "pong");
64
+ *
65
+ * // With params: name + Zod schema + handler
66
+ * server.tool("greet", z.object({ name: z.string() }), async ({ name }) => {
67
+ * return `Hello, ${name}!`;
68
+ * });
69
+ *
70
+ * // Full config: name + options + handler
71
+ * server.tool("admin_reset", {
72
+ * description: "Reset user account",
73
+ * params: z.object({ userId: z.string() }),
74
+ * tier: "hidden",
75
+ * gate: role("admin"),
76
+ * }, async ({ userId }) => {
77
+ * return { reset: true, userId };
78
+ * });
79
+ * ```
80
+ */
81
+ tool(name: string, handler: ToolHandler<undefined>): this;
82
+ tool<T extends z.ZodType>(name: string, params: T, handler: ToolHandler<z.infer<T>>): this;
83
+ tool<T extends z.ZodType>(name: string, options: ToolOptions<T>, handler: ToolHandler<z.infer<T>>): this;
84
+ searchTools(query: string, maxResults?: number): SearchResult[];
85
+ getVisibleTools(session: McpSession): ToolConfig[];
86
+ /**
87
+ * Connect to stdio transport. For local dev with Claude Desktop.
88
+ */
89
+ stdio(): Promise<void>;
90
+ /**
91
+ * Create a Lambda handler for Function URLs or API Gateway v2.
92
+ * Uses WebStandard transport: Request in → Response out.
93
+ * Stateless per-request MCP server isolation.
94
+ *
95
+ * @example
96
+ * ```ts
97
+ * // Lambda Function URL handler
98
+ * export default server.lambda();
99
+ *
100
+ * // Or with config
101
+ * export const handler = server.lambda({
102
+ * baseUrl: "https://abc.lambda-url.us-east-1.on.aws",
103
+ * });
104
+ * ```
105
+ */
106
+ lambda(config?: LambdaTransportConfig): (event: unknown) => Promise<unknown>;
107
+ /**
108
+ * Create Express route handlers. Call `setup(app)` to mount.
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * import express from "express";
113
+ * const app = express();
114
+ * app.use(express.json());
115
+ * server.express().setup(app);
116
+ * app.listen(3000);
117
+ * ```
118
+ */
119
+ express(config?: ExpressTransportConfig): {
120
+ setup: (app: ExpressLikeApp) => void;
121
+ };
122
+ /**
123
+ * Start a Bun HTTP server. Zero dependencies — uses Bun.serve() natively.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * server.bun({ port: 3000 });
128
+ * // MCP server running at http://localhost:3000/mcp
129
+ * ```
130
+ */
131
+ bun(config?: {
132
+ port?: number;
133
+ hostname?: string;
134
+ mcpPath?: string;
135
+ }): {
136
+ stop: () => void;
137
+ url: string;
138
+ };
139
+ get config(): McpServerConfig;
140
+ get toolCount(): number;
141
+ getToolConfig(name: string): ToolConfig | undefined;
142
+ /**
143
+ * Deploy this server to AWS Lambda with a Function URL.
144
+ * Returns the live HTTPS endpoint URL.
145
+ *
146
+ * @example
147
+ * ```ts
148
+ * const server = new McpServer("my-tools@1.0.0")
149
+ * .tool("ping", async () => "pong");
150
+ *
151
+ * const { url } = await server.deploy({ entry: "./src/server.ts" });
152
+ * console.log(`Live at: ${url}`);
153
+ * ```
154
+ */
155
+ deploy(config: import("./deploy.js").DeployConfig): Promise<import("./deploy.js").DeployResult>;
156
+ /**
157
+ * Destroy a previously deployed Lambda function.
158
+ */
159
+ destroy(functionName?: string, region?: string): Promise<import("./deploy.js").DestroyResult>;
160
+ }
161
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}