@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
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { StellifyClient } from './dist/stellify-client.js';
|
|
2
|
+
import dotenv from 'dotenv';
|
|
3
|
+
|
|
4
|
+
dotenv.config();
|
|
5
|
+
|
|
6
|
+
const client = new StellifyClient({
|
|
7
|
+
apiUrl: process.env.STELLIFY_API_URL,
|
|
8
|
+
apiToken: process.env.STELLIFY_API_TOKEN,
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
const PROJECT_ID = 'b11ba1ac-ad5e-45c7-8285-57f0b7aa0196';
|
|
12
|
+
|
|
13
|
+
async function testHtmlConversion() {
|
|
14
|
+
console.log('Testing HTML to Elements Conversion\n');
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
// Step 1: Create a route
|
|
18
|
+
console.log('1. Creating test route...');
|
|
19
|
+
const timestamp = Date.now();
|
|
20
|
+
const route = await client.createRoute({
|
|
21
|
+
project_id: PROJECT_ID,
|
|
22
|
+
name: `HTML Test ${timestamp}`,
|
|
23
|
+
path: `/html-test-${timestamp}`,
|
|
24
|
+
method: 'GET',
|
|
25
|
+
type: 'web',
|
|
26
|
+
});
|
|
27
|
+
console.log('✅ Route created:', route.data.uuid);
|
|
28
|
+
console.log('');
|
|
29
|
+
|
|
30
|
+
// Step 2: Test preview mode first
|
|
31
|
+
console.log('2. Testing preview mode (test: true)...');
|
|
32
|
+
const html = `
|
|
33
|
+
<div class="container mx-auto p-8">
|
|
34
|
+
<h1 class="text-3xl font-bold mb-4">Contact Form</h1>
|
|
35
|
+
<form method="POST" action="/api/contact" class="space-y-4">
|
|
36
|
+
<div>
|
|
37
|
+
<label class="block text-sm font-medium mb-2">Email</label>
|
|
38
|
+
<input type="email" name="email" placeholder="your@email.com" required class="form-input w-full" />
|
|
39
|
+
</div>
|
|
40
|
+
<div>
|
|
41
|
+
<label class="block text-sm font-medium mb-2">Message</label>
|
|
42
|
+
<textarea name="message" rows="4" placeholder="Your message..." class="form-textarea w-full"></textarea>
|
|
43
|
+
</div>
|
|
44
|
+
<button type="submit" class="bg-blue-500 text-white px-6 py-2 rounded hover:bg-blue-600">
|
|
45
|
+
Send Message
|
|
46
|
+
</button>
|
|
47
|
+
</form>
|
|
48
|
+
</div>
|
|
49
|
+
`;
|
|
50
|
+
|
|
51
|
+
const preview = await client.htmlToElements({
|
|
52
|
+
elements: html,
|
|
53
|
+
page: route.data.uuid,
|
|
54
|
+
test: true,
|
|
55
|
+
});
|
|
56
|
+
console.log('✅ Preview generated:');
|
|
57
|
+
console.log(' Elements created:', Object.keys(preview.data).length);
|
|
58
|
+
console.log(' Root element:', Object.values(preview.data)[0].tag);
|
|
59
|
+
console.log('');
|
|
60
|
+
|
|
61
|
+
// Step 3: Actually create the elements
|
|
62
|
+
console.log('3. Converting HTML to real elements...');
|
|
63
|
+
const result = await client.htmlToElements({
|
|
64
|
+
elements: html,
|
|
65
|
+
page: route.data.uuid,
|
|
66
|
+
test: false,
|
|
67
|
+
});
|
|
68
|
+
console.log('✅ Result:', JSON.stringify(result, null, 2));
|
|
69
|
+
|
|
70
|
+
if (!result.data || Object.keys(result.data).length === 0) {
|
|
71
|
+
console.log('❌ No elements were created');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
console.log('✅ Elements created:', Object.keys(result.data).length);
|
|
76
|
+
console.log('');
|
|
77
|
+
|
|
78
|
+
// Step 4: Get the element tree to verify structure
|
|
79
|
+
console.log('4. Verifying created structure...');
|
|
80
|
+
const rootUuid = Object.keys(result.data)[0];
|
|
81
|
+
const tree = await client.getElementTree(rootUuid);
|
|
82
|
+
|
|
83
|
+
function printTree(element, indent = '') {
|
|
84
|
+
const tag = element.tag || 'unknown';
|
|
85
|
+
const classes = element.classes ? ` [${element.classes.join(' ')}]` : '';
|
|
86
|
+
const text = element.text ? ` "${element.text}"` : '';
|
|
87
|
+
console.log(`${indent}${tag}${classes}${text}`);
|
|
88
|
+
|
|
89
|
+
if (element.children) {
|
|
90
|
+
element.children.forEach(child => printTree(child, indent + ' '));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
console.log('✅ Element hierarchy:');
|
|
95
|
+
printTree(tree.data);
|
|
96
|
+
console.log('');
|
|
97
|
+
|
|
98
|
+
console.log('🎉 HTML conversion working perfectly!');
|
|
99
|
+
console.log('\n📋 What This Means:');
|
|
100
|
+
console.log(' ✅ Write complete HTML structures');
|
|
101
|
+
console.log(' ✅ All attributes preserved');
|
|
102
|
+
console.log(' ✅ Proper nesting maintained');
|
|
103
|
+
console.log(' ✅ Single API call creates everything');
|
|
104
|
+
console.log(' ✅ Can preview before creating');
|
|
105
|
+
console.log('\n🚀 This is THE fastest way to build interfaces!');
|
|
106
|
+
|
|
107
|
+
} catch (error) {
|
|
108
|
+
console.error('❌ Test failed:', error.message);
|
|
109
|
+
if (error.response) {
|
|
110
|
+
console.error('Response data:', JSON.stringify(error.response.data, null, 2));
|
|
111
|
+
console.error('Response status:', error.response.status);
|
|
112
|
+
}
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
testHtmlConversion();
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { StellifyClient } from './dist/stellify-client.js';
|
|
2
|
+
import dotenv from 'dotenv';
|
|
3
|
+
|
|
4
|
+
dotenv.config();
|
|
5
|
+
|
|
6
|
+
const client = new StellifyClient({
|
|
7
|
+
apiUrl: process.env.STELLIFY_API_URL,
|
|
8
|
+
apiToken: process.env.STELLIFY_API_TOKEN,
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
const PROJECT_ID = 'b11ba1ac-ad5e-45c7-8285-57f0b7aa0196';
|
|
12
|
+
|
|
13
|
+
async function testReadDelete() {
|
|
14
|
+
console.log('Testing Read, Search, and Delete Operations\n');
|
|
15
|
+
|
|
16
|
+
try {
|
|
17
|
+
// Step 1: Create test elements
|
|
18
|
+
console.log('1. Creating test page with elements...');
|
|
19
|
+
const timestamp = Date.now();
|
|
20
|
+
const route = await client.createRoute({
|
|
21
|
+
project_id: PROJECT_ID,
|
|
22
|
+
name: `Test CRUD ${timestamp}`,
|
|
23
|
+
path: `/test-crud-${timestamp}`,
|
|
24
|
+
method: 'GET',
|
|
25
|
+
type: 'web',
|
|
26
|
+
});
|
|
27
|
+
console.log('✅ Route created:', route.data.uuid);
|
|
28
|
+
|
|
29
|
+
const container = await client.createElement({
|
|
30
|
+
page: route.data.uuid,
|
|
31
|
+
type: 's-wrapper',
|
|
32
|
+
});
|
|
33
|
+
await client.updateElement(container.data.uuid, {
|
|
34
|
+
name: 'Container',
|
|
35
|
+
tag: 'div',
|
|
36
|
+
classes: ['container', 'mx-auto'],
|
|
37
|
+
});
|
|
38
|
+
console.log('✅ Container created:', container.data.uuid);
|
|
39
|
+
|
|
40
|
+
const button1 = await client.createElement({
|
|
41
|
+
parent: container.data.uuid,
|
|
42
|
+
type: 's-wrapper',
|
|
43
|
+
});
|
|
44
|
+
await client.updateElement(button1.data.uuid, {
|
|
45
|
+
name: 'Button 1',
|
|
46
|
+
tag: 'button',
|
|
47
|
+
text: 'Click Me',
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
const button2 = await client.createElement({
|
|
51
|
+
parent: container.data.uuid,
|
|
52
|
+
type: 's-wrapper',
|
|
53
|
+
});
|
|
54
|
+
await client.updateElement(button2.data.uuid, {
|
|
55
|
+
name: 'Button 2',
|
|
56
|
+
tag: 'button',
|
|
57
|
+
text: 'Cancel',
|
|
58
|
+
});
|
|
59
|
+
console.log('✅ Created 2 buttons');
|
|
60
|
+
console.log('');
|
|
61
|
+
|
|
62
|
+
// Step 2: Get single element
|
|
63
|
+
console.log('2. Testing get_element...');
|
|
64
|
+
const element = await client.getElement(container.data.uuid);
|
|
65
|
+
console.log('✅ Retrieved element:');
|
|
66
|
+
console.log(' Name:', element.data.name);
|
|
67
|
+
console.log(' Tag:', element.data.tag);
|
|
68
|
+
console.log(' Classes:', element.data.classes);
|
|
69
|
+
console.log('');
|
|
70
|
+
|
|
71
|
+
// Step 3: Get element tree
|
|
72
|
+
console.log('3. Testing get_element_tree...');
|
|
73
|
+
const tree = await client.getElementTree(container.data.uuid);
|
|
74
|
+
console.log('✅ Retrieved element tree:');
|
|
75
|
+
console.log(' Root:', tree.data.name);
|
|
76
|
+
console.log(' Children:', tree.data.children ? tree.data.children.length : 0);
|
|
77
|
+
if (tree.data.children) {
|
|
78
|
+
tree.data.children.forEach((child, i) => {
|
|
79
|
+
console.log(` ${i+1}. ${child.name} (${child.tag}): "${child.text}"`);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
console.log('');
|
|
83
|
+
|
|
84
|
+
// Step 4: Search elements
|
|
85
|
+
console.log('4. Testing search_elements...');
|
|
86
|
+
const searchResults = await client.searchElements({
|
|
87
|
+
search: 'Button',
|
|
88
|
+
per_page: 10,
|
|
89
|
+
});
|
|
90
|
+
console.log('✅ Search results:');
|
|
91
|
+
console.log(' Found:', searchResults.data.length, 'elements');
|
|
92
|
+
console.log(' Total in project:', searchResults.pagination.total);
|
|
93
|
+
searchResults.data.slice(0, 3).forEach((el, i) => {
|
|
94
|
+
console.log(` ${i+1}. ${el.name || 'Unnamed'} (${el.type})`);
|
|
95
|
+
});
|
|
96
|
+
console.log('');
|
|
97
|
+
|
|
98
|
+
// Step 5: Delete element
|
|
99
|
+
console.log('5. Testing delete_element (deleting button 2)...');
|
|
100
|
+
const deleteResult = await client.deleteElement(button2.data.uuid);
|
|
101
|
+
console.log('✅ Deleted:', deleteResult.deleted_count, 'element(s)');
|
|
102
|
+
console.log('');
|
|
103
|
+
|
|
104
|
+
// Step 6: Verify deletion by getting tree again
|
|
105
|
+
console.log('6. Verifying deletion...');
|
|
106
|
+
const updatedTree = await client.getElementTree(container.data.uuid);
|
|
107
|
+
console.log('✅ Updated tree:');
|
|
108
|
+
console.log(' Children remaining:', updatedTree.data.children ? updatedTree.data.children.length : 0);
|
|
109
|
+
if (updatedTree.data.children) {
|
|
110
|
+
updatedTree.data.children.forEach((child, i) => {
|
|
111
|
+
console.log(` ${i+1}. ${child.name}`);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
console.log('');
|
|
115
|
+
|
|
116
|
+
console.log('🎉 All read/delete operations working!');
|
|
117
|
+
console.log('\n📋 Capabilities Verified:');
|
|
118
|
+
console.log(' ✅ get_element - Read single element');
|
|
119
|
+
console.log(' ✅ get_element_tree - Read element hierarchy');
|
|
120
|
+
console.log(' ✅ search_elements - Find elements by criteria');
|
|
121
|
+
console.log(' ✅ delete_element - Remove elements (with CASCADE)');
|
|
122
|
+
|
|
123
|
+
} catch (error) {
|
|
124
|
+
console.error('❌ Test failed:', error.message);
|
|
125
|
+
if (error.response) {
|
|
126
|
+
console.error('Response data:', JSON.stringify(error.response.data, null, 2));
|
|
127
|
+
console.error('Response status:', error.response.status);
|
|
128
|
+
}
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
testReadDelete();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
ghu_3W7vsOlZ9o23SbW83wQm9s5XntKI8D4KxkzX
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"token":"eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJtY3AtcmVnaXN0cnkiLCJleHAiOjE3Njc5OTk0MTcsIm5iZiI6MTc2Nzk5OTExNywiaWF0IjoxNzY3OTk5MTE3LCJhdXRoX21ldGhvZCI6ImdpdGh1Yi1hdCIsImF1dGhfbWV0aG9kX3N1YiI6Ik1hdHRTdGVsbGlzb2Z0IiwicGVybWlzc2lvbnMiOlt7ImFjdGlvbiI6InB1Ymxpc2giLCJyZXNvdXJjZSI6ImlvLmdpdGh1Yi5NYXR0U3RlbGxpc29mdC8qIn1dfQ.0rIqxME0TcokcAmBXE8lk0joXzIo0Fty4-D0tA3X6jkrL1OjYsQtuB0PJYbSwRoxRvvGgIsTFXskr28WEkd5Bg","expires_at":1767999417}
|
package/ANNOUNCEMENTS.md
DELETED
|
@@ -1,322 +0,0 @@
|
|
|
1
|
-
# Stellify MCP Server Launch Announcements
|
|
2
|
-
|
|
3
|
-
## Twitter/X (280 characters)
|
|
4
|
-
|
|
5
|
-
🚀 Just launched Stellify MCP Server - build Laravel apps through natural conversation with Claude!
|
|
6
|
-
|
|
7
|
-
Store code as structured JSON for surgical AI edits, instant refactoring & version control at the statement level.
|
|
8
|
-
|
|
9
|
-
Try it: npm install -g @stellisoft/stellify-mcp
|
|
10
|
-
|
|
11
|
-
https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
12
|
-
|
|
13
|
-
#AI #Laravel #Claude #AITooling
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## LinkedIn Post
|
|
18
|
-
|
|
19
|
-
🎉 Excited to announce the launch of Stellify MCP Server!
|
|
20
|
-
|
|
21
|
-
We've just released an open-source Model Context Protocol (MCP) server that lets you build Laravel applications through natural conversation with Claude Desktop.
|
|
22
|
-
|
|
23
|
-
🔥 What makes Stellify different?
|
|
24
|
-
|
|
25
|
-
Instead of text files, Stellify stores your code as structured JSON in a database. This enables:
|
|
26
|
-
|
|
27
|
-
✅ Surgical precision - AI modifies specific methods without touching other code
|
|
28
|
-
✅ Query your codebase like data - Find all methods using a specific class
|
|
29
|
-
✅ Instant refactoring - Rename across your entire app instantly
|
|
30
|
-
✅ Statement-level version control - Track changes granularly
|
|
31
|
-
✅ AI-native development - Give AI access without breaking existing code
|
|
32
|
-
|
|
33
|
-
🚀 Get Started:
|
|
34
|
-
```
|
|
35
|
-
npm install -g @stellisoft/stellify-mcp
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Then configure Claude Desktop and start building Laravel apps through conversation.
|
|
39
|
-
|
|
40
|
-
📦 npm: https://www.npmjs.com/package/@stellisoft/stellify-mcp
|
|
41
|
-
🔧 GitHub: https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
42
|
-
📖 Docs: https://stellisoft.com/docs
|
|
43
|
-
|
|
44
|
-
This is just the beginning. We're building the future of AI-native software development where code is data, and collaboration between humans and AI is seamless.
|
|
45
|
-
|
|
46
|
-
Would love your feedback! Try it out and let me know what you think.
|
|
47
|
-
|
|
48
|
-
#Laravel #AI #SoftwareDevelopment #OpenSource #Claude #Anthropic #WebDevelopment #PHP
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Reddit (r/laravel, r/PHP, r/ClaudeAI)
|
|
53
|
-
|
|
54
|
-
**Title:** [Release] Stellify MCP Server - Build Laravel Apps Through Conversation with Claude
|
|
55
|
-
|
|
56
|
-
**Body:**
|
|
57
|
-
|
|
58
|
-
Hey everyone! 👋
|
|
59
|
-
|
|
60
|
-
I'm excited to share something I've been working on - an MCP (Model Context Protocol) server that lets you build Laravel applications through natural conversation with Claude Desktop.
|
|
61
|
-
|
|
62
|
-
## What is this?
|
|
63
|
-
|
|
64
|
-
Stellify MCP Server bridges Claude Desktop with Stellify, an AI-native code generation platform. Instead of working with text files, Stellify stores your Laravel code as structured JSON in a database.
|
|
65
|
-
|
|
66
|
-
## Why does this matter?
|
|
67
|
-
|
|
68
|
-
**Traditional approach:**
|
|
69
|
-
- AI generates entire files at once
|
|
70
|
-
- Hard to make surgical changes
|
|
71
|
-
- Easy to break existing code
|
|
72
|
-
- No granular version control
|
|
73
|
-
|
|
74
|
-
**With Stellify:**
|
|
75
|
-
- Create files incrementally (classes, controllers, models)
|
|
76
|
-
- Add methods one at a time with type hints
|
|
77
|
-
- Parse PHP code statement-by-statement
|
|
78
|
-
- Query your codebase like data
|
|
79
|
-
- Instant refactoring across your entire app
|
|
80
|
-
- Version control at the statement level
|
|
81
|
-
|
|
82
|
-
## Quick Start
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# Install globally
|
|
86
|
-
npm install -g @stellisoft/stellify-mcp
|
|
87
|
-
|
|
88
|
-
# Configure Claude Desktop (see repo for details)
|
|
89
|
-
# Then just talk naturally:
|
|
90
|
-
# "Create a UserController in my Stellify project"
|
|
91
|
-
# "Add a store method that validates and saves a user"
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## Example Conversation
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
You: "Create a UserController with a store method"
|
|
98
|
-
Claude: [Creates controller structure]
|
|
99
|
-
|
|
100
|
-
You: "Add validation for email and password"
|
|
101
|
-
Claude: [Adds validated request handling]
|
|
102
|
-
|
|
103
|
-
You: "Now add the logic to save the user and return JSON"
|
|
104
|
-
Claude: [Implements the logic]
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
All code is parsed into structured JSON and stored in a database, giving you surgical control and the ability to query/refactor at scale.
|
|
108
|
-
|
|
109
|
-
## Links
|
|
110
|
-
|
|
111
|
-
- 📦 **npm:** https://www.npmjs.com/package/@stellisoft/stellify-mcp
|
|
112
|
-
- 🔧 **GitHub:** https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
113
|
-
- 📖 **Stellify:** https://stellisoft.com
|
|
114
|
-
|
|
115
|
-
This is v0.1.1 - the first public release. I'd love to hear your feedback and any features you'd like to see!
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## Hacker News
|
|
120
|
-
|
|
121
|
-
**Title:** Stellify MCP Server – Build Laravel apps through conversation with Claude
|
|
122
|
-
|
|
123
|
-
**URL:** https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
124
|
-
|
|
125
|
-
**Comment to add context:**
|
|
126
|
-
|
|
127
|
-
Author here. I built this MCP server for Stellify, a platform where code is stored as structured JSON instead of text files.
|
|
128
|
-
|
|
129
|
-
The key insight: when you store code as data, you can query it like data. Want to find every method that calls a specific function? Just query the database. Want to rename a method across your entire app? Update one record.
|
|
130
|
-
|
|
131
|
-
For AI, this means surgical precision. Instead of regenerating entire files (and potentially breaking things), AI can modify individual statements. It's like giving AI a scalpel instead of a sledgehammer.
|
|
132
|
-
|
|
133
|
-
The MCP server lets Claude Desktop interact with Stellify projects, so you can build Laravel apps through natural conversation while maintaining fine-grained control.
|
|
134
|
-
|
|
135
|
-
Would love feedback from the HN community. What other languages/frameworks would you want to see this for?
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Dev.to Article
|
|
140
|
-
|
|
141
|
-
**Title:** Introducing Stellify MCP Server: Build Laravel Apps Through Conversation
|
|
142
|
-
|
|
143
|
-
**Tags:** #laravel #ai #claude #php #opensource
|
|
144
|
-
|
|
145
|
-
**Article:**
|
|
146
|
-
|
|
147
|
-
# Introducing Stellify MCP Server: Build Laravel Apps Through Conversation
|
|
148
|
-
|
|
149
|
-
Have you ever wished you could just _describe_ what you want your code to do, and have it built incrementally with precision? That's exactly what Stellify MCP Server enables.
|
|
150
|
-
|
|
151
|
-
## The Problem with Traditional AI Coding
|
|
152
|
-
|
|
153
|
-
When AI generates code, it typically:
|
|
154
|
-
1. Generates entire files at once
|
|
155
|
-
2. Can't make surgical changes to existing code
|
|
156
|
-
3. Lacks context about your project structure
|
|
157
|
-
4. Can easily break working code
|
|
158
|
-
|
|
159
|
-
## The Stellify Approach
|
|
160
|
-
|
|
161
|
-
Stellify takes a different approach: **code as structured data**.
|
|
162
|
-
|
|
163
|
-
Instead of storing your Laravel application as text files, Stellify stores it as JSON in a database. Each class, method, statement, and even operator has its own database record with metadata.
|
|
164
|
-
|
|
165
|
-
This enables:
|
|
166
|
-
|
|
167
|
-
- **Surgical Precision:** AI modifies specific methods without touching other code
|
|
168
|
-
- **Query Your Codebase:** Find all methods using a specific class with a database query
|
|
169
|
-
- **Instant Refactoring:** Rename a method across your entire app by updating one record
|
|
170
|
-
- **Statement-Level Version Control:** Track changes at the granular level
|
|
171
|
-
- **AI-Native Development:** Give AI access without worrying about breaking things
|
|
172
|
-
|
|
173
|
-
## How It Works
|
|
174
|
-
|
|
175
|
-
The MCP (Model Context Protocol) server acts as a bridge between Claude Desktop and your Stellify projects.
|
|
176
|
-
|
|
177
|
-
### Installation
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
npm install -g @stellisoft/stellify-mcp
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### Configuration
|
|
184
|
-
|
|
185
|
-
Add to your Claude Desktop config:
|
|
186
|
-
|
|
187
|
-
```json
|
|
188
|
-
{
|
|
189
|
-
"mcpServers": {
|
|
190
|
-
"stellify": {
|
|
191
|
-
"command": "stellify-mcp",
|
|
192
|
-
"env": {
|
|
193
|
-
"STELLIFY_API_URL": "https://api.stellisoft.com/v1",
|
|
194
|
-
"STELLIFY_API_TOKEN": "your-token"
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### Usage
|
|
202
|
-
|
|
203
|
-
Just talk naturally to Claude:
|
|
204
|
-
|
|
205
|
-
**You:** "Create a UserController in my Stellify project"
|
|
206
|
-
|
|
207
|
-
**Claude:** [Creates the controller structure]
|
|
208
|
-
|
|
209
|
-
**You:** "Add a store method that validates email and password, then saves the user"
|
|
210
|
-
|
|
211
|
-
**Claude:** [Creates method signature, adds validation, implements save logic]
|
|
212
|
-
|
|
213
|
-
**You:** "Return a JSON response with the created user"
|
|
214
|
-
|
|
215
|
-
**Claude:** [Adds the return statement]
|
|
216
|
-
|
|
217
|
-
Every step is parsed into structured JSON and stored precisely in the database.
|
|
218
|
-
|
|
219
|
-
## What's Inside?
|
|
220
|
-
|
|
221
|
-
The MCP server provides these tools to Claude:
|
|
222
|
-
|
|
223
|
-
- `create_file` - Create classes, controllers, models, middleware
|
|
224
|
-
- `create_method` - Add method signatures with parameters and return types
|
|
225
|
-
- `add_method_body` - Parse and store PHP code statement-by-statement
|
|
226
|
-
- `search_files` - Find files in your project
|
|
227
|
-
- `search_methods` - Find methods by name or signature
|
|
228
|
-
|
|
229
|
-
## The Future
|
|
230
|
-
|
|
231
|
-
This is just v0.1.1 - the beginning. Future plans include:
|
|
232
|
-
|
|
233
|
-
- Global method library (reuse battle-tested code across projects)
|
|
234
|
-
- Support for more frameworks (React, Vue, Node.js)
|
|
235
|
-
- Rich metadata extraction (complexity analysis, dependencies)
|
|
236
|
-
- Team collaboration features
|
|
237
|
-
- Visual code editor integrated with the database
|
|
238
|
-
|
|
239
|
-
## Try It Out
|
|
240
|
-
|
|
241
|
-
- 📦 npm: https://www.npmjs.com/package/@stellisoft/stellify-mcp
|
|
242
|
-
- 🔧 GitHub: https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
243
|
-
- 📖 Docs: https://stellisoft.com/docs
|
|
244
|
-
|
|
245
|
-
I'd love to hear your thoughts! What would you build with this?
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## Product Hunt
|
|
250
|
-
|
|
251
|
-
**Tagline:** Build Laravel apps through conversation with Claude Desktop
|
|
252
|
-
|
|
253
|
-
**Description:**
|
|
254
|
-
|
|
255
|
-
Stellify MCP Server lets you build Laravel applications through natural conversation with Claude Desktop. Unlike traditional AI coding tools, Stellify stores code as structured JSON in a database, enabling surgical precision, instant refactoring, and query-like access to your entire codebase.
|
|
256
|
-
|
|
257
|
-
**Key Features:**
|
|
258
|
-
• Create files, methods, and code incrementally
|
|
259
|
-
• AI modifies specific methods without touching other code
|
|
260
|
-
• Query your codebase like data
|
|
261
|
-
• Statement-level version control
|
|
262
|
-
• Open source & free to use
|
|
263
|
-
|
|
264
|
-
**What makes us different:**
|
|
265
|
-
Most AI coding tools work with text files, leading to imprecise changes and broken code. Stellify stores code as structured data, giving AI (and you) surgical control over every statement, method, and class.
|
|
266
|
-
|
|
267
|
-
**Getting Started:**
|
|
268
|
-
```
|
|
269
|
-
npm install -g @stellisoft/stellify-mcp
|
|
270
|
-
```
|
|
271
|
-
Configure Claude Desktop, then start building through conversation!
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Email Template (for Laravel newsletters, dev communities)
|
|
276
|
-
|
|
277
|
-
**Subject:** New MCP Server: Build Laravel Apps Through Conversation with Claude
|
|
278
|
-
|
|
279
|
-
**Body:**
|
|
280
|
-
|
|
281
|
-
Hi [Community],
|
|
282
|
-
|
|
283
|
-
I'm excited to share Stellify MCP Server - a new way to build Laravel applications through natural conversation with Claude Desktop.
|
|
284
|
-
|
|
285
|
-
**What's different?**
|
|
286
|
-
|
|
287
|
-
Instead of text files, Stellify stores your code as structured JSON in a database. This means:
|
|
288
|
-
|
|
289
|
-
✓ AI can modify specific methods without breaking other code
|
|
290
|
-
✓ You can query your entire codebase like data
|
|
291
|
-
✓ Refactoring happens instantly across your whole app
|
|
292
|
-
✓ Version control works at the statement level
|
|
293
|
-
|
|
294
|
-
**Quick Example:**
|
|
295
|
-
|
|
296
|
-
```
|
|
297
|
-
You: "Create a PostController with CRUD methods"
|
|
298
|
-
Claude: [Creates controller structure]
|
|
299
|
-
|
|
300
|
-
You: "Add validation to the store method"
|
|
301
|
-
Claude: [Adds FormRequest validation]
|
|
302
|
-
|
|
303
|
-
You: "Search for all methods that use the Post model"
|
|
304
|
-
Claude: [Returns searchable results from your database]
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
**Try it out:**
|
|
308
|
-
|
|
309
|
-
```bash
|
|
310
|
-
npm install -g @stellisoft/stellify-mcp
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
Then configure Claude Desktop (instructions in the repo) and start building!
|
|
314
|
-
|
|
315
|
-
📦 npm: https://www.npmjs.com/package/@stellisoft/stellify-mcp
|
|
316
|
-
🔧 GitHub: https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
317
|
-
|
|
318
|
-
This is v0.1.1 - the first public release. I'd love your feedback!
|
|
319
|
-
|
|
320
|
-
Best regards,
|
|
321
|
-
The Stellify Team
|
|
322
|
-
https://stellisoft.com
|
package/REGISTRY_SUBMISSIONS.md
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# MCP Registry Submissions Guide
|
|
2
|
-
|
|
3
|
-
## Status
|
|
4
|
-
|
|
5
|
-
✅ **npm Published**: Package is live at https://www.npmjs.com/package/@stellisoft/stellify-mcp
|
|
6
|
-
✅ **GitHub Published**: Repository at https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
7
|
-
🔄 **Auto-indexing**: mcpdir should automatically detect via npm `mcp` keyword
|
|
8
|
-
|
|
9
|
-
## 1. Official MCP Registry
|
|
10
|
-
|
|
11
|
-
**Website**: https://registry.modelcontextprotocol.io/
|
|
12
|
-
**GitHub**: https://github.com/modelcontextprotocol/registry
|
|
13
|
-
|
|
14
|
-
### Submission Steps:
|
|
15
|
-
|
|
16
|
-
1. **Install the publisher CLI:**
|
|
17
|
-
```bash
|
|
18
|
-
git clone https://github.com/modelcontextprotocol/registry.git
|
|
19
|
-
cd registry
|
|
20
|
-
make publisher
|
|
21
|
-
./bin/mcp-publisher --help
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
2. **Authenticate:**
|
|
25
|
-
Choose one method:
|
|
26
|
-
- **GitHub OAuth**: For manual publishing
|
|
27
|
-
- **GitHub OIDC**: For automated GitHub Actions publishing
|
|
28
|
-
- **DNS/HTTP verification**: For custom domain ownership
|
|
29
|
-
|
|
30
|
-
3. **Publish:**
|
|
31
|
-
```bash
|
|
32
|
-
./bin/mcp-publisher publish
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
4. **Namespace Ownership:**
|
|
36
|
-
Since our package is `@stellisoft/stellify-mcp`, we need to verify:
|
|
37
|
-
- GitHub user/org: `Stellify-Software-Ltd`
|
|
38
|
-
- Package: `stellify-mcp`
|
|
39
|
-
|
|
40
|
-
### Documentation:
|
|
41
|
-
- Full guide: Check "publisher guide" in registry docs
|
|
42
|
-
- API docs: https://registry.modelcontextprotocol.io/docs
|
|
43
|
-
- GitHub Discussions: For help and questions
|
|
44
|
-
|
|
45
|
-
## 2. MCP Directory (mcpdir)
|
|
46
|
-
|
|
47
|
-
**Website**: https://mcpdir.dev
|
|
48
|
-
**GitHub**: https://github.com/eL1fe/mcpdir
|
|
49
|
-
|
|
50
|
-
### Automatic Indexing:
|
|
51
|
-
|
|
52
|
-
✅ **Already configured!** Our package will be automatically indexed because:
|
|
53
|
-
- Published to npm with `mcp` keyword in package.json
|
|
54
|
-
- GitHub repo tagged appropriately
|
|
55
|
-
- Meets MCP protocol standards
|
|
56
|
-
|
|
57
|
-
### Manual Submission (if needed):
|
|
58
|
-
|
|
59
|
-
1. Visit: https://mcpdir.dev/submit
|
|
60
|
-
2. Fill out the submission form with:
|
|
61
|
-
- Package name: `@stellisoft/stellify-mcp`
|
|
62
|
-
- Repository: https://github.com/Stellify-Software-Ltd/stellify-mcp
|
|
63
|
-
- npm link: https://www.npmjs.com/package/@stellisoft/stellify-mcp
|
|
64
|
-
- Description and features
|
|
65
|
-
|
|
66
|
-
3. Validation process includes:
|
|
67
|
-
- Docker-based testing for protocol compliance
|
|
68
|
-
- MCP handshake verification
|
|
69
|
-
- Capability discovery (tools, resources, prompts)
|
|
70
|
-
|
|
71
|
-
## 3. Other Directories to Consider
|
|
72
|
-
|
|
73
|
-
### Anthropic's Official Servers List
|
|
74
|
-
**GitHub**: https://github.com/modelcontextprotocol/servers
|
|
75
|
-
|
|
76
|
-
This is for reference servers maintained by the MCP steering group. We can submit a PR to add Stellify to their community list if they have one.
|
|
77
|
-
|
|
78
|
-
### PulseMCP
|
|
79
|
-
Mentioned as a community directory - check their website for submission process.
|
|
80
|
-
|
|
81
|
-
### Glama.ai
|
|
82
|
-
Another MCP directory that feeds into mcpdir - may auto-index or require manual submission.
|
|
83
|
-
|
|
84
|
-
## 4. Community Promotion
|
|
85
|
-
|
|
86
|
-
Once listed in registries, promote in:
|
|
87
|
-
|
|
88
|
-
- [x] Reddit r/ClaudeAI
|
|
89
|
-
- [x] Reddit r/laravel
|
|
90
|
-
- [x] Dev.to article
|
|
91
|
-
- [x] Twitter/X announcement
|
|
92
|
-
- [x] LinkedIn post
|
|
93
|
-
- [x] Product Hunt launch
|
|
94
|
-
- [x] Hacker News
|
|
95
|
-
- [x] Laravel newsletters
|
|
96
|
-
|
|
97
|
-
## Next Steps
|
|
98
|
-
|
|
99
|
-
1. **Submit to Official MCP Registry** using publisher CLI (priority)
|
|
100
|
-
2. **Check mcpdir** after 24-48 hours to see if auto-indexed
|
|
101
|
-
3. **Manual submit to mcpdir** if not auto-detected
|
|
102
|
-
4. **Post announcements** on social media and dev communities
|
|
103
|
-
5. **Monitor** GitHub issues and npm for user feedback
|
|
104
|
-
|
|
105
|
-
## Verification
|
|
106
|
-
|
|
107
|
-
After 48 hours, verify listings:
|
|
108
|
-
- [ ] Search "Stellify" on https://registry.modelcontextprotocol.io/
|
|
109
|
-
- [ ] Search "Stellify" on https://mcpdir.dev
|
|
110
|
-
- [ ] Check npm weekly download stats
|
|
111
|
-
- [ ] Monitor GitHub stars and issues
|
|
112
|
-
|
|
113
|
-
## Support Channels
|
|
114
|
-
|
|
115
|
-
- GitHub Issues: https://github.com/Stellify-Software-Ltd/stellify-mcp/issues
|
|
116
|
-
- Email: support@stellisoft.com
|
|
117
|
-
- Documentation: https://stellisoft.com/docs
|