Plopino

io.github.plopino由 GitHub 帳號 plopino 發布v0.3.3更新於 Oct 31, 2026

Publish pages, documents, or folders to a link; documents render as pages; updates keep the URL.

已驗證STDIO僅桌面效率與工作流檔案與儲存

概覽

AI 產生的概覽

Plopino 把產生的頁面、文件或本機資料夾發布成公開連結,讓助理直接給出可分享的網址而不是檔案。

可以做什麼
  • 把手上的內容(HTML、Markdown、CSV、JSON、程式碼)發布成公開頁面,由檔名決定呈現方式
  • 發布本機檔案、壓縮檔或整個目錄,保留目錄結構並略過符號連結
  • 將 Word、Excel、Markdown 呈現為可讀頁面,程式碼與資料檔提供語法高亮預覽,圖片與影片直接內嵌顯示
  • 設定權杖後,可替換既有頁面的內容而連結維持不變
適用情境
當使用者要求分享、傳送或「給個連結」給助理剛產生的內容(例如儀表板、報告、圖表或文件),或磁碟上的檔案、資料夾需要讓他人直接檢視而不必下載時適用。
執行需求
透過 npx 執行的本機 stdio 程序,需要 Node 20 或更新版本;匿名發布不需帳號或 API 金鑰。選用的 PLOPINO_TOKEN 可用於帳號發布、永久頁面與原地更新。PLOPINO_BASE_URL 與 PLOPINO_CONFIG_DIR 可覆寫目標執行個體與設定目錄。
安裝前請注意
發布的內容對任何取得連結的人公開,並上傳到 Plopino 的伺服器;匿名上傳 30 天後刪除,並依 IP 限流。目錄發布會略過部分路徑,但單獨指定的檔案會照要求上傳,因此不要指向憑證或密鑰。匿名發布會把未加密的 cookie 檔寫入設定目錄,匿名上傳回傳的認領連結不應分享。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Plopino,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

plopino

CLI: publish with one command

bash
npx -y plopino publish ./index.html
npx -y plopino publish ./dist --json
npx -y plopino login
npx -y plopino publish ./dist --update https://plopino.com/b/YOUR_BOARD_ID/
npx -y plopino whoami
npx -y plopino logout

login prompts for an email and a hidden password. Create an account on the website first if needed. Login claims available anonymous uploads made with this CLI's saved identity, reports how many were claimed, and saves a session for future uploads. An existing PLOPINO_TOKEN overrides the saved session for publishing. For Google/GitHub-only accounts, use an API token for future uploads; CLI password login requires an account with a password.

Cookies are stored as unencrypted JSON per server origin under ~/.config/plopino/. The directory is created with mode 0700 and cookie files are written with 0600; this restricts access to your OS user but is not encryption. Override the directory with PLOPINO_CONFIG_DIR. Keep this directory to retain the ability to claim anonymous uploads. Passwords are never stored. Logging out revokes the saved account session but preserves the anonymous identity; log out before handing a shared OS account to someone else. Browser and MCP sessions are separate: logging in on the website alone does not claim CLI uploads.

For non-interactive login, use login --email [email protected] --password-stdin, supplying the password through standard input from your secret manager. Do not pass passwords as command-line arguments. --json gives structured results and errors; errors exit with status 1. Default publishing writes only the URL to stdout and status to stderr.

Both CLI and MCP directory uploads skip .git, .env*, node_modules, .ssh, .aws, and symbolic links. Other files are included; publish the output directory you intend to share. A single explicitly selected file is uploaded as requested, so never select credentials or other secrets. Symlink inputs are rejected. CLI commands for the same server cannot run concurrently; after a forcibly terminated process, the next command identifies any stale lock to remove once no command is running.

For development before the npm release, replace npx -y plopino with node /path/to/boards/mcp/index.js in the examples above.

MCP

MCP server for Plopino — lets an AI agent publish what it just built and hand back a public link, without the user touching a browser.

agent writes index.html — or has a report / spreadsheet / markdown on disk
   ↓  publish_page / publish_path
https://plopino.com/b/xxxxxxxx/

Documents are first-class: Word (doc/docx), Excel (xls/xlsx) and Markdown render as readable pages, code and data files get syntax-highlighted previews, and images and video display inline. The recipient opens a link; they never download a file.

Tools

ToolUse it when
publish_pageYou have the content as a string — generated HTML, or a Markdown / CSV / code document. The filename decides how it renders: leave it at index.html for a page, pass report.md and it renders as a document.
publish_pathThe page needs sibling files (CSS, JS, images), or you are sharing something that is already on disk — including any document, and including binary formats (docx, xlsx, pdf) that cannot be sent as a string. Point it at a directory and the structure is preserved — no need to zip first.
publish_filesRemote endpoint only. Same job as publish_path for clients that cannot hand over a local path: you send the file contents inline (a relative path plus its content, per entry).

