@opensaas/stack-core 0.1.2 → 0.1.4

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @opensaas/stack-core@0.1.2 build /home/runner/work/stack/stack/packages/core
2
+ > @opensaas/stack-core@0.1.4 build /home/runner/work/stack/stack/packages/core
3
3
  > tsc
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # @opensaas/stack-core
2
2
 
3
+ ## 0.1.4
4
+
5
+ ### Patch Changes
6
+
7
+ - d013859: **BREAKING CHANGE**: Migrate MCP functionality into core and auth packages
8
+
9
+ The `@opensaas/stack-mcp` package has been deprecated and its functionality has been split into:
10
+ - `@opensaas/stack-core/mcp` - Auth-agnostic MCP runtime and handlers
11
+ - `@opensaas/stack-auth/mcp` - Better Auth OAuth adapter
12
+
13
+ **Migration required:**
14
+
15
+ ```typescript
16
+ // Before
17
+ import { createMcpHandlers } from '@opensaas/stack-mcp'
18
+ const { GET, POST, DELETE } = createMcpHandlers({ config, auth, getContext })
19
+
20
+ // After
21
+ import { createMcpHandlers } from '@opensaas/stack-core/mcp'
22
+ import { createBetterAuthMcpAdapter } from '@opensaas/stack-auth/mcp'
23
+ const { GET, POST, DELETE } = createMcpHandlers({
24
+ config,
25
+ getSession: createBetterAuthMcpAdapter(auth),
26
+ getContext,
27
+ })
28
+ ```
29
+
30
+ **Why this change?**
31
+ - Reduces package count in the monorepo
32
+ - Core package handles auth-agnostic MCP protocol
33
+ - Auth package provides Better Auth specific adapter
34
+ - Better-auth is no longer a dependency of core
35
+ - Enables support for custom auth providers beyond Better Auth
36
+
37
+ **New features:**
38
+ - `McpSessionProvider` type for custom auth integration
39
+ - More generic `McpAuthConfig` type supporting custom auth providers
40
+ - Core MCP functionality available without auth dependencies
41
+
42
+ ## 0.1.3
43
+
3
44
  ## 0.1.2
4
45
 
5
46
  ## 0.1.1
package/CLAUDE.md CHANGED
@@ -149,11 +149,13 @@ const context = createContext<typeof prisma>(config, prisma, session)
149
149
  - Session flows through context to access control
150
150
  - Generator creates auth tables in Prisma schema
151
151
 
152
- ### With @opensaas/stack-mcp
152
+ ### With MCP (Model Context Protocol)
153
153
 
154
- - MCP reads config to generate tools
154
+ - Core provides auth-agnostic MCP runtime via `@opensaas/stack-core/mcp`
155
+ - MCP handler reads config to generate tools
155
156
  - Uses context for all operations (access control enforced)
156
157
  - Zod schemas from fields validate tool inputs
158
+ - Auth adapters (like `@opensaas/stack-auth/mcp`) provide session integration
157
159
 
158
160
  ### With Third-Party Field Packages
159
161
 
@@ -482,11 +482,12 @@ export type ListMcpConfig = {
482
482
  customTools?: McpCustomTool[];
483
483
  };
484
484
  /**
485
- * Better Auth OAuth configuration for MCP
485
+ * OAuth configuration for MCP authentication
486
+ * Supports Better Auth and custom auth providers
486
487
  */
487
488
  export type McpAuthConfig = {
488
489
  /**
489
- * Authentication type - currently only Better Auth is supported
490
+ * Authentication type - Better Auth integration
490
491
  */
491
492
  type: 'better-auth';
492
493
  /**
@@ -527,6 +528,15 @@ export type McpAuthConfig = {
527
528
  */
528
529
  scopes?: string[];
529
530
  };
531
+ } | {
532
+ /**
533
+ * Authentication type - custom auth provider
534
+ */
535
+ type: string;
536
+ /**
537
+ * Additional auth-specific configuration
538
+ */
539
+ [key: string]: any;
530
540
  };
