@stellisoft/stellify-mcp 0.1.2 → 0.1.7
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/README.md +505 -83
- package/dist/index.js +1597 -113
- package/dist/stellify-client.d.ts +110 -7
- package/dist/stellify-client.js +145 -4
- package/manifest.json +94 -0
- package/package.json +1 -1
- package/stellify-mcp.mcpb +0 -0
- package/test-elements.js +96 -0
- package/test-full-workflow.js +118 -0
- package/test-html-conversion.js +117 -0
- package/test-read-delete.js +133 -0
- package/.mcpregistry_github_token +0 -1
- package/.mcpregistry_registry_token +0 -1
- package/ANNOUNCEMENTS.md +0 -322
- package/REGISTRY_SUBMISSIONS.md +0 -117
package/README.md
CHANGED
|
@@ -7,13 +7,15 @@ Model Context Protocol (MCP) server for [Stellify](https://stellisoft.com) - the
|
|
|
7
7
|
|
|
8
8
|
## What is This?
|
|
9
9
|
|
|
10
|
-
This MCP server lets AI assistants (like Claude Desktop) interact with your Stellify projects to build Laravel applications incrementally. Instead of generating full code files at once, AI can:
|
|
10
|
+
This MCP server lets AI assistants (like Claude Desktop) interact with your Stellify projects to build Laravel and Vue.js applications incrementally. Instead of generating full code files at once, AI can:
|
|
11
11
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
12
|
+
- Create file structures (classes, controllers, models, middleware, Vue components)
|
|
13
|
+
- Add method signatures with type hints
|
|
14
|
+
- Parse PHP/JavaScript code into structured JSON (statement-by-statement)
|
|
15
|
+
- Convert HTML to Stellify elements in a single operation
|
|
16
|
+
- Search existing code in your projects
|
|
17
|
+
- Install reusable code from the global library
|
|
18
|
+
- Build applications through natural conversation
|
|
17
19
|
|
|
18
20
|
## Quick Start
|
|
19
21
|
|
|
@@ -68,7 +70,7 @@ That's it! The Stellify tools should now be available in Claude Desktop.
|
|
|
68
70
|
|
|
69
71
|
## Usage
|
|
70
72
|
|
|
71
|
-
Once configured, you can talk to Claude naturally to build
|
|
73
|
+
Once configured, you can talk to Claude naturally to build applications:
|
|
72
74
|
|
|
73
75
|
### Example Conversations
|
|
74
76
|
|
|
@@ -89,6 +91,17 @@ $user = User::create($request->validated());
|
|
|
89
91
|
return response()->json($user, 201);"
|
|
90
92
|
```
|
|
91
93
|
|
|
94
|
+
**Build a Vue component:**
|
|
95
|
+
```
|
|
96
|
+
"Create a Counter component with an increment button"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Convert HTML to elements:**
|
|
100
|
+
```
|
|
101
|
+
"Convert this HTML to Stellify elements:
|
|
102
|
+
<div class='container'><h1>Hello</h1><button>Click me</button></div>"
|
|
103
|
+
```
|
|
104
|
+
|
|
92
105
|
**Search your codebase:**
|
|
93
106
|
```
|
|
94
107
|
"Search for all controller files in my project"
|
|
@@ -97,85 +110,517 @@ return response()->json($user, 201);"
|
|
|
97
110
|
|
|
98
111
|
## Available Tools
|
|
99
112
|
|
|
100
|
-
###
|
|
101
|
-
|
|
113
|
+
### Project & Directory Tools
|
|
114
|
+
|
|
115
|
+
#### `get_project`
|
|
116
|
+
Get the active Stellify project for the authenticated user. **Call this first before any other operations.**
|
|
117
|
+
|
|
118
|
+
**Parameters:** None
|
|
119
|
+
|
|
120
|
+
**Returns:**
|
|
121
|
+
- `uuid`: Project UUID (needed for most operations)
|
|
122
|
+
- `name`: Project name
|
|
123
|
+
- `directories`: Array of `{uuid, name}` for existing directories
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
#### `get_directory`
|
|
128
|
+
Get a directory by UUID to see its contents.
|
|
102
129
|
|
|
103
130
|
**Parameters:**
|
|
104
|
-
- `
|
|
105
|
-
- `name` (required): File name (e.g., "Calculator", "UserController")
|
|
106
|
-
- `type` (required): File type - "class", "model", "controller", or "middleware"
|
|
107
|
-
- `namespace` (optional): PHP namespace (e.g., "App\\Services\\")
|
|
131
|
+
- `uuid` (required): The UUID of the directory
|
|
108
132
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
#### `create_directory`
|
|
136
|
+
Create a new directory for organizing files.
|
|
137
|
+
|
|
138
|
+
**Parameters:**
|
|
139
|
+
- `name` (required): Directory name (e.g., "js", "css", "components")
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
### File Tools
|
|
144
|
+
|
|
145
|
+
#### `create_file`
|
|
146
|
+
Create a new file in a Stellify project. This creates an empty file shell - no methods, statements, or template yet.
|
|
147
|
+
|
|
148
|
+
**Parameters:**
|
|
149
|
+
- `directory` (required): UUID of the directory (get from `get_project` directories array)
|
|
150
|
+
- `name` (required): File name without extension (e.g., "Counter", "UserController")
|
|
151
|
+
- `type` (required): File type - "class", "model", "controller", "middleware", or "js"
|
|
152
|
+
- `extension` (optional): File extension. Use "vue" for Vue components.
|
|
153
|
+
- `namespace` (optional): PHP namespace (e.g., "App\\Services\\"). Only for PHP files.
|
|
154
|
+
- `includes` (optional): Array of fully-qualified class names to import (e.g., `["App\\Models\\User", "Illuminate\\Http\\Request"]`). Stellify will resolve these to file UUIDs, fetching from Laravel API or vendor directory if needed.
|
|
155
|
+
|
|
156
|
+
**Directory selection:** Match the directory to your file's purpose. If the directory doesn't exist, create it first with `create_directory`.
|
|
157
|
+
|
|
158
|
+
| File Type | Directory | Namespace |
|
|
159
|
+
|-----------|-----------|-----------|
|
|
160
|
+
| Controllers | `controllers` | `App\Http\Controllers\` |
|
|
161
|
+
| Models | `models` | `App\Models\` |
|
|
162
|
+
| Services | `services` | `App\Services\` |
|
|
163
|
+
| Middleware | `middleware` | `App\Http\Middleware\` |
|
|
164
|
+
| Vue/JS | `js` | N/A |
|
|
165
|
+
|
|
166
|
+
**Example workflow:**
|
|
167
|
+
1. `create_file` → creates empty shell, returns file UUID
|
|
168
|
+
2. `create_statement` + `add_statement_code` → add variables/imports
|
|
169
|
+
3. `create_method` + `add_method_body` → add functions
|
|
170
|
+
4. `html_to_elements` → create template elements (for Vue)
|
|
171
|
+
5. `save_file` → finalize with all UUIDs wired together
|
|
172
|
+
|
|
173
|
+
**Auto-dependency creation** (when `auto_create_dependencies: true`):
|
|
174
|
+
|
|
175
|
+
When you create a file with code like:
|
|
176
|
+
```php
|
|
177
|
+
<?php
|
|
178
|
+
namespace App\Http\Controllers;
|
|
179
|
+
|
|
180
|
+
use App\Models\User;
|
|
181
|
+
use Illuminate\Http\Request;
|
|
182
|
+
|
|
183
|
+
class UserController extends Controller
|
|
184
|
+
{
|
|
185
|
+
public function store(Request $request)
|
|
186
|
+
{
|
|
187
|
+
$user = User::create($request->validated());
|
|
188
|
+
return response()->json($user);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
112
191
|
```
|
|
113
192
|
|
|
114
|
-
|
|
193
|
+
Stellify will:
|
|
194
|
+
1. Parse `use` statements to find dependencies (`User`, `Request`, `Socialite`)
|
|
195
|
+
2. Check Application DB for framework classes → find cached classes
|
|
196
|
+
3. For core Laravel classes → fetch from [api.laravel.com](https://api.laravel.com/docs/12.x/)
|
|
197
|
+
4. For vendor packages (Socialite, Spatie, etc.) → read from `vendor/` directory
|
|
198
|
+
5. Create missing App classes → create `User` model file
|
|
199
|
+
6. Wire up the file's `includes` array with all dependency UUIDs
|
|
200
|
+
|
|
201
|
+
**Supported sources:**
|
|
202
|
+
- **Laravel API** - Core `Illuminate\*` classes fetched from api.laravel.com
|
|
203
|
+
- **Vendor packages** - `Laravel\Socialite\*`, `Laravel\Cashier\*`, `Spatie\*`, `Livewire\*`, etc. read directly from your `vendor/` directory using PHP-Parser
|
|
204
|
+
|
|
205
|
+
The response includes a `dependencies` report showing what was created/resolved and from which source.
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
#### `get_file`
|
|
210
|
+
Get a file by UUID with all its metadata, methods, and statements.
|
|
211
|
+
|
|
212
|
+
**Parameters:**
|
|
213
|
+
- `uuid` (required): UUID of the file
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
#### `save_file`
|
|
218
|
+
Save/update a file with its full configuration. This finalizes the file after `create_file`.
|
|
219
|
+
|
|
220
|
+
**Parameters:**
|
|
221
|
+
- `uuid` (required): UUID of the file
|
|
222
|
+
- `name` (required): File name (without extension)
|
|
223
|
+
- `type` (required): File type ("js", "class", "controller", "model", "middleware")
|
|
224
|
+
- `extension` (optional): File extension ("vue" for Vue SFCs)
|
|
225
|
+
- `template` (optional): Array of root element UUIDs for Vue `<template>` section
|
|
226
|
+
- `data` (optional): Array of METHOD UUIDs only (functions)
|
|
227
|
+
- `statements` (optional): Array of STATEMENT UUIDs (imports, variables, refs)
|
|
228
|
+
- `includes` (optional): Array of file UUIDs to import
|
|
229
|
+
|
|
230
|
+
**Important:** `data` = method UUIDs only, `statements` = statement UUIDs (code outside methods)
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
#### `search_files`
|
|
235
|
+
Search for files in the project by name or type.
|
|
236
|
+
|
|
237
|
+
**Parameters:**
|
|
238
|
+
- `name` (optional): File name pattern to search for
|
|
239
|
+
- `type` (optional): File type filter
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
### Method Tools
|
|
244
|
+
|
|
245
|
+
#### `create_method`
|
|
115
246
|
Create a method signature in a file (without implementation).
|
|
116
247
|
|
|
117
248
|
**Parameters:**
|
|
118
|
-
- `
|
|
119
|
-
- `name` (required): Method name (e.g., "
|
|
120
|
-
- `visibility` (optional): "public", "protected", or "private" (default: "public")
|
|
121
|
-
- `is_static` (optional):
|
|
122
|
-
- `
|
|
249
|
+
- `file` (required): UUID of the file to add the method to
|
|
250
|
+
- `name` (required): Method name (e.g., "increment", "store", "handleClick")
|
|
251
|
+
- `visibility` (optional): "public", "protected", or "private" (PHP only, default: "public")
|
|
252
|
+
- `is_static` (optional): Whether the method is static (PHP only, default: false)
|
|
253
|
+
- `returnType` (optional): Return type (e.g., "int", "string", "void")
|
|
123
254
|
- `parameters` (optional): Array of `{name, type}` objects
|
|
124
255
|
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
#### `add_method_body`
|
|
259
|
+
Parse and add code to a method body. Stellify parses the code into structured JSON statements.
|
|
260
|
+
|
|
261
|
+
**Parameters:**
|
|
262
|
+
- `file_uuid` (required): UUID of the file containing the method
|
|
263
|
+
- `method_uuid` (required): UUID of the method to add code to
|
|
264
|
+
- `code` (required): Code for the method body (just the statements, no function declaration)
|
|
265
|
+
|
|
125
266
|
**Example:**
|
|
126
267
|
```
|
|
127
|
-
|
|
268
|
+
code: "return $a + $b;"
|
|
128
269
|
```
|
|
129
270
|
|
|
130
|
-
|
|
131
|
-
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
#### `search_methods`
|
|
274
|
+
Search for methods in the project by name or within a specific file.
|
|
132
275
|
|
|
133
276
|
**Parameters:**
|
|
134
|
-
- `
|
|
135
|
-
- `
|
|
136
|
-
- `code` (required): PHP code (just the body, no function declaration)
|
|
277
|
+
- `name` (optional): Method name to search for (supports wildcards)
|
|
278
|
+
- `file_uuid` (optional): Filter results to a specific file
|
|
137
279
|
|
|
138
|
-
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
### Statement Tools
|
|
283
|
+
|
|
284
|
+
#### `create_statement`
|
|
285
|
+
Create an empty statement in a file. This is step 1 of 2 - you must call `add_statement_code` next.
|
|
286
|
+
|
|
287
|
+
**Parameters:**
|
|
288
|
+
- `file` (optional): UUID of the file to add the statement to
|
|
289
|
+
- `method` (optional): UUID of the method to add the statement to (for method body statements)
|
|
290
|
+
|
|
291
|
+
**Use cases:**
|
|
292
|
+
- PHP: Class properties, use statements, constants
|
|
293
|
+
- JS/Vue: Variable declarations, imports, reactive refs
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
#### `add_statement_code`
|
|
298
|
+
Add code to an existing statement. This is step 2 of 2 - call after `create_statement`.
|
|
299
|
+
|
|
300
|
+
**Parameters:**
|
|
301
|
+
- `file_uuid` (required): UUID of the file containing the statement
|
|
302
|
+
- `statement_uuid` (required): UUID of the statement to add code to
|
|
303
|
+
- `code` (required): The code to add
|
|
304
|
+
|
|
305
|
+
**Examples:**
|
|
139
306
|
```
|
|
140
|
-
|
|
307
|
+
code: "use Illuminate\\Http\\Request;"
|
|
308
|
+
code: "const count = ref(0);"
|
|
309
|
+
code: "import { ref } from 'vue';"
|
|
141
310
|
```
|
|
142
311
|
|
|
143
|
-
|
|
144
|
-
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
#### `get_statement`
|
|
315
|
+
Get a statement by UUID with its clauses (code tokens).
|
|
145
316
|
|
|
146
317
|
**Parameters:**
|
|
147
|
-
- `
|
|
148
|
-
- `file_uuid` (optional): Filter to specific file
|
|
318
|
+
- `uuid` (required): The UUID of the statement
|
|
149
319
|
|
|
150
|
-
|
|
151
|
-
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
### Route Tools
|
|
323
|
+
|
|
324
|
+
#### `create_route`
|
|
325
|
+
Create a new route/page in a Stellify project.
|
|
152
326
|
|
|
153
327
|
**Parameters:**
|
|
154
|
-
- `
|
|
155
|
-
- `
|
|
328
|
+
- `project_id` (required): The UUID of the Stellify project
|
|
329
|
+
- `name` (required): Route/page name (e.g., "Home", "Counter", "About")
|
|
330
|
+
- `path` (required): URL path (e.g., "/", "/counter", "/about")
|
|
331
|
+
- `method` (required): HTTP method ("GET", "POST", "PUT", "DELETE", "PATCH")
|
|
332
|
+
- `type` (optional): Route type - "web" for pages, "api" for API endpoints (default: "web")
|
|
333
|
+
- `data` (optional): Additional route data
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
#### `get_route`
|
|
338
|
+
Get a route/page by UUID.
|
|
339
|
+
|
|
340
|
+
**Parameters:**
|
|
341
|
+
- `uuid` (required): The UUID of the route
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
#### `search_routes`
|
|
346
|
+
Search for routes/pages in the project by name.
|
|
347
|
+
|
|
348
|
+
**Parameters:**
|
|
349
|
+
- `search` (optional): Search term to match route names
|
|
350
|
+
- `type` (optional): Filter by route type ("web" or "api")
|
|
351
|
+
- `per_page` (optional): Results per page (default: 10)
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
### Element Tools (UI Components)
|
|
356
|
+
|
|
357
|
+
#### `create_element`
|
|
358
|
+
Create a new UI element. Provide either `page` (route UUID) for root elements, or `parent` (element UUID) for child elements.
|
|
359
|
+
|
|
360
|
+
**Parameters:**
|
|
361
|
+
- `type` (required): Element type - one of:
|
|
362
|
+
- HTML5: `s-wrapper`, `s-input`, `s-form`, `s-svg`, `s-shape`, `s-media`, `s-iframe`
|
|
363
|
+
- Components: `s-loop`, `s-transition`, `s-freestyle`, `s-motion`
|
|
364
|
+
- Blade: `s-directive`
|
|
365
|
+
- Shadcn/ui: `s-chart`, `s-table`, `s-combobox`, `s-accordion`, `s-calendar`, `s-contiguous`
|
|
366
|
+
- `page` (optional): UUID of the page/route (for root elements)
|
|
367
|
+
- `parent` (optional): UUID of the parent element (for child elements)
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
#### `update_element`
|
|
372
|
+
Update an existing UI element.
|
|
373
|
+
|
|
374
|
+
**Parameters:**
|
|
375
|
+
- `uuid` (required): UUID of the element to update
|
|
376
|
+
- `data` (required): Object with HTML attributes and Stellify fields
|
|
377
|
+
|
|
378
|
+
**Standard HTML attributes:** `placeholder`, `href`, `src`, `type`, etc.
|
|
379
|
+
|
|
380
|
+
**Stellify fields:**
|
|
381
|
+
- `name`: Element name in editor
|
|
382
|
+
- `type`: Element type
|
|
383
|
+
- `locked`: Prevent editing (boolean)
|
|
384
|
+
- `tag`: HTML tag (div, input, button, etc.)
|
|
385
|
+
- `classes`: CSS classes array `["class1", "class2"]`
|
|
386
|
+
- `text`: Element text content
|
|
387
|
+
|
|
388
|
+
**Event handlers** (set value to method UUID):
|
|
389
|
+
- `click`: @click
|
|
390
|
+
- `submit`: @submit
|
|
391
|
+
- `change`: @change
|
|
392
|
+
- `input`: @input
|
|
393
|
+
- `focus`: @focus
|
|
394
|
+
- `blur`: @blur
|
|
395
|
+
- `keydown`: @keydown
|
|
396
|
+
- `keyup`: @keyup
|
|
397
|
+
- `mouseenter`: @mouseenter
|
|
398
|
+
- `mouseleave`: @mouseleave
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
#### `get_element`
|
|
403
|
+
Get a single element by UUID.
|
|
404
|
+
|
|
405
|
+
**Parameters:**
|
|
406
|
+
- `uuid` (required): UUID of the element
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
#### `get_element_tree`
|
|
411
|
+
Get an element with all its descendants as a hierarchical tree structure.
|
|
412
|
+
|
|
413
|
+
**Parameters:**
|
|
414
|
+
- `uuid` (required): UUID of the root element
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
#### `delete_element`
|
|
419
|
+
Delete an element and all its children (CASCADE).
|
|
420
|
+
|
|
421
|
+
**Parameters:**
|
|
422
|
+
- `uuid` (required): UUID of the element to delete
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
#### `search_elements`
|
|
427
|
+
Search for elements in the project.
|
|
428
|
+
|
|
429
|
+
**Parameters:**
|
|
430
|
+
- `search` (optional): Search query to match element name, type, or content
|
|
431
|
+
- `type` (optional): Filter by element type
|
|
432
|
+
- `include_metadata` (optional): Include additional metadata (default: false)
|
|
433
|
+
- `per_page` (optional): Results per page, 1-100 (default: 20)
|
|
434
|
+
|
|
435
|
+
---
|
|
436
|
+
|
|
437
|
+
#### `html_to_elements`
|
|
438
|
+
Convert HTML to Stellify elements in ONE operation. This is the fastest way to build interfaces!
|
|
439
|
+
|
|
440
|
+
**Parameters:**
|
|
441
|
+
- `elements` (required): HTML string to convert
|
|
442
|
+
- `page` (optional): Route UUID to attach elements to. Omit for Vue components.
|
|
443
|
+
- `selection` (optional): Parent element UUID to attach to (alternative to page)
|
|
444
|
+
- `test` (optional): If true, returns structure without creating elements
|
|
445
|
+
|
|
446
|
+
**Features:**
|
|
447
|
+
- Parses HTML structure
|
|
448
|
+
- Creates all elements with proper nesting
|
|
449
|
+
- Preserves attributes, classes, text content
|
|
450
|
+
- Auto-detects Vue bindings (`{{ variable }}`) and creates linked statements
|
|
451
|
+
- Returns element UUIDs for use in `save_file` template array
|
|
452
|
+
|
|
453
|
+
**Element type mapping:**
|
|
454
|
+
- `button`, `input`, `textarea`, `select` → `s-input`
|
|
455
|
+
- `div`, `span`, `p`, `section`, etc. → `s-wrapper`
|
|
456
|
+
- `form` → `s-form`
|
|
457
|
+
- `img`, `video`, `audio` → `s-media`
|
|
458
|
+
|
|
459
|
+
---
|
|
460
|
+
|
|
461
|
+
### Global Library Tools
|
|
462
|
+
|
|
463
|
+
#### `list_globals`
|
|
464
|
+
List all global files in the Application database. Globals are reusable, curated code that can be installed into tenant projects.
|
|
465
|
+
|
|
466
|
+
**Parameters:** None
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
#### `get_global`
|
|
471
|
+
Get a global file with all its methods, statements, and clauses.
|
|
472
|
+
|
|
473
|
+
**Parameters:**
|
|
474
|
+
- `uuid` (required): UUID of the global file
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
#### `install_global`
|
|
479
|
+
Install a global file from the Application database into a tenant project.
|
|
480
|
+
|
|
481
|
+
**Parameters:**
|
|
482
|
+
- `file_uuid` (required): UUID of the global file to install
|
|
483
|
+
- `directory_uuid` (required): UUID of the directory to install into
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
#### `search_global_methods`
|
|
488
|
+
Search for methods across the Application database (global/framework methods).
|
|
489
|
+
|
|
490
|
+
**Parameters:**
|
|
491
|
+
- `query` (required): Search query to find methods by name
|
|
492
|
+
|
|
493
|
+
---
|
|
494
|
+
|
|
495
|
+
### Module Tools
|
|
496
|
+
|
|
497
|
+
Modules are named collections of related global files that can be installed together.
|
|
498
|
+
|
|
499
|
+
#### `list_modules`
|
|
500
|
+
List all available modules.
|
|
501
|
+
|
|
502
|
+
**Parameters:** None
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
#### `get_module`
|
|
507
|
+
Get a module with all its files.
|
|
508
|
+
|
|
509
|
+
**Parameters:**
|
|
510
|
+
- `uuid` (required): UUID of the module
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
#### `create_module`
|
|
515
|
+
Create a new module to group related global files.
|
|
516
|
+
|
|
517
|
+
**Parameters:**
|
|
518
|
+
- `name` (required): Unique name for the module (e.g., "laravel-sanctum-auth")
|
|
519
|
+
- `description` (optional): Description of what the module provides
|
|
520
|
+
- `version` (optional): Version string (default: "1.0.0")
|
|
521
|
+
- `tags` (optional): Tags for categorization (e.g., `["auth", "api", "sanctum"]`)
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
#### `add_file_to_module`
|
|
526
|
+
Add a global file to a module.
|
|
527
|
+
|
|
528
|
+
**Parameters:**
|
|
529
|
+
- `module_uuid` (required): UUID of the module
|
|
530
|
+
- `file_uuid` (required): UUID of the global file to add
|
|
531
|
+
- `order` (optional): Installation order (auto-increments if not specified)
|
|
532
|
+
|
|
533
|
+
---
|
|
534
|
+
|
|
535
|
+
#### `install_module`
|
|
536
|
+
Install all files from a module into a tenant project.
|
|
537
|
+
|
|
538
|
+
**Parameters:**
|
|
539
|
+
- `module_uuid` (required): UUID of the module to install
|
|
540
|
+
- `directory_uuid` (required): UUID of the directory to install files into
|
|
541
|
+
|
|
542
|
+
---
|
|
156
543
|
|
|
157
544
|
## How Stellify Works
|
|
158
545
|
|
|
159
|
-
Stellify stores your
|
|
546
|
+
Stellify stores your application code as **structured JSON** in a database, not text files. This architecture enables:
|
|
160
547
|
|
|
161
548
|
- **Surgical precision:** AI modifies specific methods without touching other code
|
|
162
549
|
- **Query your codebase like data:** Find all methods that use a specific class
|
|
163
550
|
- **Instant refactoring:** Rename a method across your entire application instantly
|
|
164
551
|
- **Version control at the statement level:** Track changes to individual code statements
|
|
165
552
|
- **AI-native development:** Give AI granular access without worrying about breaking existing code
|
|
553
|
+
- **Auto-dependency resolution:** Framework classes are automatically fetched from Laravel API docs
|
|
554
|
+
|
|
555
|
+
When you build with Stellify through this MCP server, code is parsed into structured data and can be assembled back into executable code when you deploy.
|
|
556
|
+
|
|
557
|
+
### Dependency Resolution
|
|
558
|
+
|
|
559
|
+
When you use `auto_create_dependencies`, Stellify resolves dependencies in this order:
|
|
166
560
|
|
|
167
|
-
|
|
561
|
+
1. **Tenant Database** - Check if the class exists in your project
|
|
562
|
+
2. **Application Database** - Check the global library of pre-defined classes
|
|
563
|
+
3. **Laravel API Docs** - For core `Illuminate\*` classes, fetch from [api.laravel.com](https://api.laravel.com/docs/12.x/)
|
|
564
|
+
4. **Vendor Directory** - For installed packages, read directly from `vendor/`
|
|
168
565
|
|
|
169
|
-
|
|
566
|
+
### Supported Package Sources
|
|
170
567
|
|
|
171
|
-
|
|
568
|
+
| Source | Namespaces | Method |
|
|
569
|
+
|--------|-----------|--------|
|
|
570
|
+
| Laravel API | `Illuminate\*` | Fetches from api.laravel.com |
|
|
571
|
+
| Vendor | `Laravel\Socialite\*` | Reads from vendor/laravel/socialite |
|
|
572
|
+
| Vendor | `Laravel\Cashier\*` | Reads from vendor/laravel/cashier |
|
|
573
|
+
| Vendor | `Laravel\Sanctum\*` | Reads from vendor/laravel/sanctum |
|
|
574
|
+
| Vendor | `Laravel\Passport\*` | Reads from vendor/laravel/passport |
|
|
575
|
+
| Vendor | `Spatie\*` | Reads from vendor/spatie/* packages |
|
|
576
|
+
| Vendor | `Livewire\*` | Reads from vendor/livewire/livewire |
|
|
577
|
+
| Vendor | `Inertia\*` | Reads from vendor/inertiajs/inertia-laravel |
|
|
172
578
|
|
|
173
|
-
|
|
174
|
-
2. **Add Signatures** → Method declarations without bodies
|
|
175
|
-
3. **Parse Bodies** → Statement-by-statement implementation
|
|
176
|
-
4. **Assemble** → Stellify converts structured data back to PHP
|
|
579
|
+
For vendor packages, Stellify uses PHP-Parser to extract the actual method signatures from your installed package version - ensuring accuracy with your specific dependencies.
|
|
177
580
|
|
|
178
|
-
|
|
581
|
+
### Code Structure
|
|
582
|
+
|
|
583
|
+
```
|
|
584
|
+
Directory
|
|
585
|
+
└── File
|
|
586
|
+
└── Method
|
|
587
|
+
├── Parameters (Clauses)
|
|
588
|
+
└── Statements
|
|
589
|
+
└── Clauses / Language Tokens
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
Each piece of code is broken down into:
|
|
593
|
+
- **Directory**: Organizational container for files
|
|
594
|
+
- **File**: Contains methods and file metadata
|
|
595
|
+
- **Method**: Function with parameters and body statements
|
|
596
|
+
- **Statement**: A single line/statement of code
|
|
597
|
+
- **Clause**: Leaf node (variable, string, number, etc.)
|
|
598
|
+
- **Language Token**: System-defined keywords and symbols (reusable)
|
|
599
|
+
|
|
600
|
+
## Workflows
|
|
601
|
+
|
|
602
|
+
### PHP Controller Workflow
|
|
603
|
+
|
|
604
|
+
1. `get_project` → Find directory UUID
|
|
605
|
+
2. `create_file` → type='controller', name='UserController'
|
|
606
|
+
3. `create_method` → name='store', parameters=[{name:'request', type:'Request'}]
|
|
607
|
+
4. `add_method_body` → code='return response()->json($request->all());'
|
|
608
|
+
|
|
609
|
+
### Vue Component Workflow
|
|
610
|
+
|
|
611
|
+
1. `get_project` → Find the 'js' directory UUID
|
|
612
|
+
2. `create_file` → type='js', extension='vue' in js directory
|
|
613
|
+
3. Create statements for imports and data:
|
|
614
|
+
- `create_statement` + `add_statement_code`: `"import { ref } from 'vue';"`
|
|
615
|
+
- `create_statement` + `add_statement_code`: `"const count = ref(0);"`
|
|
616
|
+
4. `create_method` + `add_method_body` → Create functions
|
|
617
|
+
5. `html_to_elements` → Convert template HTML to elements
|
|
618
|
+
6. `update_element` → Wire event handlers (click → method UUID)
|
|
619
|
+
7. `save_file` → Finalize with:
|
|
620
|
+
- `extension`: 'vue'
|
|
621
|
+
- `template`: [rootElementUuid]
|
|
622
|
+
- `data`: [methodUuid] (METHOD UUIDs only)
|
|
623
|
+
- `statements`: [importStmtUuid, refStmtUuid] (STATEMENT UUIDs)
|
|
179
624
|
|
|
180
625
|
## Development
|
|
181
626
|
|
|
@@ -200,9 +645,10 @@ Make sure your `.env` file exists and contains your API token.
|
|
|
200
645
|
- Test the API directly: `curl -H "Authorization: Bearer YOUR_TOKEN" https://stellisoft.com/api/v1/file/search`
|
|
201
646
|
|
|
202
647
|
### Claude Desktop doesn't see the tools
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
648
|
+
1. Verify the configuration file path is correct for your OS
|
|
649
|
+
2. Check that the Stellify API token is valid
|
|
650
|
+
3. Restart Claude Desktop completely (Quit, not just close window)
|
|
651
|
+
4. Check Claude Desktop logs for error messages
|
|
206
652
|
|
|
207
653
|
### TypeScript errors during build
|
|
208
654
|
```bash
|
|
@@ -211,6 +657,14 @@ npm install
|
|
|
211
657
|
npm run build
|
|
212
658
|
```
|
|
213
659
|
|
|
660
|
+
### Installation issues
|
|
661
|
+
```bash
|
|
662
|
+
# Clear npm cache and reinstall
|
|
663
|
+
npm cache clean --force
|
|
664
|
+
npm uninstall -g @stellisoft/stellify-mcp
|
|
665
|
+
npm install -g @stellisoft/stellify-mcp
|
|
666
|
+
```
|
|
667
|
+
|
|
214
668
|
## Architecture
|
|
215
669
|
|
|
216
670
|
```
|
|
@@ -228,38 +682,6 @@ The MCP server is a thin client that:
|
|
|
228
682
|
2. Translates tool calls to API requests
|
|
229
683
|
3. Returns formatted responses
|
|
230
684
|
|
|
231
|
-
## Next Steps
|
|
232
|
-
|
|
233
|
-
After Phase 1 works, we'll add:
|
|
234
|
-
- Global method library (reference battle-tested code)
|
|
235
|
-
- Contribute methods to global library
|
|
236
|
-
- Rich metadata extraction
|
|
237
|
-
- Usage statistics
|
|
238
|
-
|
|
239
|
-
## Troubleshooting
|
|
240
|
-
|
|
241
|
-
### Claude Desktop doesn't see the tools
|
|
242
|
-
|
|
243
|
-
1. Verify the configuration file path is correct for your OS
|
|
244
|
-
2. Check that the Stellify API token is valid
|
|
245
|
-
3. Restart Claude Desktop completely (Quit, not just close window)
|
|
246
|
-
4. Check Claude Desktop logs for error messages
|
|
247
|
-
|
|
248
|
-
### API connection errors
|
|
249
|
-
|
|
250
|
-
- Verify your API token at https://stellisoft.com/settings/tokens
|
|
251
|
-
- Check that `STELLIFY_API_URL` is correct
|
|
252
|
-
- Ensure your Stellify account is active
|
|
253
|
-
|
|
254
|
-
### Installation issues
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
# Clear npm cache and reinstall
|
|
258
|
-
npm cache clean --force
|
|
259
|
-
npm uninstall -g @stellisoft/stellify-mcp
|
|
260
|
-
npm install -g @stellisoft/stellify-mcp
|
|
261
|
-
```
|
|
262
|
-
|
|
263
685
|
## Contributing
|
|
264
686
|
|
|
265
687
|
We welcome contributions! Please see our contributing guidelines and feel free to submit pull requests.
|
|
@@ -284,4 +706,4 @@ MIT License - see [LICENSE](LICENSE) file for details
|
|
|
284
706
|
|
|
285
707
|
---
|
|
286
708
|
|
|
287
|
-
Built with
|
|
709
|
+
Built with love by the Stellify team
|