Both take an optional update_url: pass a link returned by an earlier publish and that page's content is replaced while the link stays the same. This needs a token (see below).

Publishing is anonymous by default: no account, no configuration, no API key. The returned link is public; without a token the page is kept for a month, with a token it is permanent and can be updated in place.

The stdio MCP server reuses the CLI's per-origin anonymous cookie in ~/.config/plopino/ (override with PLOPINO_CONFIG_DIR). Repeated publishes and MCP restarts therefore keep the same anonymous identity, and plopino login can claim those uploads. MCP does not use the saved CLI login session; account publishing and updates still require PLOPINO_TOKEN.

Anonymous creates also return claimUrl. It is a private browser link for the publisher: open it yourself, sign in, and confirm the claim to keep that page in your account. Do not append it to the public URL or share it with page viewers. JSON output includes it as claimUrl; human output prints it on stderr for CLI publishes and inside the MCP tool result for agent publishes.

Authentication (optional)

Set PLOPINO_TOKEN to publish to your account instead of anonymously. You get private boards, updates that keep the same link, and you are not subject to the anonymous rate limit.

Create a token at plopino.com/b — the panel hands you a ready-made command with the token already in it (the server keeps an encrypted copy, so you can come back for it any time), then:

bash
claude mcp add plopino --env PLOPINO_TOKEN=plp_xxx -- npx -y plopino

Leaving it unset is a supported configuration, not a degraded one. Most users never need a token — the anonymous flow is the product.

Install

Also listed in the official MCP registry as io.github.plopino/plopino-mcp, and on Smithery as an installable bundle.

Claude Code plugin

This repository is also a Claude Code plugin marketplace:

bash
claude plugin marketplace add plopino/plopino-mcp
claude plugin install plopino@plopino

The plugin connects to Plopino's remote MCP endpoint, so it works without a local Node process. A token is optional; leave it empty to publish anonymously.

OpenAI Codex / ChatGPT plugin

codex-plugin/ is the OpenAI-format package and .agents/plugins/marketplace.json is its Codex marketplace entry:

bash
codex plugin marketplace add plopino/plopino-mcp
codex plugin add plopino@plopino

It uses the remote MCP endpoint with mixed authentication: anonymous by default, or Plopino OAuth 2.1 (DCR + PKCE) for account publishing and in-place updates. The same folder is the single-plugin-root package for the OpenAI directory ZIP submission.

Claude Desktop extension

Download the latest plopino.mcpb, then open it or drag it into Claude Desktop. This is the local stdio server, with an optional PLOPINO_TOKEN in the extension settings.

Anything that speaks stdio MCP works — the server is a plain stdio process, so the only difference between clients is how you register it. All of the below are the clients' own documented forms (verified 2026-09). Wherever you see plp_xxx, paste a token from plopino.com/b — the panel there fills it in for you and lets you pick your client. If your client would rather not run a local process at all, skip to Remote endpoint — same tools, one URL.

Claude Code

bash
claude mcp add plopino -e PLOPINO_TOKEN=plp_xxx -- npx -y plopino

Codex (CLI and IDE extension share ~/.codex/config.toml)

bash
codex mcp add plopino --env PLOPINO_TOKEN=plp_xxx -- npx -y plopino

Gemini CLI

bash
gemini mcp add -e PLOPINO_TOKEN=plp_xxx plopino npx -y plopino

WorkBuddy — ~/.workbuddy/mcp.json (%USERPROFILE%\.workbuddy\mcp.json on Windows; needs WorkBuddy 5.3+), then restart WorkBuddy:

json
{
  "mcpServers": {
    "plopino": {
      "command": "npx",
      "args": ["-y", "plopino"],
      "env": { "PLOPINO_TOKEN": "plp_xxx" }
    }
  }
}

Cursor — the same JSON in .cursor/mcp.json (project) or ~/.cursor/mcp.json (global). Windsurf — the same JSON in ~/.codeium/windsurf/mcp_config.json. Claude Desktop — the same JSON in claude_desktop_config.json.

VS Code — same idea in .vscode/mcp.json, but the key is servers, not mcpServers:

json
{
  "servers": {
    "plopino": {
      "command": "npx",
      "args": ["-y", "plopino"],
      "env": { "PLOPINO_TOKEN": "plp_xxx" }
    }
  }
}

No npm? The server also ships as a single self-contained file on the site. Two lines instead of one, but nothing to install:

bash
curl -fsSL https://plopino.com/plopino-mcp.mjs -o "$HOME/.plopino-mcp.mjs"
claude mcp add plopino -e PLOPINO_TOKEN=plp_xxx -- node "$HOME/.plopino-mcp.mjs"

"$HOME/…" is expanded by your shell as you paste, so the absolute path is what gets registered. That matters: MCP clients spawn the server from an arbitrary working directory, so a relative path would break.

Then just ask: "publish this to Plopino", or "give me a link for that page".

Remote endpoint — nothing to install

