Plugin Architecture
A plugin is a TypeScript module that exports a MondayMorningPlugin and contributes MCP tools.
export interface MondayMorningPlugin { id: string; name: string; description: string; version: string; category: PluginCategory; tier?: 'free' | 'pro'; tools: PluginToolDefinition[]; register(context: PluginContext): Promise<void>; onEnable?(): Promise<void>; onDisable?(): Promise<void>; onProjectSwitch?(projectPath: string): Promise<void>;}Where they live
Section titled “Where they live”- Bundled — inside the MCP server, shipped with the app.
- Community —
~/.monday-morning/plugins/{id}/. A folder loads if it has anindex.js(orindex.ts).
Loading
Section titled “Loading”At startup the registry discovers both locations, validates each plugin’s shape, checks its tier against your entitlement, then merges its tools into the catalog. A plugin whose id or tool name collides with a built-in is refused.
Plugins get a PluginContext with the project path, the server’s path helpers, and a logger.
tier: 'pro' means the plugin loads only for Pro or Team. If tier can’t be resolved, gating fails open rather than silently removing tools.