{
  "markdown": "# cloudplayplus\n\nChannel plugin that bridges Claude Code to a long-running local Flutter app.\nMessages typed in the app are pushed into Claude Code as channel events; the\nassistant's replies go back through the `reply` tool and render in the app.\n\nThis repo ([CloudPlayPlus/cloudplayplus-cc-plugin](https://github.com/CloudPlayPlus/cloudplayplus-cc-plugin))\nis just the plugin manifest — no runtime code. The MCP server lives in a\nseparate Dart package, [`cloudplayplus_agent`](https://github.com/CloudPlayPlus/cloudplayplus_agent),\nwhich ships a ready-to-run Flutter example you can build on macOS / Windows /\nLinux. The example binds `http://127.0.0.1:48989/mcp` and is exactly what\nthe plugin points at. Eventually the full [CloudPlayPlus](https://www.cloudplayplus.com/)\nproduct will embed this package so remote CloudPlayPlus users can chat with\na Claude Code session on the host machine, but the Flutter example already\nshows the whole flow end-to-end.\n\n## Prerequisites\n\n1. A Flutter app running the [`cloudplayplus_agent`](https://github.com/CloudPlayPlus/cloudplayplus_agent)\n   MCP HTTP server on `http://127.0.0.1:48989/mcp`. The\n   [`example/`](https://github.com/CloudPlayPlus/cloudplayplus_agent/tree/main/example)\n   directory in that repo has a minimal chat UI you can `flutter run` right\n   now; any host app that embeds `CloudplayAgent` works.\n2. Claude Code 2.1 or later.\n\n## Setup\n\nRun `claude` to start a session, then:\n\n```\n/plugin marketplace add CloudPlayPlus/cloudplayplus-cc-plugin\n/plugin install cloudplayplus@cloudplayplus\n```\n\n**Relaunch with the channel flag** — the plugin won't activate without it.\nExit your session and start a new one:\n\n```sh\nclaude --channels plugin:cloudplayplus@cloudplayplus\n```\n\nStart the Flutter app. Type messages from any paired CloudPlayPlus client —\nthey arrive in Claude Code as channel events. Claude's replies show up back\nin the CloudPlayPlus UI.\n\n## Tools\n\n| Tool | Purpose |\n| --- | --- |\n| `reply` | Send a reply back to the CloudPlayPlus UI. Takes `chat_id` + `text`; optionally `reply_to` (message ID) and `files`. |\n| `react` | Attach an emoji reaction to an existing message. |\n| `edit_message` | Edit a previously-sent message in place. |\n| `fetch_messages` | Look back at recent messages in a chat. |\n| `download_attachment` | Materialize attachments of a specific message as local files. |\n\n## Skip permission prompts for channel tools\n\nBecause this plugin connects over a local HTTP MCP endpoint (not a Claude\nCode-spawned stdio subprocess like `fakechat` / `discord`), Claude Code\ntreats the tools as ordinary MCP calls and asks for permission on first\nuse. Pre-approve all five channel tools once by adding this to\n`~/.claude/settings.json` (user scope) or `.claude/settings.local.json` in\nyour project:\n\n```json\n{\n  \"permissions\": {\n    \"allow\": [\n      \"mcp__plugin_cloudplayplus_cloudplayplus__*\"\n    ]\n  }\n}\n```\n\nRule name format is `mcp__plugin_<plugin>_<server>__<tool>`; the wildcard\ncovers `reply` / `react` / `edit_message` / `fetch_messages` /\n`download_attachment`. You can also click **Yes, don't ask again** the\nfirst time each prompt appears — Claude Code writes the same rules itself.\n\n## Security\n\nCloudPlayPlus authenticates remote users before forwarding their messages to\nthe MCP layer. The MCP server itself binds to `127.0.0.1` and declares\n`experimental.claude/channel/permission`, meaning it can also relay tool-use\npermission prompts back to the user. Your CloudPlayPlus transport is\nresponsible for gating those prompts to authorized users only.\n\n## How it works\n\n- `.claude-plugin/marketplace.json` — declares this repo as a Claude Code\n  marketplace containing the `cloudplayplus` plugin.\n- `plugins/cloudplayplus/.claude-plugin/plugin.json` — plugin metadata.\n- `plugins/cloudplayplus/.mcp.json` — points Claude Code at the Streamable\n  HTTP endpoint the Flutter app exposes. No stdio process is spawned.\n\n## License\n\nApache-2.0\n",
  "bytes": 3936,
  "sha": "ded1cd000640f9386506e18875e3812eb479e1b345ea7cbba6b138090ff2394e",
  "repo_slug": "cloudplayplus/cloudplayplus-cc-plugin",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_cloudplayplus_cloudplayplus_cc_plugin_cl_eb5c40a0/readme"
}