@stellisoft/stellify-mcp 0.1.11 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1270,6 +1270,67 @@ SECURITY: Code runs in a sandboxed environment with limited permissions.`,
1270
1270
  required: ['file', 'method'],
1271
1271
  },
1272
1272
  },
1273
+ {
1274
+ name: 'get_capabilities',
1275
+ description: `List available system-level capabilities in the Stellify framework.
1276
+
1277
+ Returns what's currently available for:
1278
+ - Authentication (Sanctum, session, etc.)
1279
+ - File storage (local, S3, etc.)
1280
+ - Email/notifications
1281
+ - Queues/jobs
1282
+ - Caching
1283
+ - Other installed packages and services
1284
+
1285
+ Use this BEFORE attempting to build features that might require system capabilities.
1286
+ If a capability you need is not listed, use request_capability to log it.`,
1287
+ inputSchema: {
1288
+ type: 'object',
1289
+ properties: {},
1290
+ },
1291
+ },
1292
+ {
1293
+ name: 'request_capability',
1294
+ description: `Log a missing system-level capability request.
1295
+
1296
+ Use this when you encounter a user requirement that needs framework-level functionality
1297
+ that doesn't exist in Stellify. This creates a ticket in the Stellify backlog.
1298
+
1299
+ DO NOT try to build system capabilities yourself - log them here instead.
1300
+
1301
+ Examples of capability requests:
1302
+ - "Need WebSocket support for real-time chat"
1303
+ - "Need S3 file upload with signed URLs"
1304
+ - "Need scheduled task runner for daily reports"
1305
+ - "Need OAuth2 social login (Google, GitHub)"`,
1306
+ inputSchema: {
1307
+ type: 'object',
1308
+ properties: {
1309
+ capability: {
1310
+ type: 'string',
1311
+ description: 'Short name for the capability (e.g., "websocket-support", "s3-uploads", "social-oauth")',
1312
+ },
1313
+ description: {
1314
+ type: 'string',
1315
+ description: 'Detailed description of what capability is needed',
1316
+ },
1317
+ use_case: {
1318
+ type: 'string',
1319
+ description: 'The user requirement that triggered this request',
1320
+ },
1321
+ workaround: {
1322
+ type: 'string',
1323
+ description: 'Any temporary workaround, or "blocked" if none exists',
1324
+ },
1325
+ priority: {
1326
+ type: 'string',
1327
+ enum: ['low', 'medium', 'high', 'critical'],
1328
+ description: 'Suggested priority based on user need (default: medium)',
1329
+ },
1330
+ },
1331
+ required: ['capability', 'description', 'use_case'],
1332
+ },
1333
+ },
1273
1334
  ];
1274
1335
  // Server instructions for tool discovery (used by MCP Tool Search)
1275
1336
  const SERVER_INSTRUCTIONS = `Stellify is a coding platform where you code alongside AI on a codebase maintained and curated by AI. Build Laravel/PHP and Vue.js applications.
@@ -1284,7 +1345,34 @@ Key concepts:
1284
1345
  - Code is stored as structured JSON, enabling surgical AI edits at the statement level
1285
1346
  - Files contain methods and statements (code outside methods)
1286
1347
  - Vue components link to UI elements via the 'template' field
