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.
- package/README.md +43 -13
- package/index.js +13 -1
- package/package.json +21 -3
- 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**
|
|
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
|
-
**
|
|
49
|
-
instead of one, but nothing to install:
|
|
53
|
+
**Codex** (CLI and IDE extension share `~/.codex/config.toml`)
|
|
50
54
|
|
|
51
55
|
```bash
|
|
52
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
**Gemini CLI**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
gemini mcp add -e PLOPINO_TOKEN=plp_xxx plopino npx -y plopino
|
|
63
|
+
```
|
|
59
64
|
|
|
60
|
-
**
|
|
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": {
|
|
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** —
|
|
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
|
-
"
|
|
75
|
-
"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
|
-
|
|
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.
|
|
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/
|
|
22
|
-
|
|
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
|
+
}
|