531
541
  /**
532
542
  * Global MCP server configuration
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Runtime MCP route handler
3
+ * Creates MCP API handlers from OpenSaaS config at runtime
4
+ */
5
+ import type { OpenSaasConfig } from '../config/types.js';
6
+ import type { AccessContext } from '../access/types.js';
7
+ import type { McpSessionProvider } from './types.js';
8
+ /**
9
+ * Create MCP route handlers
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * // app/api/mcp/[[...transport]]/route.ts
14
+ * import { createMcpHandlers } from '@opensaas/stack-core/mcp'
15
+ * import { createBetterAuthMcpAdapter } from '@opensaas/stack-auth/mcp'
16
+ * import config from '@/opensaas.config'
17
+ * import { auth } from '@/lib/auth'
18
+ * import { getContext } from '@/.opensaas/context'
19
+ *
20
+ * const { GET, POST, DELETE } = createMcpHandlers({
21
+ * config,
22
+ * getSession: createBetterAuthMcpAdapter(auth),
23
+ * getContext
24
+ * })
25
+ *
26
+ * export { GET, POST, DELETE }
27
+ * ```
28
+ */
29
+ export declare function createMcpHandlers(options: {
30
+ config: OpenSaasConfig;
31
+ getSession: McpSessionProvider;
32
+ getContext: (session?: {
33
+ userId: string;
34
+ }) => AccessContext;
35
+ }): {
36
+ GET: (req: Request) => Promise<Response>;
37
+ POST: (req: Request) => Promise<Response>;
38
+ DELETE: (req: Request) => Promise<Response>;
39
+ };
40
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/mcp/handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,OAAO,KAAK,EAAc,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEhE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,MAAM,EAAE,cAAc,CAAA;IACtB,UAAU,EAAE,kBAAkB,CAAA;IAC9B,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,aAAa,CAAA;CAC5D,GAAG;IACF,GAAG,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzC,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;CAC5C,CA0FA"}
@@ -0,0 +1,460 @@
1
+ /**
2
+ * Runtime MCP route handler
3
+ * Creates MCP API handlers from OpenSaaS config at runtime
4
+ */
5
+ import { getDbKey } from '../lib/case-utils.js';
6
+ /**
7
+ * Create MCP route handlers
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // app/api/mcp/[[...transport]]/route.ts
12
+ * import { createMcpHandlers } from '@opensaas/stack-core/mcp'
13
+ * import { createBetterAuthMcpAdapter } from '@opensaas/stack-auth/mcp'
14
+ * import config from '@/opensaas.config'
15
+ * import { auth } from '@/lib/auth'
16
+ * import { getContext } from '@/.opensaas/context'
17
+ *
18
+ * const { GET, POST, DELETE } = createMcpHandlers({
19
+ * config,
20
+ * getSession: createBetterAuthMcpAdapter(auth),
21
+ * getContext
22
+ * })
23
+ *
24
+ * export { GET, POST, DELETE }
25
+ * ```
26
+ */
27
+ export function createMcpHandlers(options) {
28
+ const { config, getSession, getContext } = options;
29
+ // Validate MCP is enabled
30
+ if (!config.mcp?.enabled) {
31
+ const notEnabledHandler = async () => new Response(JSON.stringify({ error: 'MCP not enabled' }), {
32
+ status: 404,
33
+ headers: { 'Content-Type': 'application/json' },
34
+ });
35
+ return { GET: notEnabledHandler, POST: notEnabledHandler, DELETE: notEnabledHandler };
36
+ }
37
+ const basePath = config.mcp.basePath || '/api/mcp';
38
+ /**
39
+ * Main MCP request handler
40
+ */
41
+ const handler = async (req) => {
42
+ // Authenticate using provided session provider
43
+ const session = await getSession(req.headers);
44
+ if (!session) {
45
+ return new Response(null, {
46
+ status: 401,
47
+ headers: {
48
+ 'WWW-Authenticate': `Bearer realm="${basePath}", error="invalid_token"`,
49
+ },
50
+ });
51
+ }
52
+ try {
53
+ const body = (await req.json());
54
+ // Handle initialize
55
+ if (body.method === 'initialize') {
56
+ return handleInitialize(body.params, body.id);
57
+ }
58
+ // Handle notifications/initialized (sent by client after initialize response)
59
+ if (body.method === 'notifications/initialized') {
60
+ // Notifications don't require a response in JSON-RPC 2.0
61
+ return new Response(null, { status: 204 });
62
+ }
63
+ // Handle tools/list
64
+ if (body.method === 'tools/list') {
65
+ return handleToolsList(config, body.id);
66
+ }
67
+ // Handle tools/call
68
+ if (body.method === 'tools/call') {
69
+ return await handleToolsCall(body.params, session, config, getContext, body.id);
70
+ }
71
+ return new Response(JSON.stringify({
72
+ jsonrpc: '2.0',
73
+ id: body.id ?? null,
74
+ error: { code: -32601, message: 'Method not found' },
75
+ }), {
76
+ status: 400,
77
+ headers: { 'Content-Type': 'application/json' },
78
+ });
79
+ }
80
+ catch (error) {
81
+ return new Response(JSON.stringify({
82
+ error: 'Request handling failed',
83
+ message: error instanceof Error ? error.message : 'Unknown error',
84
+ }), {
85
+ status: 500,
86
+ headers: { 'Content-Type': 'application/json' },
87
+ });
88
+ }
89
+ };
90
+ return {
91
+ GET: handler,
92
+ POST: handler,
93
+ DELETE: handler,
94
+ };
95
+ }
96
+ /**
97
+ * Handle initialize request - respond with server capabilities
98
+ */
99
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Initialize params are from the client
100
+ function handleInitialize(_params, id) {
101
+ return new Response(JSON.stringify({
102
+ jsonrpc: '2.0',
103
+ id: id ?? null,
104
+ result: {
105
+ protocolVersion: '2024-11-05',
106
+ capabilities: {
107
+ tools: {},
108
+ },
109
+ serverInfo: {
110
+ name: 'opensaas-mcp-server',
111
+ version: '1.0.0',
112
+ },
113
+ },
114
+ }), {
115
+ headers: { 'Content-Type': 'application/json' },
116
+ });
117
+ }
118
+ /**
119
+ * Convert field config to JSON schema property
120
+ */
121
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Field configs have varying structures
122
+ function fieldToJsonSchema(fieldName, fieldConfig) {
123
+ const baseSchema = {};
124
+ switch (fieldConfig.type) {
125
+ case 'text':
126
+ case 'password':
127
+ baseSchema.type = 'string';
128
+ if (fieldConfig.validation?.length) {
129
+ if (fieldConfig.validation.length.min)
130
+ baseSchema.minLength = fieldConfig.validation.length.min;
131
+ if (fieldConfig.validation.length.max)
132
+ baseSchema.maxLength = fieldConfig.validation.length.max;
133
+ }
134
+ break;
135
+ case 'integer':
136
+ baseSchema.type = 'number';
137
+ if (fieldConfig.validation?.min !== undefined)
138
+ baseSchema.minimum = fieldConfig.validation.min;
139
+ if (fieldConfig.validation?.max !== undefined)
140
+ baseSchema.maximum = fieldConfig.validation.max;
141
+ break;
142
+ case 'checkbox':
143
+ baseSchema.type = 'boolean';
144
+ break;
145
+ case 'timestamp':
146
+ baseSchema.type = 'string';
147
+ baseSchema.format = 'date-time';
148
+ break;
149
+ case 'select':
150
+ baseSchema.type = 'string';
151
+ if (fieldConfig.options) {
152
+ baseSchema.enum = fieldConfig.options.map((opt) => opt.value);
153
+ }
154
+ break;
155
+ case 'relationship':
156
+ // For relationships, expect an ID or connect object
157
+ baseSchema.type = 'object';
158
+ baseSchema.properties = {
159
+ connect: {
160
+ type: 'object',
161
+ properties: {
162
+ id: { type: 'string' },
163
+ },
164
+ },
165
+ };
166
+ break;
167
+ default:
168
+ // For custom field types, default to string
169
+ baseSchema.type = 'string';
170
+ }
171
+ return baseSchema;
172
+ }
173
+ /**
174
+ * Generate field schemas for create/update operations
175
+ */
176
+ function generateFieldSchemas(fields, operation) {
177
+ const properties = {};
178
+ const required = [];
179
+ for (const [fieldName, fieldConfig] of Object.entries(fields)) {
180
+ // Skip system fields
181
+ if (['id', 'createdAt', 'updatedAt'].includes(fieldName))
182
+ continue;
183
+ properties[fieldName] = fieldToJsonSchema(fieldName, fieldConfig);
184
+ // Add to required array if field is required for this operation
185
+ if (operation === 'create' &&
186
+ 'validation' in fieldConfig &&
187
+ fieldConfig.validation?.isRequired) {
188
+ required.push(fieldName);
189
+ }
190
+ }
191
+ return { properties, required };
192
+ }
193
+ /**
194
+ * Handle tools/list request - list all available tools
195
+ */
196
+ function handleToolsList(config, id) {
197
+ const tools = [];
198
+ // Generate CRUD tools for each list
199
+ for (const [listKey, listConfig] of Object.entries(config.lists)) {
200
+ // Check if MCP is enabled for this list
201
+ if (listConfig.mcp?.enabled === false)
202
+ continue;
203
+ const dbKey = getDbKey(listKey);
204
+ const defaultTools = config.mcp?.defaultTools || {
205
+ read: true,
206
+ create: true,
207
+ update: true,
208
+ delete: true,
209
+ };
210
+ const enabledTools = {
211
+ read: listConfig.mcp?.tools?.read ?? defaultTools.read ?? true,
212
+ create: listConfig.mcp?.tools?.create ?? defaultTools.create ?? true,
213
+ update: listConfig.mcp?.tools?.update ?? defaultTools.update ?? true,
214
+ delete: listConfig.mcp?.tools?.delete ?? defaultTools.delete ?? true,
215
+ };
216
+ // Read tool
217
+ if (enabledTools.read) {
218
+ tools.push({
219
+ name: `list_${dbKey}_query`,
220
+ description: `Query ${listKey} records with optional filters`,
221
+ inputSchema: {
222
+ type: 'object',
223
+ properties: {
224
+ where: { type: 'object', description: 'Prisma where clause' },
225
+ take: { type: 'number', description: 'Number of records to return (max 100)' },
226
+ skip: { type: 'number', description: 'Number of records to skip' },
227
+ orderBy: { type: 'object', description: 'Sort order' },
228
+ },
229
+ },
230
+ });
231
+ }
232
+ // Create tool
233
+ if (enabledTools.create) {
234
+ const fieldSchemas = generateFieldSchemas(listConfig.fields, 'create');
235
+ tools.push({
236
+ name: `list_${dbKey}_create`,
237
+ description: `Create a new ${listKey} record`,
238
+ inputSchema: {
239
+ type: 'object',
240
+ properties: {
241
+ data: {
242
+ type: 'object',
243
+ description: 'Record data with the following fields',
244
+ properties: fieldSchemas.properties,
245
+ required: fieldSchemas.required,
246
+ },
247
+ },
248
+ required: ['data'],
249
+ },
250
+ });
251
+ }
252
+ // Update tool
253
+ if (enabledTools.update) {
254
+ const fieldSchemas = generateFieldSchemas(listConfig.fields, 'update');
255
+ tools.push({
256
+ name: `list_${dbKey}_update`,
257
+ description: `Update an existing ${listKey} record`,
258
+ inputSchema: {
259
+ type: 'object',
260
+ properties: {
261
+ where: {
262
+ type: 'object',
263
+ description: 'Record identifier',
264
+ properties: {
265
+ id: { type: 'string' },
266
+ },
267
+ required: ['id'],
268
+ },
269
+ data: {
270
+ type: 'object',
271
+ description: 'Fields to update',
272
+ properties: fieldSchemas.properties,
273
+ },
274
+ },
275
+ required: ['where', 'data'],
276
+ },
277
+ });
278
+ }
279
+ // Delete tool
280
+ if (enabledTools.delete) {
281
+ tools.push({
282
+ name: `list_${dbKey}_delete`,
283
+ description: `Delete a ${listKey} record`,
284
+ inputSchema: {
285
+ type: 'object',
286
+ properties: {
287
+ where: {
288
+ type: 'object',
289
+ description: 'Record identifier',
290
+ properties: {
291
+ id: { type: 'string' },
292
+ },
293
+ required: ['id'],
294
+ },
295
+ },
296
+ required: ['where'],
297
+ },
298
+ });
299
+ }
300
+ // Custom tools
301
+ if (listConfig.mcp?.customTools) {
302
+ for (const customTool of listConfig.mcp.customTools) {
303
+ tools.push({
304
+ name: customTool.name,
305
+ description: customTool.description,
306
+ inputSchema: customTool.inputSchema,
307
+ });
308
+ }
309
+ }
310
+ }
311
+ return new Response(JSON.stringify({
312
+ jsonrpc: '2.0',
313
+ id: id ?? null,
314
+ result: { tools },
315
+ }), {
316
+ headers: { 'Content-Type': 'application/json' },
317
+ });
318
+ }
319
+ /**
320
+ * Handle tools/call request - execute a tool
321
+ */
322
+ async function handleToolsCall(
323
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- MCP tool params vary by tool
324
+ params, session, config, getContext, id) {
325
+ const toolName = params?.name;
326
+ const toolArgs = params?.arguments || {};
327
+ console.log('Handling tool call:', toolName, toolArgs);
328
+ if (!toolName) {
329
+ return new Response(JSON.stringify({
330
+ jsonrpc: '2.0',
331
+ id: id ?? null,
332
+ error: { code: -32602, message: 'Invalid params: Tool name required' },
333
+ }), {
334
+ status: 400,
335
+ headers: { 'Content-Type': 'application/json' },
336
+ });
337
+ }
338
+ // Parse tool name: list_{dbKey}_{operation}
339
+ const match = toolName.match(/^list_([a-z][a-zA-Z0-9]*)_(query|create|update|delete)$/);
340
+ if (match) {
341
+ const [, dbKey, operation] = match;
342
+ return await handleCrudTool(dbKey, operation, toolArgs, session, config, getContext, id);
343
+ }
344
+ // Handle custom tools
345
+ return await handleCustomTool(toolName, toolArgs, session, config, getContext, id);
346
+ }
347
+ /**
348
+ * Handle CRUD tool execution
349
+ */
350
+ async function handleCrudTool(dbKey, operation,
351
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Tool arguments vary by operation
352
+ args, session, config, getContext, id) {
353
+ // Create context with user session
354
+ const context = getContext({ userId: session.userId });
355
+ try {
356
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Result type varies by Prisma operation
357
+ let result;
358
+ switch (operation) {
359
+ case 'query':
360
+ result = await context.db[dbKey].findMany({
361
+ where: args.where,
362
+ take: Math.min(args.take || 10, 100),
363
+ skip: args.skip,
364
+ orderBy: args.orderBy,
365
+ });
366
+ return createSuccessResponse({
367
+ items: result,
368
+ count: result.length,
369
+ }, id);
370
+ case 'create':
371
+ result = await context.db[dbKey].create({
372
+ data: args.data,
373
+ });
374
+ if (!result) {
375
+ return createErrorResponse('Failed to create record. Access denied or validation failed.', id);
376
+ }
377
+ return createSuccessResponse({ success: true, item: result }, id);
378
+ case 'update':
379
+ result = await context.db[dbKey].update({
380
+ where: args.where,
381
+ data: args.data,
382
+ });
383
+ if (!result) {
384
+ return createErrorResponse('Failed to update record. Access denied or record not found.', id);
385
+ }
386
+ return createSuccessResponse({ success: true, item: result }, id);
387
+ case 'delete':
388
+ result = await context.db[dbKey].delete({
389
+ where: args.where,
390
+ });
391
+ if (!result) {
392
+ return createErrorResponse('Failed to delete record. Access denied or record not found.', id);
393
+ }
394
+ return createSuccessResponse({ success: true, deletedId: args.where.id }, id);
395
+ default:
396
+ return createErrorResponse(`Unknown operation: ${operation}`, id);
397
+ }
398
+ }
399
+ catch (error) {
400
+ return createErrorResponse('Operation failed: ' + (error instanceof Error ? error.message : 'Unknown error'), id);
401
+ }
402
+ }
403
+ /**
404
+ * Handle custom tool execution
405
+ */
406
+ async function handleCustomTool(toolName,
407
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Custom tool arguments are user-defined
408
+ args, session, config, getContext, id) {
409
+ // Find custom tool in config
410
+ for (const [_listKey, listConfig] of Object.entries(config.lists)) {
411
+ const customTool = listConfig.mcp?.customTools?.find((t) => t.name === toolName);
412
+ if (customTool) {
413
+ const context = getContext({ userId: session.userId });
414
+ try {
415
+ const result = await customTool.handler({
416
+ input: args,
417
+ context,
418
+ });
419
+ return createSuccessResponse(result, id);
420
+ }
421
+ catch (error) {
422
+ return createErrorResponse('Custom tool execution failed: ' +
423
+ (error instanceof Error ? error.message : 'Unknown error'), id);
424
+ }
425
+ }
426
+ }
427
+ return createErrorResponse(`Unknown tool: ${toolName}`, id);
428
+ }
429
+ /**
430
+ * Helper to create success response
431
+ */
432
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Response data structure is flexible per MCP protocol
433
+ function createSuccessResponse(data, id) {
434
+ return new Response(JSON.stringify({
435
+ jsonrpc: '2.0',
436
+ id: id ?? null,
437
+ result: {
438
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
439
+ },
440
+ }), {
441
+ headers: { 'Content-Type': 'application/json' },
442
+ });
443
+ }
444
+ /**
445
+ * Helper to create error response
446
+ */
447
+ function createErrorResponse(message, id) {
448
+ return new Response(JSON.stringify({
449
+ jsonrpc: '2.0',
450
+ id: id ?? null,
451
+ error: {
452
+ code: -32603,
453
+ message,
454
+ },
455
+ }), {
456
+ status: 400,
457
+ headers: { 'Content-Type': 'application/json' },
458
+ });
459
+ }
460
+ //# sourceMappingURL=handler.js.map