1287
- - Event handlers (click, submit) wire UI elements to methods by UUID`;
1348
+ - Event handlers (click, submit) wire UI elements to methods by UUID
1349
+
1350
+ ## Framework Capabilities (Libraries/Packages)
1351
+
1352
+ **CRITICAL: You write BUSINESS LOGIC only. Capabilities are installed packages/libraries (Sanctum, Stripe, AWS SDK, etc.) that Stellify provides. You CANNOT create these by writing code.**
1353
+
1354
+ Examples of capabilities (packages you cannot write):
1355
+ - Authentication: laravel/sanctum, laravel/socialite
1356
+ - Payments: stripe/stripe-php
1357
+ - Storage: aws/aws-sdk-php, league/flysystem-aws-s3-v3
1358
+ - Email: mailgun/mailgun-php, aws/aws-sdk-php (SES)
1359
+ - Search: meilisearch/meilisearch-php, algolia/algoliasearch-client-php
1360
+ - WebSocket: laravel/reverb
1361
+
1362
+ **WORKFLOW:**
1363
+
1364
+ 1. When a user requests functionality that might need a package/library, call get_capabilities() FIRST.
1365
+
1366
+ 2. If status is "available" → package is installed, proceed with business logic.
1367
+
1368
+ 3. If status is "needs_config" → package installed but needs API keys. INFORM THE USER to configure it in Project Settings.
1369
+
1370
+ 4. If status is "not_available" or doesn't exist:
1371
+ - STOP IMMEDIATELY
1372
+ - Call request_capability() to log it
1373
+ - INFORM THE USER: "This feature requires the [X] package which isn't installed in Stellify yet. I've logged a request. This cannot be built until the package is added."
1374
+
1375
+ **NEVER write code that belongs in a package.** If you find yourself writing OAuth flows, payment processing, S3 clients, email transport, search indexing, or similar infrastructure - STOP. That's a capability request, not business logic.`;
1288
1376
  // Create MCP server
1289
1377
  const server = new Server({
1290
1378
  name: 'stellify-mcp',
@@ -1915,6 +2003,37 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1915
2003
  ],
1916
2004
  };
1917
2005
  }
2006
+ case 'get_capabilities': {
2007
+ const result = await stellify.getCapabilities();
2008
+ return {
2009
+ content: [
2010
+ {
2011
+ type: 'text',
2012
+ text: JSON.stringify({
2013
+ success: true,
2014
+ message: 'Available framework capabilities',
2015
+ capabilities: result.data || result,
2016
+ }, null, 2),
2017
+ },
2018
+ ],
2019
+ };
2020
+ }
2021
+ case 'request_capability': {
2022
+ const result = await stellify.requestCapability(args);
2023
+ return {
2024
+ content: [
2025
+ {
2026
+ type: 'text',
2027
+ text: JSON.stringify({
2028
+ success: true,
2029
+ message: `Capability request logged: "${args.capability}"`,
2030
+ request_id: result.data?.uuid || result.uuid,
2031
+ data: result.data || result,
2032
+ }, null, 2),
2033
+ },
2034
+ ],
2035
+ };
2036
+ }
1918
2037
  default:
1919
2038
  throw new Error(`Unknown tool: ${name}`);
1920
2039
  }
@@ -178,4 +178,12 @@ export declare class StellifyClient {
178
178
  timeout?: number;
179
179
  benchmark?: boolean;
180
180
  }): Promise<any>;
181
+ getCapabilities(): Promise<any>;
182
+ requestCapability(params: {
183
+ capability: string;
184
+ description: string;
185
+ use_case: string;
186
+ workaround?: string;
187
+ priority?: 'low' | 'medium' | 'high' | 'critical';
188
+ }): Promise<any>;
181
189
  }
@@ -186,4 +186,14 @@ export class StellifyClient {
186
186
  const response = await this.client.put(`/code/${file}/${method}`, body);
187
187
  return response.data;
188
188
  }
189
+ // Framework capabilities - list what's available
190
+ async getCapabilities() {
191
+ const response = await this.client.get('/capabilities');
192
+ return response.data;
193
+ }
194
+ // Request a missing capability - logs to backlog
195
+ async requestCapability(params) {
196
+ const response = await this.client.post('/capabilities/request', params);
197
+ return response.data;
198
+ }
189
199
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stellisoft/stellify-mcp",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "mcpName": "io.github.MattStellisoft/stellify-mcp",
5
5
  "description": "MCP server for Stellify - AI-native code generation platform",
6
6
  "main": "dist/index.js",