Plugin System
ModelFlow uses the MCP (Model Context Protocol) plugin standard. Plugins run as isolated processes, extending custom tools, event sources, settings pages, and menu entries without affecting the host app.
MCP Standard
MCP communicates with plugin child processes over stdio. Each plugin declares a permission whitelist, and the host invokes tools only within that scope.
Plugin Capabilities
Plugins can register tools in the ToolRegistry, provide event sources (WebSocket/MQTT/email), create settings pages, and add entries to the sidebar or toolbar.
Plugin Format
Plugins are ZIP packages containing manifest.json (metadata and permissions), index.js (entry code), settings.html (optional settings page), and assets/ (optional resources).
Plugin Management
On the Plugins page, install from ZIP or URL, enable/disable, view logs and status, and uninstall plugins with their data.
Security
Plugins run isolated and communicate via MCP over stdio. Permissions are declared in manifest.json. Logs go to ~/.ModelFlow/logs/. Security scan results and permission lists are shown before install.
What is a ModelFlow Plugin?
A plugin is a ModelFlow client extension module that provides universal capabilities to all AI models. It can be a CLI tool, an API integration, or an automation script. Plugins communicate with ModelFlow through standardized interfaces, callable by any model — OpenAI, DeepSeek, Kimi, and more.
Plugin Types
🔧 Command Plugin
Expose CLI commands to models. Invoke explicitly with /tool-name in chat, or let models auto-select in workflows.
🔗 Integration Plugin
Connect external services — databases, cloud storage, SaaS APIs. Models can query data, create resources, trigger flows.
🖥️ UI Plugin
Inject custom UI — visualization panels, chart rendering, interactive forms. Built with HTML/CSS/JS, linked to model outputs.
Create Your First Plugin
Understand plugin structure
Each plugin contains a manifest.json descriptor and tool implementations. Tools declare inputs via JSON Schema and return results via stdout/files. A minimal plugin needs just one manifest + one executable script.
Write manifest.json
The manifest defines name, version, description, and tool list. Each tool declares: name, description, parameters (JSON Schema), and a run command. Models use the description to automatically decide when to invoke a tool.
Implement tool logic
Tools can be any executable — shell scripts, Python, Node.js, Rust binaries. Receive JSON parameters via stdin, output results as JSON to stdout. Supports text output, file paths, and structured data.
Test & Publish
Place your plugin folder in ModelFlow's plugins directory for local testing. Post in the Plugin Community for review. After security review, your plugin will be listed in the official catalog.
manifest.json Reference
Every plugin root directory must contain a manifest.json. Full schema:
{
"name": "my-plugin",
"version": "1.0.0",
"description": "A short description of what this plugin does",
"author": "your-name",
"tools": [
{
"name": "search-files",
"description": "Search files in the workspace by pattern",
"parameters": {
"type": "object",
"properties": {
"pattern": { "type": "string", "description": "Glob pattern to match" },
"path": { "type": "string", "description": "Directory to search in" }
},
"required": ["pattern"]
},
"run": "node tools/search.js"
}
]
}nameUnique identifier, kebab-caseversionSemantic versiondescriptionWhat the plugin does; models use this to decide when to callauthorAuthor name or orgtoolsArray of tool objectstools[].runLaunch command, relative to plugin root