--- title: Marketplace submission runbook description: Step-by-step guide to publish flutter-mcp-toolkit to Claude Code, Cursor, Codex, and open MCP/skill catalogs. --- # Marketplace submission runbook Execute **after** merging marketplace-prep changes and cutting a release with synced versions. ## Prerequisites (all platforms) 1. `make check-contracts` passes on `main`. 2. GitHub release `vX.Y.Z` includes `flutter_mcp_*` tarballs. 3. Add real images under [plugin/assets/](https://github.com/Arenukvern/mcp_flutter/tree/main/plugin/assets) per [plugin/assets/README.md](https://github.com/Arenukvern/mcp_flutter/blob/main/plugin/assets/README.md). 4. Smoke test: - Debug app with `mcp_toolkit` running. - Register a sample `AgentCallEntry.tool`. - Call `fmt_list_client_tools_and_resources` → see your tool. - Call `fmt_client_tool` with your tool name. Copy for forms: [docs/ai_agents/marketplace_copy.yaml](https://github.com/Arenukvern/mcp_flutter/blob/main/docs/ai_agents/marketplace_copy.yaml). --- ## Claude Code (official catalog) 1. Open [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit) (or [claude.ai/settings/plugins/submit](https://claude.ai/settings/plugins/submit)). 2. **Repository:** `https://github.com/Arenukvern/mcp_flutter` 3. **Plugin path:** `./plugin` (marketplace: `.claude-plugin/marketplace.json`) 4. **Short description:** paste `short_description` from `marketplace_copy.yaml`. 5. **Long description:** paste `long_description`; emphasize: - 30 built-in `fmt_*` tools - **Dynamic registry** — `addMcpTool` / `AgentCallEntry` in the Flutter app - Skill `flutter-mcp-toolkit-custom-tools` 6. **Keywords:** from `marketplace_copy.yaml`. 7. **Security:** paste `security_notes` bullets. 8. **Fallback for users today:** document git marketplace: ```bash /plugin marketplace add Arenukvern/mcp_flutter /plugin install flutter-mcp-toolkit@Arenukvern-mcp_flutter bash plugin/install.sh ``` If review is delayed, git marketplace remains the supported install path ([distribution doc](/ai_agents/marketplace_distribution)). --- ## Cursor Marketplace 1. Read [Cursor plugin reference](https://cursor.com/docs/reference/plugins) and [cursor/plugins](https://github.com/cursor/plugins) examples. 2. Verify local install: ```bash flutter-mcp-toolkit init cursor ``` Confirm `.cursor/plugins/local/flutter-mcp-toolkit/` contains skills, `mcp.json`, `.cursor-plugin/plugin.json`. 3. Open [cursor.com/marketplace](https://cursor.com/marketplace) → **Publish** (or follow Cursor’s current partner/PR process if the UI directs you to `cursor/plugins`). 4. Submit package rooted at [plugin/](https://github.com/Arenukvern/mcp_flutter/tree/main/plugin): - MCP: `mcp.json` (`flutter-mcp-toolkit-server`, `--dynamics`) - **8 skills** including `flutter-mcp-toolkit-custom-tools` - Subagent: `agents/flutter-mcp-toolkit-runtime.md` (optional listing) 5. **Listing copy:** use `short_description` + dynamic-registry bullets from `marketplace_copy.yaml`. 6. **Assets:** `plugin/assets/logo.png`, `screenshot-1.png` (see assets README). 7. Optional: MCP install deeplink in [mcp_server_dart/README](https://github.com/Arenukvern/mcp_flutter/blob/main/mcp_server_dart/README.md) — regenerate from [Cursor deeplink docs](https://cursor.com/docs/deeplinks) if server args change. --- ## Codex Plugin Directory 1. Confirm [plugin/.codex-plugin/plugin.json](https://github.com/Arenukvern/mcp_flutter/blob/main/plugin/.codex-plugin/plugin.json) has full `interface` metadata and asset paths. 2. Test git marketplace: ```bash codex plugin marketplace add Arenukvern/mcp_flutter ``` Install from Codex plugin directory UI; enable MCP server `flutter-mcp-toolkit`. 3. **Official public directory:** OpenAI documents self-serve publish as **coming soon** — monitor [Build plugins](https://developers.openai.com/codex/plugins/build) § “Publish official public plugins”. 4. Until open, primary path is git marketplace + `flutter-mcp-toolkit init codex`. 5. **Team repos:** optional `$REPO_ROOT/.agents/plugins/marketplace.json` (see Codex docs); `init codex` writes user-local marketplace entry. 6. **Assets:** required paths in `interface` — add PNGs under `plugin/assets/` before submit. --- ## Open catalogs (no formal plugin store) ### skills.sh / `npx skills` - Repo root [`skills/`](https://github.com/Arenukvern/mcp_flutter/tree/main/skills) symlinks to `plugin/skills/`. - Verify: `npx skills add Arenukvern/mcp_flutter --list` - No extra submission; discovery is GitHub + skills.sh indexing. ### Smithery - Listing: [smithery.ai/server/@Arenukvern/mcp_flutter](https://smithery.ai/server/@Arenukvern/mcp_flutter) - After each release: update description to mention dynamic registry + v3 binary name `flutter-mcp-toolkit-server`. ### MseeP - Listing: [mseep.ai](https://mseep.ai/app/03aa0f2d-4ef7-40ae-93de-c7b87e0ac32d) - Same post-release refresh as Smithery. ### Cline - No central store. Users run `flutter-mcp-toolkit init cline`. - Document in app README; link [AI agent overview](/ai_agents/overview). --- ## Post-submission checklist - [ ] README “Install from marketplaces” links match live store URLs - [ ] `CHANGELOG.md` notes store availability when listings go live - [ ] `plugin/EXPECTED_SERVER_VERSION` matches latest GitHub release - [ ] Smithery/MseeP descriptions mention custom runtime tools