Add .plugin packaging (Cowork/Claude Code plugin variant)

plugin/ holds the plugin manifest, .mcp.json (CLAUDE_PLUGIN_ROOT paths), and
README; scripts/build-plugin.sh syncs the core client, esbuild-bundles the
server into a single ESM file (the plugin uploader rejects zip entries
containing "@", so no node_modules), and zips it as ms-todo.plugin. Same
server, two install formats (.mcpb + .plugin). Mirrors claude-msplanner.

Verified: the bundled server registers all 17 tools over stdio as ms-todo
v1.0.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-10 08:09:38 -06:00
parent b3918c3ee6
commit 8dc821cd07
6 changed files with 103 additions and 5 deletions

View File

@@ -24,6 +24,7 @@ Two ways to use it, sharing one core Graph client (`graph.mjs`):
|---|---|---|
| **Skill** | Claude Code on your own machine | `.claude/skills/ms-todo/` |
| **Desktop extension (`.mcpb`)** | Claude Desktop, distributed org-wide | `mcp-extension/` |
| **Plugin (`.plugin`)** | Claude Cowork / Claude Code plugin picker | `plugin/` (same server, bundled by `scripts/build-plugin.sh`) |
## Repo layout
@@ -38,16 +39,23 @@ Two ways to use it, sharing one core Graph client (`graph.mjs`):
│ └── references/
│ ├── setup.md # Entra app registration walkthrough (public client + loopback redirect)
│ └── graph-api.md # todoTask field formats + OData query reference
── mcp-extension/ # Claude Desktop extension (imports the same graph.mjs)
├── manifest.json # .mcpb manifest (baked client/tenant id, user_config)
├── server/index.mjs # MCP server (stdio) exposing todo_* tools
├── scripts/sync-core.mjs # copies the canonical graph.mjs into the bundle
└── README.md # build + install + admin setup
── mcp-extension/ # Claude Desktop extension (imports the same graph.mjs)
├── manifest.json # .mcpb manifest (baked client/tenant id, user_config)
├── server/index.mjs # MCP server (stdio) exposing todo_* tools
├── scripts/sync-core.mjs # copies the canonical graph.mjs into the bundle
└── README.md # build + install + admin setup
├── plugin/ # .plugin (Cowork/Claude Code) packaging metadata
│ ├── .claude-plugin/plugin.json # plugin manifest
│ └── .mcp.json # server launch config (CLAUDE_PLUGIN_ROOT paths)
└── scripts/build-plugin.sh # stages plugin/ + esbuild-bundled server -> ms-todo.plugin
```
For Claude Desktop, build and distribute the extension — see
[`mcp-extension/README.md`](mcp-extension/README.md). (Claude Desktop can't run
Claude Code skills; it loads MCP servers, so the `.mcpb` is the right vehicle.)
For Claude Cowork / Claude Code, run `./scripts/build-plugin.sh` and upload the
resulting `ms-todo.plugin` in the plugin picker (that dialog only accepts
`.zip`/`.plugin` — a `.mcpb` upload is rejected).
## Prerequisites (one-time)