plopino 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. package/README.md +43 -13
  2. package/index.js +13 -1
  3. package/package.json +21 -3
  4. package/server.json +22 -0
package/README.md CHANGED
@@ -27,7 +27,8 @@ link is public and permanent.
27
27
  Set `PLOPINO_TOKEN` to publish to your account instead of anonymously. You get private
28
28
  boards, updates that keep the same link, and you are not subject to the anonymous rate limit.
29
29
 
30
- Create a token at **plopino.com/b** (it is shown once the server only stores a hash), then:
30
+ Create a token at **plopino.com/b** the panel hands you a ready-made command with the token
31
+ already in it (the server keeps an encrypted copy, so you can come back for it any time), then:
31
32
 
32
33
  ```bash
33
34
  claude mcp add plopino --env PLOPINO_TOKEN=plp_xxx -- npx -y plopino
@@ -38,6 +39,10 @@ a token — the anonymous flow is the product.
38
39
 
39
40
  ## Install
40
41
 
42
+ **Anything that speaks stdio MCP works** — the server is a plain stdio process, so the only
43
+ difference between clients is how you register it. All of the below are the clients' own
44
+ documented forms (verified 2026-09). Wherever you see `plp_xxx`, paste a token from
45
+ **plopino.com/b** — the panel there fills it in for you and lets you pick your client.
41
46
 
42
47
  **Claude Code**
43
48
 
@@ -45,38 +50,63 @@ a token — the anonymous flow is the product.
45
50
  claude mcp add plopino -e PLOPINO_TOKEN=plp_xxx -- npx -y plopino
46
51
  ```
47
52
 
48
- **No npm?** The server also ships as a single self-contained file on the site. Two lines
49
- instead of one, but nothing to install:
53
+ **Codex** (CLI and IDE extension share `~/.codex/config.toml`)
50
54
 
51
55
  ```bash
52
- curl -fsSL https://plopino.com/plopino-mcp.mjs -o "$HOME/.plopino-mcp.mjs"
53
- claude mcp add plopino -e PLOPINO_TOKEN=plp_xxx -- node "$HOME/.plopino-mcp.mjs"
56
+ codex mcp add plopino --env PLOPINO_TOKEN=plp_xxx -- npx -y plopino
54
57
  ```
55
58
 
56
- > `"$HOME/…"` is expanded by your shell as you paste, so the absolute path is what gets
57
- > registered. That matters: MCP clients spawn the server from an arbitrary working
58
- > directory, so a relative path would break.
59
+ **Gemini CLI**
60
+
61
+ ```bash
62
+ gemini mcp add -e PLOPINO_TOKEN=plp_xxx plopino npx -y plopino
63
+ ```
59
64
 
60
- **Claude Desktop** — add to `claude_desktop_config.json`:
65
+ **WorkBuddy** — `~/.workbuddy/mcp.json` (`%USERPROFILE%\.workbuddy\mcp.json` on Windows;
66
+ needs WorkBuddy 5.3+), then restart WorkBuddy:
61
67
 
62
68
  ```json
63
69
  {
64
70
  "mcpServers": {
65
- "plopino": { "command": "npx", "args": ["-y", "plopino"] }
71
+ "plopino": {
72
+ "command": "npx",
73
+ "args": ["-y", "plopino"],
74
+ "env": { "PLOPINO_TOKEN": "plp_xxx" }
75
+ }
66
76
  }
67
77
  }
68
78
  ```
69
79
 
70
- **Cursor** — add to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global):
80
+ **Cursor** — the same JSON in `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global).
81
+ **Windsurf** — the same JSON in `~/.codeium/windsurf/mcp_config.json`.
82
+ **Claude Desktop** — the same JSON in `claude_desktop_config.json`.
83
+
84
+ **VS Code** — same idea in `.vscode/mcp.json`, but the key is `servers`, not `mcpServers`:
71
85
 
72
86
  ```json
