@stellisoft/stellify-mcp 0.1.38 → 0.1.39

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
@@ -131,6 +131,11 @@ Pass 'includes' array for framework class dependencies (auto-resolved to UUIDs).
131
131
  type: 'string',
132
132
  description: 'Optional module name to group this file with related code (e.g., "blog-posts", "user-auth"). Module is auto-created if it doesn\'t exist.',
133
133
  },
134
+ attributes: {
135
+ type: 'array',
136
+ items: { type: 'string' },
137
+ description: 'PHP 8 class-level attributes (e.g., ["Fillable([\'name\', \'email\'])"], ["ObservedBy(UserObserver::class)"]). Use search_attributes tool to find available attributes.',
138
+ },
134
139
  },
135
140
  required: ['directory', 'name', 'type'],
136
141
  },
@@ -206,6 +211,11 @@ Pass 'includes' array for framework class dependencies (auto-resolved to UUIDs).
206
211
  description: 'Context: Design decisions',
207
212
  items: { type: 'string' },
208
213
  },
214
+ attributes: {
215
+ type: 'array',
216
+ description: 'PHP 8 attributes for the method (e.g., ["Route(\\"/api/users\\")"], ["Middleware(\\"auth\\")"]). Use search_attributes tool to find available attributes.',
217
+ items: { type: 'string' },
218
+ },
209
219
  },
210
220
  required: ['file', 'name'],
211
221
  },
@@ -322,6 +332,11 @@ For significant changes, include context fields: summary, rationale, references,
322
332
  description: 'Context: Design decisions made',
323
333
  items: { type: 'string' },
324
334
  },
335
+ attributes: {
336
+ type: 'array',
337
+ description: 'PHP 8 attributes for the method (e.g., ["Route(\\"/api/users\\")"], ["Middleware(\\"auth\\")"]). Use search_attributes tool to find available attributes.',
338
+ items: { type: 'string' },
339
+ },
325
340
  },
326
341
  required: ['uuid'],
327
342
  },
@@ -343,6 +358,32 @@ For significant changes, include context fields: summary, rationale, references,
343
358
  },
344
359
  },
345
360
  },
361
+ {
362
+ name: 'search_attributes',
363
+ description: `Search for available PHP 8 attributes in Laravel. Returns attribute suggestions with descriptions, namespaces, targets (class/method/property/parameter), and expected arguments.
364
+
365
+ Use this before adding attributes to files or methods to find the correct attribute name and syntax.
366
+
367
+ Example queries:
368
+ - "fillable" → finds Fillable attribute for models
369
+ - "middleware" → finds Middleware attribute for controllers
370
+ - "queue" → finds Queue, Tries, Timeout attributes for jobs`,
371
+ inputSchema: {
372
+ type: 'object',
373
+ properties: {
374
+ query: {
375
+ type: 'string',
376
+ description: 'Search term to match against attribute names (e.g., "fillable", "middleware", "tries")',
377
+ },
378
+ target: {
379
+ type: 'string',
380
+ enum: ['class', 'method', 'property', 'parameter'],
381
+ description: 'Filter attributes by where they can be applied. Default: returns all.',
382
+ },
383
+ },
384
+ required: ['query'],
385
+ },
386
+ },
346
387
  {
347
388
  name: 'delete_method',
348
389
  description: 'Delete a method from a file by UUID. This permanently removes the method and all its code. Requires both the file UUID and method UUID.',
@@ -994,6 +1035,11 @@ Required: uuid, name, type. For significant changes, include context fields: sum
994
1035
  description: 'Context: Design decisions',
995
1036
  items: { type: 'string' },
996
1037
  },
1038
+ attributes: {
1039
+ type: 'array',
1040
+ items: { type: 'string' },
1041
+ description: 'PHP 8 class-level attributes (e.g., ["Fillable([\'name\', \'email\'])"], ["ObservedBy(UserObserver::class)"]). Use search_attributes tool to find available attributes.',
1042
+ },
997
1043
  },
998
1044
  required: ['uuid', 'name', 'type'],
999
1045
  },
@@ -1509,7 +1555,7 @@ const SERVER_INSTRUCTIONS = `Stellify is a coding platform where code is stored
1509
1555
  // Create MCP server
1510
1556
  const server = new Server({
1511
1557
  name: 'stellify-mcp',
1512
- version: '0.1.38',
1558
+ version: '0.1.39',
1513
1559
  }, {
1514
1560
  capabilities: {
1515
1561
  tools: {},
@@ -1666,6 +1712,20 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1666
1712
  ],
1667
1713
  };
1668
1714
  }
1715
+ case 'search_attributes': {
1716
+ const result = await stellify.searchAttributes(args);
1717
+ return {
1718
+ content: [
1719
+ {
1720
+ type: 'text',
1721
+ text: JSON.stringify({
1722
+ success: true,
1723
+ ...result,
1724
+ }, null, 2),
1725
+ },
1726
+ ],
1727
+ };
1728
+ }
1669
1729
  case 'delete_method': {
1670
1730
  const { file, uuid } = args;
1671
1731
  const result = await stellify.deleteMethod(file, uuid);
@@ -11,6 +11,7 @@ export interface CreateFileParams {
11
11
  extension?: string;
12
12
  code?: string;
13
13
  auto_create_dependencies?: boolean;
14
+ attributes?: string[];
14
15
  }
15
16
  export interface CreateMethodParams {
16
17
  file: string;
@@ -27,6 +28,7 @@ export interface CreateMethodParams {
27
28
  value?: string;
28
29
  }>;
29
30
  body?: string;
31
+ attributes?: string[];
30
32
  }
31
33
  export interface AddMethodBodyParams {
32
34
  file: string;
@@ -198,4 +200,8 @@ export declare class StellifyClient {
198
200
  }): Promise<any>;
199
201
  listPatterns(): Promise<any>;
200
202
  getAssembledCode(uuid: string): Promise<any>;
203
+ searchAttributes(params: {
204
+ query: string;
205
+ target?: 'class' | 'method' | 'property' | 'parameter';
206
+ }): Promise<any>;
201
207
  }
@@ -243,4 +243,9 @@ export class StellifyClient {
243
243
  const response = await this.client.get(`/file/${uuid}/source`);
244
244
  return response.data;
245
245
  }
246
+ // Search PHP 8 attributes - returns suggestions based on query and target
247
+ async searchAttributes(params) {
248
+ const response = await this.client.get('/attributes/search', { params });
249
+ return response.data;
250
+ }
246
251
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stellisoft/stellify-mcp",
3
- "version": "0.1.38",
3
+ "version": "0.1.39",
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",
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/Stellify-Software-Ltd/stellify-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.1.38",
9
+ "version": "0.1.39",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@stellisoft/stellify-mcp",
14
- "version": "0.1.38",
14
+ "version": "0.1.39",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },