Skip to content
K

Installing & Sharing Plugins

Monday Morning has no central plugin marketplace. Community plugins are shared directly — you hand someone a zip (or a folder) and they install it locally. This keeps you in full control of what runs on your machine: nothing is fetched or auto-updated from a remote registry.

Installation is a file-system operation: a plugin lives at ~/.monday-morning/plugins/{plugin-id}/, where the MCP server discovers and loads it at startup. A zip is just that folder in transit.

A plugin you share is a folder of compiled files:

hello-world/
├── index.js # Compiled plugin entry point (required)
├── manifest.json # Plugin metadata (required)
├── package.json # Must include "type": "module" (required)
├── node_modules/ # Bundled dependencies like zod (required)
│ └── zod/
├── plugin-types.js # Compiled type definitions (if you split them out)
└── lib/ # Optional: additional compiled modules
└── helpers.js

The minimum required files are index.js, manifest.json, package.json (with "type": "module"), and a bundled node_modules/zod. See Creating a Plugin for how to build these.

Every plugin folder must contain a manifest.json. It carries the metadata the desktop app shows for an installed plugin:

{
"id": "hello-world",
"name": "Hello World",
"version": "1.0.0",
"description": "A minimal example plugin that greets the user",
"author": {
"name": "Your Name",
"github": "your-github-username",
"url": "https://optional-website.com"
},
"category": "integration",
"uiCategory": "development",
"icon": "👋",
"minAppVersion": "1.0.0",
"keywords": ["hello", "example", "starter"],
"license": "MIT"
}
FieldDescription
idUnique plugin identifier. Lowercase with hyphens (e.g., my-plugin). Must match the id in your MondayMorningPlugin export.
nameHuman-readable name shown in plugin listings.
versionSemver version string.
descriptionShort description shown in plugin listings.
author.nameYour name or organization.
FieldDescription
author.github / author.urlLinks shown alongside the plugin.
categoryOne of integration, migration, export (defaults to integration).
uiCategoryListing group: communications, development, project-management, financial, data-storage, export-reporting.
iconEmoji or SVG for the plugin listing.
minAppVersionMinimum Monday Morning version the plugin expects.
keywordsDescriptive tags.
licenseSPDX license identifier (e.g., MIT, Apache-2.0).

Whether it arrives as a zip or a folder, installation ends the same way: the plugin folder sits in ~/.monday-morning/plugins/{plugin-id}/.

  1. If you received a zip, extract it. The folder containing manifest.json and index.js is the plugin.

  2. Copy the folder into the plugins directory (created on first use):

    Terminal window
    mkdir -p ~/.monday-morning/plugins
    cp -r hello-world ~/.monday-morning/plugins/
  3. Load it. Restart the MCP server (or the desktop app) — or ask an agent to call mm_reload_plugins, which hot-loads new community plugins without a restart. Check the logs for:

    [plugin-registry] INFO: Loaded plugin "Hello World" (hello-world) v1.0.0

Once loaded, the plugin’s tools join the MCP tool surface, and the plugin shows up in the desktop app — a plugin with a settings schema appears in Settings → Integrations with a connection status, and its settings form is reachable from the Plugins section.

  • Update: replace the folder with a newer version, then restart the MCP server or call mm_reload_plugins.
  • Remove: delete the plugin’s folder from ~/.monday-morning/plugins/ and restart (or reload) — the registry unloads community plugins whose directories are gone.

Because plugins are shared directly and run as code inside the MCP server process, only install plugins from sources you trust. There is no automated review or sandbox. Read the source where you can, and prefer plugins distributed with their source repository.