plopino 0.1.7 → 0.1.9
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 +5 -1
- package/index.js +20 -5
- package/package.json +1 -1
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ agent writes index.html — or has a report / spreadsheet / markdown on disk
|
|
|
9
9
|
https://plopino.com/b/xxxxxxxx/
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Documents are first-class: Word (doc/docx), Excel (xls/xlsx)
|
|
12
|
+
Documents are first-class: Word (doc/docx), Excel (xls/xlsx) and Markdown
|
|
13
13
|
render as readable pages, code and data files get syntax-highlighted previews, and images
|
|
14
14
|
and video display inline. The recipient opens a link; they never download a file.
|
|
15
15
|
|
|
@@ -44,6 +44,10 @@ a token — the anonymous flow is the product.
|
|
|
44
44
|
|
|
45
45
|
## Install
|
|
46
46
|
|
|
47
|
+
Also listed in the [official MCP registry](https://registry.modelcontextprotocol.io) as
|
|
48
|
+
`io.github.plopino/plopino-mcp`, and on [Smithery](https://smithery.ai/servers/plopino/plopino)
|
|
49
|
+
as an installable bundle.
|
|
50
|
+
|
|
47
51
|
**Anything that speaks stdio MCP works** — the server is a plain stdio process, so the only
|
|
48
52
|
difference between clients is how you register it. All of the below are the clients' own
|
|
49
53
|
documented forms (verified 2026-09). Wherever you see `plp_xxx`, paste a token from
|
package/index.js
CHANGED
|
@@ -28,7 +28,7 @@ const INSTRUCTIONS =
|
|
|
28
28
|
+ 'publish, or "give me a link to" something. An HTML page (dashboard, report, chart, or '
|
|
29
29
|
+ 'single page you just generated): call publish_html. Anything already on disk — a '
|
|
30
30
|
+ 'directory with sibling files, or any document: call publish_path. Documents are '
|
|
31
|
-
+ 'first-class: Word (doc/docx), Excel (xls/xlsx)
|
|
31
|
+
+ 'first-class: Word (doc/docx), Excel (xls/xlsx) and Markdown render as '
|
|
32
32
|
+ 'readable pages, code and data files get syntax-highlighted previews, images and video '
|
|
33
33
|
+ 'display inline — the recipient opens a link and never downloads a file. Do not tell '
|
|
34
34
|
+ 'the user to save the file and upload it somewhere themselves. Publishing works with no '
|
|
@@ -36,16 +36,29 @@ const INSTRUCTIONS =
|
|
|
36
36
|
+ 'page is kept for a month; with a token it stays up permanently and can be updated in '
|
|
37
37
|
+ 'place while the link stays the same.';
|
|
38
38
|
|
|
39
|
-
const server = new McpServer({ name: 'plopino', version: '0.1.
|
|
39
|
+
const server = new McpServer({ name: 'plopino', version: '0.1.9' }, { instructions: INSTRUCTIONS });
|
|
40
40
|
|
|
41
41
|
// 工具描述是给**模型**看的,不是给人看的——要写清楚「什么时候该用」,
|
|
42
42
|
// 否则模型不知道有这个能力,集成了也不会被调用。
|
|
43
|
-
|
|
43
|
+
// 返回值同时给两条:content 是给人读的文本,structuredContent 是按 outputSchema
|
|
44
|
+
// 声明的结构化结果——agent 不必正则解析那段文本就能拿到链接。
|
|
45
|
+
const ok = (url, note) => ({
|
|
46
|
+
content: [{ type: 'text', text: `${url}\n\n${note}` }],
|
|
47
|
+
structuredContent: { url, note },
|
|
48
|
+
});
|
|
44
49
|
const fail = (err) => ({
|
|
45
50
|
content: [{ type: 'text', text: `Could not publish: ${err?.message || err}` }],
|
|
46
51
|
isError: true,
|
|
47
52
|
});
|
|
48
53
|
|
|
54
|
+
// 输出模式:两个工具返回同一种形状(链接 + 状态说明)。声明它不是形式主义——
|
|
55
|
+
// 客户端能据此做结构化消费,目录站(如 Smithery)也把「Output schemas」单列为一项质量分。
|
|
56
|
+
const OUTPUT_SCHEMA = {
|
|
57
|
+
url: z.string().describe('Public link to the published page — give this to the user.'),
|
|
58
|
+
note: z.string().describe(
|
|
59
|
+
'Human-readable status: created vs updated, and how long the page is kept.'),
|
|
60
|
+
};
|
|
61
|
+
|
|
49
62
|
const UPDATE_PARAM = z.string().optional().describe(
|
|
50
63
|
'A URL returned by an earlier publish. When given, the content of that page is replaced '
|
|
51
64
|
+ 'and the link stays the same. Requires the server to be configured with a Plopino token.',
|
|
@@ -92,6 +105,7 @@ server.registerTool('publish_html', {
|
|
|
92
105
|
update_url: UPDATE_PARAM,
|
|
93
106
|
},
|
|
94
107
|
annotations: TOOL_ANNOTATIONS,
|
|
108
|
+
outputSchema: OUTPUT_SCHEMA,
|
|
95
109
|
}, async ({ html, update_url: updateUrl }) => {
|
|
96
110
|
try {
|
|
97
111
|
const { boardId } = resolveTarget(updateUrl);
|
|
@@ -110,10 +124,10 @@ server.registerTool('publish_path', {
|
|
|
110
124
|
'Publish a local file, a zip, or a whole directory to a public URL, preserving the '
|
|
111
125
|
+ 'directory structure. Use this when the page needs sibling files (CSS, JS, images) — '
|
|
112
126
|
+ 'write them into a directory first, then publish that directory. It is also the way '
|
|
113
|
-
+ 'to share any document: Word (doc/docx), Excel (xls/xlsx)
|
|
127
|
+
+ 'to share any document: Word (doc/docx), Excel (xls/xlsx) and Markdown '
|
|
114
128
|
+ 'render as readable pages, code and data files get syntax-highlighted previews, and '
|
|
115
129
|
+ 'images and video display inline — the recipient opens a link instead of downloading '
|
|
116
|
-
+ 'a file.',
|
|
130
|
+
+ 'a file. (PowerPoint files publish and download fine but have no rendered preview.)',
|
|
117
131
|
inputSchema: {
|
|
118
132
|
path: z.string().describe(
|
|
119
133
|
'Absolute path to a file or directory on this machine. A directory is uploaded '
|
|
@@ -122,6 +136,7 @@ server.registerTool('publish_path', {
|
|
|
122
136
|
update_url: UPDATE_PARAM,
|
|
123
137
|
},
|
|
124
138
|
annotations: TOOL_ANNOTATIONS,
|
|
139
|
+
outputSchema: OUTPUT_SCHEMA,
|
|
125
140
|
}, async ({ path: p, update_url: updateUrl }) => {
|
|
126
141
|
try {
|
|
127
142
|
const { boardId } = resolveTarget(updateUrl);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "plopino",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"mcpName": "io.github.plopino/plopino-mcp",
|
|
5
5
|
"description": "MCP server: publish an HTML page, a document, a file, or a folder to Plopino and get a public URL — documents render as readable pages.",
|
|
6
6
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.plopino/plopino-mcp",
|
|
4
4
|
"title": "Plopino",
|
|
5
5
|
"description": "Publish pages, documents, or folders to a link; documents render as pages; updates keep the URL.",
|
|
6
|
-
"version": "0.1.
|
|
6
|
+
"version": "0.1.9",
|
|
7
7
|
"websiteUrl": "https://plopino.com",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/plopino/plopino-mcp",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{
|
|
14
14
|
"registryType": "npm",
|
|
15
15
|
"identifier": "plopino",
|
|
16
|
-
"version": "0.1.
|
|
16
|
+
"version": "0.1.9",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
}
|