FrameIO MCP Server
MCP server for generating and validating FrameIO modules and plugins, with code generation, validation, examples, and step-by-step guidance.
README
FrameIO MCP Server
Model Context Protocol (MCP) server for FrameIO module and plugin creation and validation. This server provides tools, resources, and prompts to help LLMs consistently build FrameIO modules and plugins.
Features
- Code Generation: Generate complete module/plugin scaffolding and entity definitions
- Validation: Validate module structure, code, and conventions
- Examples: Access real-world examples from existing modules and plugins
- Documentation: Comprehensive framework documentation and best practices
- Guidance: Step-by-step prompts for module and plugin creation
Installation
cd tools/frameio-mcp
npm install
npm run build
Configuration
Cursor Configuration
Add to your Cursor MCP settings (.cursor/mcp.json or Cursor settings):
{
"mcpServers": {
"frameio": {
"command": "node",
"args": ["tools/frameio-mcp/dist/server.js"],
"cwd": "."
}
}
}
VS Code / Other Clients
Configure your MCP client to run:
node tools/frameio-mcp/dist/server.js
Available Tools
1. generate_module
Generate complete module scaffolding.
Parameters:
moduleId(string, required): Kebab-case module identifierdisplayName(string, required): Human-readable module namedescription(string, required): Module descriptionentities(array, optional): Array of entity definitionsincludeNavigation(boolean, default: true): Generate navigation itemsincludeCommands(boolean, default: true): Generate command palette entries
Returns: Complete module code structure including package.json, index.ts, tsconfig.json, and registry entry
2. generate_entity
Generate entity definition code.
Parameters:
entityKey(string, required): Format{module-id}.{entity-name}name(string, required): Singular entity namepluralName(string, required): Plural entity namedescription(string, required): Entity descriptionfields(array, required): Array of field definitionsicon(string, optional): Lucide icon nameviews(array, optional): View configurations
Returns: Complete entity definition code using defineEntity() builder
3. validate_module
Validate module structure and code.
Parameters (choose one mode):
- Local:
modulePath(string): Path to module directory (relative to the process cwd, usually the FrameIO repo root). - Remote / hosted MCP:
files(object): Map of relative paths to UTF-8 file text. Must include at leastpackage.jsonandsrc/index.ts. OptionalmoduleIdif the package name is non-standard; optionalregistryContentwith the full text ofmodules/.registry.tsto verify registration. strict(boolean, default: false): Enable strict validation
Returns: Validation results with errors, warnings, and checks
4. get_example_module
Fetch example module source. If the MCP process has a FrameIO checkout, examples are read from modules/. Otherwise (e.g. Railway-hosted MCP) the server returns bundled samples (rewards, bom, calendar-demo).
Parameters:
moduleId(string, optional): Specific module to fetchfeature(string, optional): Specific feature (entities, navigation, commands, etc.)pattern(string, optional): Pattern to match (e.g., "reference-field", "kanban-view")
Returns: Example code snippets from existing modules
5. validate_plugin
Validate plugin structure, route contract, and build contract.
Parameters:
pluginPath(string, required): Path to plugin directory (e.g.plugins/my-plugin)strict(boolean, default: false): Enable strict validation
Returns: Validation results with checks for structure, exports, route contract (createRouter(deps), no registerRoutes), build contract (tsconfig.build.json), and registry
Available Resources
1. frameio://architecture
Design philosophy and platform architecture (canonical reference for modules and plugins):
- Registration-based design; no domain in core
- Modules vs plugins (strict split): modules = UI + metadata; plugins = API + UI + widget data
- Core: generic only; permissions from registry; widget data from plugin providers only
- Plugin route contract:
createRouter(deps: PluginApiDeps); build contract:tsconfig.build.json, types from@frameio/sdk
Read this first when creating modules or plugins so generated code aligns with the platform.
2. frameio://framework-guide
Comprehensive framework documentation covering:
- Module structure and conventions
- Entity definition patterns
- Field types and options
- Navigation, commands, stat cards, quick links
- Custom pages
- Best practices
3. frameio://field-types
Complete reference of all available field types:
- String, text, number, decimal fields
- Boolean, date, datetime fields
- Email, phone, URL fields
- Select, multiselect fields
- Reference, location fields
- Currency, percentage, JSON fields
Each with options, validation rules, and examples.
4. frameio://examples/{module-id}
Example code from specific modules:
frameio://examples/pos-bom- BOM module exampleframeio://examples/module-rewards- Comprehensive feature exampleframeio://examples/pos-inventory- Inventory module example
5. frameio://best-practices
Best practices guide:
- Naming conventions
- Entity design patterns
- Field selection guidelines
- Module organization
- Common patterns
Available Prompts
1. module_creation_guide
Step-by-step guidance for creating a new module.
Arguments:
moduleId(optional): Module IDdisplayName(optional): Display namedescription(optional): Description
2. entity_design_guide
Guidance for designing entities.
Arguments:
entityName(optional): Name of the entitymoduleId(optional): Module ID
3. validation_checklist
Checklist for validating a module.
Arguments:
moduleId(optional): Module ID to validate
Usage Examples
Generate a Module
Use the generate_module tool with:
- moduleId: "my-module"
- displayName: "My Module"
- description: "A sample module"
Generate an Entity
Use the generate_entity tool with:
- entityKey: "my-module.product"
- name: "Product"
- pluralName: "Products"
- description: "Product catalog items"
- fields: [
{ type: "string", key: "name", name: "Name", options: { required: true } },
{ type: "number", key: "price", name: "Price", options: { required: true } }
]
Validate a Module
Use the validate_module tool with:
- modulePath: "modules/my-module"
- strict: true
Validate a Plugin
Use the validate_plugin tool with:
- pluginPath: "plugins/my-plugin"
- strict: false
Validates structure, route contract (createRouter(deps), no registerRoutes), build contract (tsconfig.build.json), and registry.
Get Examples
Use the get_example_module tool with:
- pattern: "kanban-view"
Development
Building
npm run build
Development Mode
npm run dev # Watch mode
Running
npm start
Project Structure
tools/frameio-mcp/
├── src/
│ ├── server.ts # MCP server entry point
│ ├── tools/ # Tool implementations
│ │ ├── generate-module.ts
│ │ ├── generate-entity.ts
│ │ ├── validate-module.ts
│ │ └── get-example-module.ts
│ ├── resources/ # Resource implementations
│ │ ├── framework-guide.ts
│ │ ├── field-types.ts
│ │ ├── examples.ts
│ │ └── best-practices.ts
│ ├── prompts/ # Prompt templates
│ │ ├── module-creation.ts
│ │ ├── entity-design.ts
│ │ └── validation-checklist.ts
│ └── utils/ # Utility functions
│ ├── code-generator.ts
│ ├── validator.ts
│ └── example-loader.ts
├── package.json
├── tsconfig.json
└── README.md
Integration with FrameIO Framework
This MCP server integrates with:
- Module Registry: Reads from
modules/.registry.ts(auto-updated by CLI) - Plugin Registry: Reads from
plugins/.registry.ts(auto-updated by CLI) - Existing Modules: Scans
modules/directory for examples - Existing Plugins: Scans
plugins/directory for examples (Data Orchestrator, OAuth, Integrations) - SDK Types: Uses types from
platform/sdk/ - CLI Tools: Leverages code from
tools/frameio-cli/(which auto-registers modules/plugins) - Dynamic Module/Plugin Loading: Modules and plugins are discovered and loaded at runtime
- Storybook: Component development environment available at port 6006
- Migration System: Versioned database migrations with rollback support
Plugin System
FrameIO includes a powerful plugin system that allows extending the platform's core functionality:
Built-in Plugins
| Plugin | Description |
|---|---|
data-orchestrator |
Visual data flow builder for connecting modules and orchestrating data pipelines |
oauth |
OAuth authentication providers (Google, GitHub, Azure, etc.) |
integration |
Third-party API access management with client credentials or API keys |
Plugin Capabilities
Plugins can:
- Modify Core UI: Add items to sidebar, header, and login page
- Register Routes: Create new pages within the application
- Define Permissions: Introduce new permission keys for access control
- Add Backend Logic: Register custom API endpoints and database tables
- Theme Integration: Automatically adapt to light/dark themes
Plugin Structure
plugins/
├── .registry.ts # Plugin registration
├── data-orchestrator/ # Visual data flow builder
│ ├── src/
│ │ ├── index.ts # Plugin definition
│ │ ├── components/ # React components
│ │ └── types/ # TypeScript types
│ └── package.json
├── oauth/ # OAuth authentication
└── integration/ # Third-party integrations
Creating a Plugin
- Create directory:
plugins/my-plugin/src - Add
package.jsonwith@frameio/sdkdependency - Create
src/index.tswith plugin registration usingcreatePlugin() - Add components in
src/components/ - Register in
plugins/.registry.ts - Run
npm run dev- imports are auto-generated!
Troubleshooting
Module Not Found
If examples aren't loading:
- Ensure modules exist in
modules/directory - Check that
src/index.tsexists in each module - Verify file permissions
Plugin Not Found
If plugin examples aren't loading:
- Ensure plugins exist in
plugins/directory - Check that
src/index.tsexists in each plugin - Verify plugin is registered in
plugins/.registry.ts
Validation Errors
If validation fails:
- Check module structure matches conventions
- Verify export names follow camelCase convention
- Ensure entity keys follow format
- Check registry entry exists
MCP Server Not Starting
If server won't start:
- Verify Node.js version >= 20.0.0
- Run
npm installto install dependencies - Run
npm run buildto compile TypeScript - Check MCP client configuration
License
Part of the FrameIO framework.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。