
Stellify Mcp
io.github.MattStellisoft由 GitHub 帳號 MattStellisoft 發布v1.0.8更新於 Oct 25, 2026
Build Laravel apps through conversation. Code stored as structured JSON for surgical AI edits.
概覽
Stellify MCP 讓 AI 助理在 Stellify 專案中以結構化 JSON 建置 Laravel 與 Vue.js 應用程式,建立檔案、方法、路由和介面元素。
- 可以做什麼
- 檢視目前專案及其目錄,建立或搜尋目錄和檔案(類別、模型、控制器、中介層、Vue 元件)。新增方法簽章並將程式碼解析為方法主體,建立和讀取匯入、屬性、變數等語句。建立和搜尋路由與頁面,並透過 HTML 建置介面元素,包括 Blade 指令和 Vue 綁定。瀏覽、安裝和搜尋共用資料庫中的可重複使用全域檔案和模組。
- 適用情境
- 適用於在 Stellify 中建置 Laravel 或 Vue.js 應用程式,並希望助理透過對話進行增量式結構化修改,而不是一次產生整個檔案。最適合已有 Stellify 帳戶、希望直接修改專案程式碼的使用者。
- 執行需求
- 需要 Stellify 帳戶。託管端點透過瀏覽器 OAuth 登入,無需安裝或權杖。本機 npm 套件需要 Node.js 18 或更高版本,以及 STELLIFY_API_TOKEN 和 STELLIFY_API_URL 環境變數,權杖需在 Stellify 設定中建立。需要連線至 Stellify API 的網路存取。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Stellify Mcp,將其新增到工作區。
- 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.MattStellisoft%2Fstellify-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。
{
"mcpServers": {
"stellify": {
"type": "http",
"url": "https://api.stellisoft.com/mcp"
}
}
}README
Stellify MCP Server
[npm version] [smithery badge] [License: MIT]
Model Context Protocol (MCP) server for Stellify - the AI-native code generation platform.
What is This?
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:
- Create file structures (classes, controllers, models, middleware, Vue components)
- Add method signatures with type hints
- Parse PHP/JavaScript code into structured JSON (statement-by-statement)
- Convert HTML to Stellify elements in a single operation
- Search existing code in your projects
- Install reusable code from the global library
- Build applications through natural conversation
Quick Start — Hosted Server (recommended)
The easiest way to connect is the hosted server at https://api.stellisoft.com/mcp. No install, no Node.js, no API token — your MCP client opens a browser window where you sign in with your Stellify account and approve access (OAuth).
Claude (web or desktop): Stellify is listed in the Claude connectors directory — go to Settings → Connectors, find Stellify, and click Connect. Or choose Add custom connector and paste https://api.stellisoft.com/mcp.
Claude Code:
Cursor (.cursor/mcp.json):
VS Code (.vscode/mcp.json):
Windsurf (~/.codeium/windsurf/mcp_config.json):
Local Install (npm alternative)
Prefer to run the server locally? The npm package speaks the same protocol against the same platform API, authenticated with an API token instead of OAuth.
Prerequisites
- Node.js 18 or higher
- A Stellify account - Sign up at stellisoft.com
- Claude Desktop (or another MCP-compatible AI client)
Installation
Install globally via npm:
Configuration
-
Get your Stellify API token:
- Log into Stellify
- Navigate to Settings → API Tokens
- Click "Create New Token"
- Copy your token
-
Configure Claude Desktop:
Edit your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/claude/claude_desktop_config.json
Add the Stellify MCP server:
- macOS:
-
Restart Claude Desktop
That's it! The Stellify tools should now be available in Claude Desktop.
Usage
Once configured, you can talk to Claude naturally to build applications:
Example Conversations
Create a new controller:
Add methods:
Implement method logic:
Build a Vue component:
Convert HTML to elements:
Search your codebase:
Available Tools
Project & Directory Tools
get_project
Get the active Stellify project for the authenticated user. Call this first before any other operations.
Parameters: None
Returns:
uuid: Project UUID (needed for most operations)name: Project namedirectories: Array of{uuid, name}for existing directories
get_directory
Get a directory by UUID to see its contents.
Parameters:
uuid(required): The UUID of the directory
create_directory
Create a new directory for organizing files.
Parameters:
name(required): Directory name (e.g., "js", "css", "components")
File Tools
create_file
Create a new file in a Stellify project. This creates an empty file shell - no methods, statements, or template yet.
Parameters:
directory(required): UUID of the directory (get fromget_projectdirectories array)name(required): File name without extension (e.g., "Counter", "UserController")type(required): File type - "class", "model", "controller", "middleware", or "js"extension(optional): File extension. Use "vue" for Vue components.namespace(optional): PHP namespace (e.g., "App\Services\"). Only for PHP files.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.
Directory selection: Match the directory to your file's purpose. If the directory doesn't exist, create it first with create_directory.
Example workflow:
create_file→ creates empty shell, returns file UUIDcreate_statement+add_statement_code→ add variables/importscreate_method+add_method_body→ add functionshtml_to_elements→ create template elements (for Vue)save_file→ finalize with all UUIDs wired together
Auto-dependency creation (when auto_create_dependencies: true):
When you create a file with code like:
Stellify will:
- Parse
usestatements to find dependencies (User,Request,Socialite) - Check Application DB for framework classes → find cached classes
- For core Laravel classes → fetch from api.laravel.com
- For vendor packages (Socialite, Spatie, etc.) → read from
vendor/directory - Create missing App classes → create
Usermodel file - Wire up the file's
includesarray with all dependency UUIDs
Supported sources:
- Laravel API - Core
Illuminate\*classes fetched from api.laravel.com - Vendor packages -
Laravel\Socialite\*,Laravel\Cashier\*,Spatie\*,Livewire\*, etc. read directly from yourvendor/directory using PHP-Parser
The response includes a dependencies report showing what was created/resolved and from which source.
get_file
Get a file by UUID with all its metadata, methods, and statements.
Parameters:
uuid(required): UUID of the file
save_file
Save/update a file with its full configuration. This finalizes the file after create_file.
Parameters:
uuid(required): UUID of the filename(required): File name (without extension)type(required): File type ("js", "class", "controller", "model", "middleware")extension(optional): File extension ("vue" for Vue SFCs)template(optional): Array of root element UUIDs for Vue<template>sectiondata(optional): Array of METHOD UUIDs only (functions)statements(optional): Array of STATEMENT UUIDs (imports, variables, refs)includes(optional): Array of file UUIDs to import
Important: data = method UUIDs only, statements = statement UUIDs (code outside methods)
search_files
Search for files in the project by name or type.
Parameters:
name(optional): File name pattern to search fortype(optional): File type filter
Method Tools
create_method
Create a method signature in a file (without implementation).
Parameters:
file(required): UUID of the file to add the method toname(required): Method name (e.g., "increment", "store", "handleClick")visibility(optional): "public", "protected", or "private" (PHP only, default: "public")is_static(optional): Whether the method is static (PHP only, default: false)returnType(optional): Return type (e.g., "int", "string", "void")parameters(optional): Array of{name, type}objects
add_method_body
Parse and add code to a method body. Stellify parses the code into structured JSON statements.
Parameters:
file_uuid(required): UUID of the file containing the methodmethod_uuid(required): UUID of the method to add code tocode(required): Code for the method body (just the statements, no function declaration)
Example:
search_methods
Search for methods in the project by name or within a specific file.
Parameters:
name(optional): Method name to search for (supports wildcards)file_uuid(optional): Filter results to a specific file
Statement Tools
create_statement
Create an empty statement in a file. This is step 1 of 2 - you must call add_statement_code next.
Parameters:
file(optional): UUID of the file to add the statement tomethod(optional): UUID of the method to add the statement to (for method body statements)
Use cases:
- PHP: Class properties, use statements, constants
- JS/Vue: Variable declarations, imports, reactive refs
add_statement_code
Add code to an existing statement. This is step 2 of 2 - call after create_statement.
Parameters:
file_uuid(required): UUID of the file containing the statementstatement_uuid(required): UUID of the statement to add code tocode(required): The code to add
Examples:
get_statement
Get a statement by UUID with its clauses (code tokens).
Parameters:
uuid(required): The UUID of the statement
Route Tools
create_route
Create a new route/page in a Stellify project.
Parameters:
project_id(required): The UUID of the Stellify projectname(required): Route/page name (e.g., "Home", "Counter", "About")path(required): URL path (e.g., "/", "/counter", "/about")method(required): HTTP method ("GET", "POST", "PUT", "DELETE", "PATCH")type(optional): Route type - "web" for pages, "api" for API endpoints (default: "web")data(optional): Additional route data
get_route
Get a route/page by UUID.
Parameters:
uuid(required): The UUID of the route
search_routes
Search for routes/pages in the project by name.
Parameters:
search(optional): Search term to match route namestype(optional): Filter by route type ("web" or "api")per_page(optional): Results per page (default: 10)
Views & Blade Templates
Stellify stores Blade views as elements instead of files. The root element's name field maps to the view name:
- Element with
name="notes.index"→view('notes.index', $data) - Element with
name="layouts.app"→@extends('layouts.app') - Element with
name="components.card"→<x-card>
Use update_element to set the name on a root element after creating it with html_to_elements.
Convention for reusable templates: Attach layouts, components, and partials to a template route (e.g., /template/app-layout, /template/card) to keep them organized and editable.
Element Tools (UI Components)
create_element
Create a new UI element. Provide either page (route UUID) for root elements, or parent (element UUID) for child elements.
Parameters:
type(required): Element type - one of:- HTML5:
s-wrapper,s-input,s-form,s-svg,s-shape,s-media,s-iframe - Components:
s-transition,s-freestyle,s-motion - Blade:
s-directive - Shadcn/ui:
s-chart,s-table,s-combobox,s-accordion,s-calendar,s-contiguous
- HTML5:
page(optional): UUID of the page/route (for root elements)parent(optional): UUID of the parent element (for child elements)
Using s-directive for Blade Conditionals:
s-directive elements output Blade directives (like @if, @foreach, @endif). They are sibling elements — they don't wrap children. To conditionally render content:
- Create an
s-directiveelement with a statement for the opening directive (e.g.,@if(...)) - Create the content element(s) as the next sibling(s)
- Create another
s-directiveelement with a statement for the closing directive (e.g.,@endif)
Example — conditionally showing an image:
The three elements render in order as siblings:
Using s-directive for Loops:
Loop Item Attributes:
Inside @foreach loops, use these attributes on elements to reference $item:
textField: "fieldName"→ outputs{{ $item->fieldName }}hrefField: "fieldName"→ outputshref="{{ $item->fieldName }}"srcField: "fieldName"→ outputssrc="{{ $item->fieldName }}"hrefExpression: "{{ route('posts.show', $item->slug) }}"→ for complex expressionssrcExpression,altExpression→ same pattern for other attributes
update_element
Update an existing UI element.
Parameters:
uuid(required): UUID of the element to updatedata(required): Object with HTML attributes and Stellify fields
Standard HTML attributes: placeholder, href, src, type, etc.
Stellify fields:
name: Element name in editortype: Element typelocked: Prevent editing (boolean)tag: HTML tag (div, input, button, etc.)classes: CSS classes array["class1", "class2"]text: Static text contentstatements: Array of statement UUIDs for dynamic Blade content
Loop item fields (for elements inside @foreach loops, references $item):
textField: Field name → outputs{{ $item->fieldName }}hrefField: Field name → outputshref="{{ $item->fieldName }}"srcField: Field name → outputssrc="{{ $item->fieldName }}"
Expression attributes (for complex Blade expressions):
hrefExpression: Full Blade expression for href (e.g.,"{{ route('posts.show', $item->slug) }}")srcExpression: Full Blade expression for srcaltExpression: Full Blade expression for alt
Event handlers (set value to method UUID):
click: @clicksubmit: @submitchange: @changeinput: @inputfocus: @focusblur: @blurkeydown: @keydownkeyup: @keyupmouseenter: @mouseentermouseleave: @mouseleave
get_element
Get a single element by UUID.
Parameters:
uuid(required): UUID of the element
get_element_tree
Get an element with all its descendants as a hierarchical tree structure.
Parameters:
uuid(required): UUID of the root element
delete_element
Delete an element and all its children (CASCADE).
Parameters:
uuid(required): UUID of the element to delete
search_elements
Search for elements in the project.
Parameters:
search(optional): Search query to match element name, type, or contenttype(optional): Filter by element typeinclude_metadata(optional): Include additional metadata (default: false)per_page(optional): Results per page, 1-100 (default: 20)
html_to_elements
Convert HTML to Stellify elements in ONE operation. This is the fastest way to build interfaces!
Parameters:
elements(required): HTML string to convertpage(optional): Route UUID to attach elements to. Omit for Vue components.selection(optional): Parent element UUID to attach to (alternative to page)file(optional): Vue component file UUID. Pass this to auto-wire @click handlers to method UUIDs.test(optional): If true, returns structure without creating elements
⚠️ CRITICAL: Multiple Root Elements
When passing HTML with multiple root-level elements (e.g., <header>, <main>, <footer>), only the FIRST root element gets attached to the route via routeParent. Other elements are created but become orphaned (not attached to the route).
Wrong approach (causes orphaned elements):
Correct approach (make separate calls for each root element):
Features:
- Parses HTML structure
- Creates all elements with proper nesting
- Preserves attributes, classes, text content
- Auto-detects Vue bindings (
{{ variable }}) and creates linked statements - Returns element UUIDs for use in
save_filetemplate array
Element type mapping:
button,input,textarea,select→s-inputdiv,span,p,section, etc. →s-wrapperform→s-formimg,video,audio→s-media
Global Library Tools
list_globals
List all global files in the Application database. Globals are reusable, curated code that can be installed into tenant projects.
Parameters: None
get_global
Get a global file with all its methods, statements, and clauses.
Parameters:
uuid(required): UUID of the global file
install_global
Install a global file from the Application database into a tenant project.
Parameters:
file_uuid(required): UUID of the global file to installdirectory_uuid(required): UUID of the directory to install into
search_global_methods
Search for methods across the Application database (global/framework methods).
Parameters:
query(required): Search query to find methods by name
Module Tools
Modules are named collections of related global files that can be installed together.
list_modules
List all available modules.
Parameters: None
get_module
Get a module with all its files.
Parameters:
uuid(required): UUID of the module
create_module
Create a new module to group related global files.
Parameters:
name(required): Unique name for the module (e.g., "laravel-sanctum-auth")description(optional): Description of what the module providesversion(optional): Version string (default: "1.0.0")tags(optional): Tags for categorization (e.g.,["auth", "api", "sanctum"])
add_file_to_module
Add a global file to a module.
Parameters:
module_uuid(required): UUID of the modulefile_uuid(required): UUID of the global file to addorder(optional): Installation order (auto-increments if not specified)
install_module
Install all files from a module into a tenant project.
Parameters:
module_uuid(required): UUID of the module to installdirectory_uuid(required): UUID of the directory to install files into
How Stellify Works
Stellify stores your application code as structured JSON in a database, not text files. This architecture enables:
- Surgical precision: AI modifies specific methods without touching other code
- Query your codebase like data: Find all methods that use a specific class
- Instant refactoring: Rename a method across your entire application instantly
- Version control at the statement level: Track changes to individual code statements
- AI-native development: Give AI granular access without worrying about breaking existing code
- Auto-dependency resolution: Framework classes are automatically fetched from Laravel API docs
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.
Dependency Resolution
When you use auto_create_dependencies, Stellify resolves dependencies in this order:
- Tenant Database - Check if the class exists in your project
- Application Database - Check the global library of pre-defined classes
- Laravel API Docs - For core
Illuminate\*classes, fetch from api.laravel.com - Vendor Directory - For installed packages, read directly from
vendor/
Supported Package Sources
For vendor packages, Stellify uses PHP-Parser to extract the actual method signatures from your installed package version - ensuring accuracy with your specific dependencies.
Code Structure
Each piece of code is broken down into:
- Directory: Organizational container for files
- File: Contains methods and file metadata
- Method: Function with parameters and body statements
- Statement: A single line/statement of code
- Clause: Leaf node (variable, string, number, etc.)
- Language Token: System-defined keywords and symbols (reusable)
Workflows
PHP Controller Workflow
get_project→ Find directory UUIDcreate_file→ type='controller', name='UserController'create_method→ name='store', parameters=[{name:'request', type:'Request'}]add_method_body→ code='return response()->json($request->all());'
Vue Component Workflow
get_project→ Find the 'js' directory UUIDcreate_file→ type='js', extension='vue' in js directory- Create statements for imports and data:
create_statement+add_statement_code:"import { ref } from 'vue';"create_statement+add_statement_code:"const count = ref(0);"
create_method+add_method_body→ Create functionshtml_to_elements→ Convert template HTML to elementsupdate_element→ Wire event handlers (click → method UUID)save_file→ Finalize with:extension: 'vue'template: [rootElementUuid]data: [methodUuid] (METHOD UUIDs only)statements: [importStmtUuid, refStmtUuid] (STATEMENT UUIDs)
Development
Watch mode (auto-rebuild on changes):
Manual build:
Troubleshooting
"STELLIFY_API_TOKEN environment variable is required"
Make sure your .env file exists and contains your API token.
"Connection refused" or API errors
- Verify your API token is valid
- Check that
STELLIFY_API_URLis correct - Test the API directly:
curl -H "Authorization: Bearer YOUR_TOKEN" https://stellisoft.com/api/v1/file/search
Claude Desktop doesn't see the tools
- Verify the configuration file path is correct for your OS
- Check that the Stellify API token is valid
- Restart Claude Desktop completely (Quit, not just close window)
- Check Claude Desktop logs for error messages
TypeScript errors during build
Installation issues
Architecture
The MCP server is a thin client that:
- Exposes tools to Claude
- Translates tool calls to API requests
- Returns formatted responses
Contributing
We welcome contributions! Please see our contributing guidelines and feel free to submit pull requests.
Support
For issues or questions:
- GitHub Issues: Report a bug or request a feature
- Email: [email protected]
- Documentation: https://stellisoft.com/docs
- Discord: Join our community (coming soon)
About Stellify
Stellify is building the future of AI-native software development. By storing code as structured data instead of text files, we enable a new paradigm where AI and humans collaborate seamlessly to build better software, faster.
Learn more at stellisoft.com
License
MIT License - see LICENSE file for details
Built with love by the Stellify team
來源:README.md,提交 2c4351c
工具
0版本歷史
3- v1.0.8最新Oct 7, 2026
- v1.0.7Sep 27, 2026
- v1.0.6Sep 16, 2026
評分
已滿足適用檢查項的 75%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
請在儲存庫或註冊中心條目中宣告授權條款。