Register / Login

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

  1. 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.

  2. 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.

  3. 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.

  4. 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-case
versionSemantic version
descriptionWhat the plugin does; models use this to decide when to call
authorAuthor name or org
toolsArray of tool objects
tools[].runLaunch command, relative to plugin root