Everything above runs on your machine. There is also a hosted Streamable HTTP endpoint serving the same tools, for clients that support remote MCP servers and would rather not run a local process at all:

https://plopino.com/mcp
bash
claude mcp add --transport http plopino https://plopino.com/mcp

Any client that accepts a remote server URL takes that same address. Authentication works the same way: send a token as Authorization: Bearer plp_xxx if you have one, and publish anonymously if you don't.

Two differences from the stdio build, both deliberate:

  • publish_path is not available remotely. It takes a path on the machine the server runs on — which, remotely, is not your machine. Use publish_files and send the contents.
  • The endpoint is stateless: each request is handled on its own, no session to keep alive.

Self-hosted / local

The instance the server publishes to defaults to https://plopino.com. Set PLOPINO_BASE_URL to point at another one — a staging host, or your own deployment:

bash
PLOPINO_BASE_URL=https://plopino.com npx -y plopino

Requirements

  • Node 20 or newer (required by the MCP TypeScript SDK v2).
  • The only runtime dependency is the MCP SDK.

Development

bash
npm install
npm test        # 路径展开的边界 + 协议握手/工具列表(不需要网络)

To exercise the full publish path, run a Plopino instance and drive the server over stdio against it:

bash
PLOPINO_BASE_URL=https://plopino.com node index.js

stdout is the MCP protocol channel. Anything written there that is not a JSON-RPC message will break the client. All logging must go to stderr — hence console.error everywhere and never console.log.

Privacy Policy

Optional acquisition labels

If you want to tell Plopino which tutorial introduced the tool, set PLOPINO_ACQUISITION_SOURCE (for example devto), optionally with PLOPINO_ACQUISITION_CAMPAIGN and PLOPINO_ACQUISITION_CONTENT. These labels are sent with publish requests and stored separately from browser referrals, with their capture time. They do not affect publishing or login. Use only letters, digits, underscores and hyphens, at most 64 characters; start with a letter or digit. Do not put secrets, URLs or personal data in labels. Leave them unset to send no acquisition labels. Supported by CLI and stdio MCP.

Full policy: https://plopino.com/privacy

  • What is collected. Optional acquisition labels are described above. Publishing sends the file contents and file names you pass to a tool, the destination URL, and — for anonymous publishes — the requesting IP address (used for the daily rate limit). The MCP server itself collects nothing and sends no background telemetry; it runs locally and logs only to stderr. Anonymous publishing writes the local identity cookie described above.
  • How it is used and stored. Uploaded content is stored on Plopino's servers and served from the returned public link. A PLOPINO_TOKEN is stored locally in your MCP client configuration; the server keeps only its SHA-256 hash.
  • Third parties. No content or usage data is sold, shared or sent to third parties for advertising. Plopino uses Cloudflare as its CDN/reverse proxy and self-hosted Umami for aggregate, cookieless visit counts.
  • Retention. Anonymous uploads are deleted after 30 days; a link can also be removed earlier from the account page. Uploads made with a token are kept until you delete them or the account is closed. Request deletion or report abuse at [email protected].
  • Contact. [email protected] (abuse and privacy requests), or https://plopino.com/abuse.

Notes

  • publish_path walks directories recursively and skips symbolic links — following them could escape the directory tree and upload files from elsewhere on the machine.
  • Anonymous uploads are rate-limited per IP by the server side.
  • Nothing is uploaded until a tool is called; the server does no network I/O at startup.

來源:README.md,提交 a36faad

工具

2

publish_page

Publish a page and get a link

Publish content you have in hand to a public URL. Use this whenever the user asks to share, send, publish, or "give me a link to" something you just produced — an HTML page (dashboard, report, chart, interactive page), a Markdown document, CSV, JSON, or a code/data file. Everything it publishes becomes a page the recipient opens in a browser: the filename decides how it renders, so pass "report.md" for Markdown instead of renaming it to .html. Returns a public link that opens on any device; no account or configuration needed. Anonymous pages are kept for a month — with a token, storage is permanent and the page can be updated in place. Prefer this over telling the user to save the file and upload it somewhere themselves.

輸入參數content必填filenameupdate_url

publish_path

Publish a local file or folder and get a link

Publish a local file, a zip, or a whole directory to a public URL, preserving the directory structure. Use this when the page needs sibling files (CSS, JS, images) — write them into a directory first, then publish that directory. It is also the way to share any document: Word (doc/docx), Excel (xls/xlsx) and Markdown render as readable pages, code and data files get syntax-highlighted previews, and images and video display inline — the recipient opens a link instead of downloading a file. (PowerPoint files publish and download fine but have no rendered preview.)

輸入參數path必填update_url

版本歷史

5
  1. v0.3.3最新Oct 31, 2026
  2. v0.3.2Oct 29, 2026
  3. v0.3.1Oct 24, 2026
  4. v0.3.0Sep 23, 2026
  5. v0.2.2Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分