73
87
  {
74
- "mcpServers": {
75
- "plopino": { "command": "npx", "args": ["-y", "plopino"] }
88
+ "servers": {
89
+ "plopino": {
90
+ "command": "npx",
91
+ "args": ["-y", "plopino"],
92
+ "env": { "PLOPINO_TOKEN": "plp_xxx" }
93
+ }
76
94
  }
77
95
  }
78
96
  ```
79
97
 
98
+ **No npm?** The server also ships as a single self-contained file on the site. Two lines
99
+ instead of one, but nothing to install:
100
+
101
+ ```bash
102
+ curl -fsSL https://plopino.com/plopino-mcp.mjs -o "$HOME/.plopino-mcp.mjs"
103
+ claude mcp add plopino -e PLOPINO_TOKEN=plp_xxx -- node "$HOME/.plopino-mcp.mjs"
104
+ ```
105
+
106
+ > `"$HOME/…"` is expanded by your shell as you paste, so the absolute path is what gets
107
+ > registered. That matters: MCP clients spawn the server from an arbitrary working
108
+ > directory, so a relative path would break.
109
+
80
110
  Then just ask: *"publish this to Plopino"*, or *"give me a link for that page"*.
81
111
 
82
112
  ## Self-hosted / local
package/index.js CHANGED
@@ -19,7 +19,19 @@ const BASE = process.env.PLOPINO_BASE_URL || DEFAULT_BASE;
19
19
  // 在 plopino.com/b 生成(服务端只存哈希,明文只显示一次)
20
20
  const TOKEN = (process.env.PLOPINO_TOKEN || '').trim();
21
21
 
22
- const server = new McpServer({ name: 'plopino', version: '0.1.0' });
22
+ // 服务器级说明(initialize 时返回,客户端会读)。Codex 的文档明确要求把跨工具的用法与约束
23
+ // 放在这里、且前 512 字符能独立成立;Claude Code 等客户端同样会读。放在工具描述之外写,
24
+ // 是因为它要在模型看到工具列表之前就建立"什么时候该想到 Plopino"。
25
+ // 工具描述仍逐个写清各自的适用场景(见下面的 description)。
26
+ const INSTRUCTIONS =
27
+ 'Plopino publishes a page to a public link. Use it whenever the user asks to share, send, '
28
+ + 'publish, or "give me a link to" something you just produced — a dashboard, report, chart, '
29
+ + 'or single-page HTML: call publish_html. For a page that needs sibling files (CSS, JS, '
30
+ + 'images), or content already on disk, call publish_path instead. Do not tell the user to '
31
+ + 'save the file and upload it somewhere themselves. Publishing works with no account. Every '
32
+ + 'call returns a permanent public URL that opens on any device — give that link to the user.';
33
+
34
+ const server = new McpServer({ name: 'plopino', version: '0.1.2' }, { instructions: INSTRUCTIONS });
23
35
 
24
36
  // 工具描述是给**模型**看的,不是给人看的——要写清楚「什么时候该用」,
25
37
  // 否则模型不知道有这个能力,集成了也不会被调用。
package/package.json CHANGED
@@ -1,14 +1,29 @@
1
1
  {
2
2
  "name": "plopino",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
+ "mcpName": "io.github.plopino/plopino-mcp",
4
5
  "description": "MCP server: publish an HTML page, a file, or a folder to Plopino and get a public URL.",
5
6
  "type": "module",
7
+ "keywords": [
8
+ "mcp",
9
+ "mcp-server",
10
+ "model-context-protocol",
11
+ "claude",
12
+ "claude-code",
13
+ "ai-agents",
14
+ "html",
15
+ "publish",
16
+ "share",
17
+ "static-hosting",
18
+ "url"
19
+ ],
6
20
  "bin": {
7
21
  "plopino": "index.js"
8
22
  },
9
23
  "files": [
10
24
  "index.js",
11
25
  "upload.js",
26
+ "server.json",
12
27
  "README.md",
13
28
  "LICENSE"
14
29
  ],
@@ -18,9 +33,12 @@
18
33
  "license": "MIT",
19
34
  "repository": {
20
35
  "type": "git",
21
- "url": "https://github.com/AILogbook/boards.git",
22
- "directory": "mcp"
36
+ "url": "https://github.com/plopino/plopino-mcp.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/plopino/plopino-mcp/issues"
23
40
  },
41
+ "homepage": "https://plopino.com",
24
42
  "dependencies": {
25
43
  "@modelcontextprotocol/sdk": "^1.30.0",
26
44
  "zod": "^4.6.5"
package/server.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.plopino/plopino-mcp",
4
+ "title": "Plopino",
5
+ "description": "Drop in a page, get a link. Publish an HTML page, a file, or a folder and get a public URL — no account, no build, no config.",
6
+ "version": "0.1.2",
7
+ "websiteUrl": "https://plopino.com",
8
+ "repository": {
9
+ "url": "https://github.com/plopino/plopino-mcp",
10
+ "source": "github"
11
+ },
12
+ "packages": [
13
+ {
14
+ "registryType": "npm",
15
+ "identifier": "plopino",
16
+ "version": "0.1.2",
17
+ "transport": {
18
+ "type": "stdio"
19
+ }
20
+ }
21
+ ]
22
+ }