brewpage-mcp 1.16.9 → 1.16.10
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 +16 -10
- package/dist/tools.d.ts +1 -1
- package/dist/tools.js +10 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Choosing a host? See how BrewPage compares with GitHub Pages, Netlify Drop, Tiin
|
|
|
17
17
|
## Quick Start
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
npx -y brewpage-mcp@1.16.
|
|
20
|
+
npx -y brewpage-mcp@1.16.10
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Requires Node.js 20 or newer. This starts the stdio server for an MCP client.
|
|
@@ -50,7 +50,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
50
50
|
"mcpServers": {
|
|
51
51
|
"brewpage": {
|
|
52
52
|
"command": "npx",
|
|
53
|
-
"args": ["-y", "brewpage-mcp@1.16.
|
|
53
|
+
"args": ["-y", "brewpage-mcp@1.16.10"]
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
}
|
|
@@ -61,7 +61,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
61
61
|
Register a project-scoped stdio server:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
claude mcp add --transport stdio --scope project brewpage -- npx -y brewpage-mcp@1.16.
|
|
64
|
+
claude mcp add --transport stdio --scope project brewpage -- npx -y brewpage-mcp@1.16.10
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
This writes `.mcp.json` in the project root. Use `--scope user` for user-scoped registration. See the [official Claude Code MCP guide](https://code.claude.com/docs/en/mcp).
|
|
@@ -75,7 +75,7 @@ Open **Settings > MCP** and add:
|
|
|
75
75
|
"mcpServers": {
|
|
76
76
|
"brewpage": {
|
|
77
77
|
"command": "npx",
|
|
78
|
-
"args": ["-y", "brewpage-mcp@1.16.
|
|
78
|
+
"args": ["-y", "brewpage-mcp@1.16.10"]
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
}
|
|
@@ -89,7 +89,7 @@ Open the Cline MCP settings panel and add:
|
|
|
89
89
|
{
|
|
90
90
|
"brewpage": {
|
|
91
91
|
"command": "npx",
|
|
92
|
-
"args": ["-y", "brewpage-mcp@1.16.
|
|
92
|
+
"args": ["-y", "brewpage-mcp@1.16.10"]
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
```
|
|
@@ -97,7 +97,7 @@ Open the Cline MCP settings panel and add:
|
|
|
97
97
|
### Global Install
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
|
-
npm install -g brewpage-mcp@1.16.
|
|
100
|
+
npm install -g brewpage-mcp@1.16.10
|
|
101
101
|
brewpage-mcp
|
|
102
102
|
```
|
|
103
103
|
|
|
@@ -108,9 +108,9 @@ Twenty tools are available. Creation returns an owner token; keep it to modify o
|
|
|
108
108
|
| Tool | Purpose |
|
|
109
109
|
|------|---------|
|
|
110
110
|
| `publish_html` | Publish HTML, Markdown, code or JSON |
|
|
111
|
-
| `update_html` | Replace page content; omitted format preserves stored format |
|
|
111
|
+
| `update_html` | Replace page content; omitted format preserves stored format, except a whole HTML document makes a Markdown page an HTML page |
|
|
112
112
|
| `get_page` | Fetch raw page content |
|
|
113
|
-
| `publish_file` | Fetch a source URL and upload the file |
|
|
113
|
+
| `publish_file` | Fetch a source URL and upload the file; HTML and Markdown become pages |
|
|
114
114
|
| `publish_site` | Publish a single page or complete multi-file site bundle |
|
|
115
115
|
| `republish_site` | Replace the complete site bundle at the same ID/link |
|
|
116
116
|
| `publish_json` | Publish a JSON object, array, or JSON-encoded string |
|
|
@@ -176,7 +176,7 @@ publish_html(content="<h1>Report</h1>...", format="HTML", ttlDays=15)
|
|
|
176
176
|
|
|
177
177
|
Update an existing HTML or Markdown page in place, preserving its short URL. Requires the original `ownerToken` returned at creation.
|
|
178
178
|
|
|
179
|
-
Parameters: `namespace` (string), `id` (string), `content` (string, the new body), `ownerToken` (string), `format` (optional HTML/Markdown alias or supported code language such as `json`, `yaml`, or `typescript`; omitted preserves the stored format), `tags` (optional; replace the stored tags, `[]` clears, omitted keeps them).
|
|
179
|
+
Parameters: `namespace` (string), `id` (string), `content` (string, the new body), `ownerToken` (string), `format` (optional HTML/Markdown alias or supported code language such as `json`, `yaml`, or `typescript`; omitted preserves the stored format, except that a whole HTML document makes a Markdown page an HTML page), `tags` (optional; replace the stored tags, `[]` clears, omitted keeps them).
|
|
180
180
|
|
|
181
181
|
An update never changes the link or delivery mode; an advisory `deliveryModeReason` and `Delivery notice:` line are printed when the server returns them.
|
|
182
182
|
|
|
@@ -216,6 +216,8 @@ Upload a file to BrewPage by fetching it from a URL. Returns a public URL and ow
|
|
|
216
216
|
|
|
217
217
|
Parameters: `url` (string, the source URL to fetch), `namespace` (optional -- omit to keep the file private: unlisted and not indexed, anyone with the link can open it; `public` lists the file in the gallery and sitemap for Google, Bing and AI search), `filename` (optional custom filename), `deliveryMode` (optional). This tool does not expose base64, password, or TTL inputs.
|
|
218
218
|
|
|
219
|
+
An HTML or Markdown file becomes a page in any namespace and the returned link opens the page (notice `html-file-as-page` or `markdown-file-as-page`). A known file name extension decides, then the source's Content-Type, then the content; `.txt` and anything unclear stay files. An HTML file over the page limit or in no readable encoding stays a file shown as source (notice `html-file-as-source`). A file read in a guessed encoding is saved as UTF-8 (notice `charset-guessed`).
|
|
220
|
+
|
|
219
221
|
Example prompt:
|
|
220
222
|
|
|
221
223
|
> "Upload this PNG and give me a shareable link."
|
|
@@ -530,9 +532,13 @@ Every publish response includes an **owner token** -- the only credential that a
|
|
|
530
532
|
|
|
531
533
|
## Changelog
|
|
532
534
|
|
|
535
|
+
## 1.16.10 -- 2026-11-05
|
|
536
|
+
|
|
537
|
+
- `publish_html`, `publish_file` and `update_html` texts state the format order: `format`, known file name extension, then for files the source's Content-Type, then the content. `publish_file`: HTML and Markdown become pages in any namespace. `update_html`: a whole HTML document makes a Markdown page an HTML page. Contract 2.10.2. `User-Agent: brewpage-mcp/1.16.10`.
|
|
538
|
+
|
|
533
539
|
## 1.16.9 -- 2026-11-05
|
|
534
540
|
|
|
535
|
-
- A publish result without an owner token (`result.extras.isOwner` false) prints a neutral line instead of naming another owner. Contract 2.9.6. `User-Agent: brewpage-mcp/1.16.
|
|
541
|
+
- A publish result without an owner token (`result.extras.isOwner` false) prints a neutral line instead of naming another owner. Contract 2.9.6. `User-Agent: brewpage-mcp/1.16.10`.
|
|
536
542
|
|
|
537
543
|
## 1.16.8 -- 2026-11-02
|
|
538
544
|
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
export declare const DEFAULT_BASE_URL = "https://brewpage.app";
|
|
3
|
-
export declare const USER_AGENT = "brewpage-mcp/1.16.
|
|
3
|
+
export declare const USER_AGENT = "brewpage-mcp/1.16.10";
|
|
4
4
|
export declare const OWNER_TOKEN_ENV = "BREWPAGE_OWNER_TOKEN";
|
|
5
5
|
export interface ServerOptions {
|
|
6
6
|
/** BrewPage origin for API calls; default https://brewpage.app. */
|
package/dist/tools.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
export const DEFAULT_BASE_URL = "https://brewpage.app";
|
|
4
|
-
export const USER_AGENT = "brewpage-mcp/1.16.
|
|
4
|
+
export const USER_AGENT = "brewpage-mcp/1.16.10";
|
|
5
5
|
export const OWNER_TOKEN_ENV = "BREWPAGE_OWNER_TOKEN";
|
|
6
6
|
const READ_ONLY = { readOnlyHint: true };
|
|
7
7
|
const DESTRUCTIVE = { readOnlyHint: false, destructiveHint: true };
|
|
@@ -223,7 +223,7 @@ export function createServer(options = {}) {
|
|
|
223
223
|
const apiFetch = options.fetch ?? fetch;
|
|
224
224
|
const server = new McpServer({
|
|
225
225
|
name: "brewpage-mcp",
|
|
226
|
-
version: "1.16.
|
|
226
|
+
version: "1.16.10",
|
|
227
227
|
});
|
|
228
228
|
/** Caller argument first, then the configured default; `fromEnv` marks the configured one. */
|
|
229
229
|
function ownerTokenFor(argument) {
|
|
@@ -299,7 +299,7 @@ export function createServer(options = {}) {
|
|
|
299
299
|
server.registerTool("publish_html", {
|
|
300
300
|
...toolMeta("Publish HTML, Markdown, code or JSON page", ADDITIVE),
|
|
301
301
|
description: "Publish HTML, Markdown, code or JSON to BrewPage (max 5 MiB). " + PUBLIC_HINT +
|
|
302
|
-
"Format
|
|
302
|
+
"Format order: `format`, then a known filename extension, else the server detects it. Returns its primary share link and owner token. Optional password, TTL, filename, top toolbar (showTopBar). " +
|
|
303
303
|
"A `public` page without deliveryMode may get its own subdomain if it needs browser features a BrewPage link lacks; " +
|
|
304
304
|
"the result then has deliveryModeReason and a delivery notice. Markdown raw HTML is allowlisted: scripts, styles, event handlers, forms, embeds removed. " +
|
|
305
305
|
MANAGE_URL_TEXT + " " + SECRETS,
|
|
@@ -310,7 +310,7 @@ export function createServer(options = {}) {
|
|
|
310
310
|
.string()
|
|
311
311
|
.min(1)
|
|
312
312
|
.optional()
|
|
313
|
-
.describe("Omit: server detects html, markdown, code or JSON. `html` keeps code/JSON as HTML; also markdown/md or a code language."),
|
|
313
|
+
.describe("Omit: a known filename extension decides, else the server detects html, markdown, code or JSON. `html` keeps code/JSON as HTML; also markdown/md or a code language. A whole HTML document sent as markdown becomes an HTML page."),
|
|
314
314
|
namespace: z
|
|
315
315
|
.string()
|
|
316
316
|
.optional()
|
|
@@ -324,7 +324,7 @@ export function createServer(options = {}) {
|
|
|
324
324
|
.string()
|
|
325
325
|
.max(200)
|
|
326
326
|
.optional()
|
|
327
|
-
.describe("Optional original filename (≤200 chars). Used as title fallback when no <title>/<h1>; immutable on update."),
|
|
327
|
+
.describe("Optional original filename (≤200 chars). Without `format`, a known extension sets the format (.md stays Markdown, even a whole HTML document). Used as title fallback when no <title>/<h1>; immutable on update."),
|
|
328
328
|
showTopBar: z
|
|
329
329
|
.boolean()
|
|
330
330
|
.optional()
|
|
@@ -371,6 +371,8 @@ export function createServer(options = {}) {
|
|
|
371
371
|
server.registerTool("publish_file", {
|
|
372
372
|
...toolMeta("Publish file from URL", ADDITIVE),
|
|
373
373
|
description: "Upload a file from a URL. " + PUBLIC_HINT + "Max 5 MiB, video 20 MiB; no password or TTL. Returns its primary share link and owner token. " +
|
|
374
|
+
"HTML and Markdown files become pages in any namespace and the link opens the page: a known file name extension decides, then the source's Content-Type, then the content; `.txt` and anything unclear stay files. " +
|
|
375
|
+
"An HTML file over the page limit or in no readable encoding stays a file shown as source (notice html-file-as-source). " +
|
|
374
376
|
MANAGE_URL_TEXT + " " + SECRETS,
|
|
375
377
|
inputSchema: {
|
|
376
378
|
url: z.string().url().describe("URL of the file to upload"),
|
|
@@ -379,7 +381,7 @@ export function createServer(options = {}) {
|
|
|
379
381
|
.string()
|
|
380
382
|
.optional()
|
|
381
383
|
.describe(NAMESPACE_DESCRIPTION),
|
|
382
|
-
filename: z.string().optional().describe("Custom filename (optional)"),
|
|
384
|
+
filename: z.string().optional().describe("Custom filename (optional); replaces the URL's name, so its extension decides whether the file becomes a page"),
|
|
383
385
|
ownerToken: z.string().optional().describe(CREATE_OWNER_TOKEN_DESCRIPTION),
|
|
384
386
|
},
|
|
385
387
|
}, async ({ url: fileUrl, namespace, filename, deliveryMode, ownerToken }) => {
|
|
@@ -756,6 +758,7 @@ export function createServer(options = {}) {
|
|
|
756
758
|
server.registerTool("update_html", {
|
|
757
759
|
...toolMeta("Update page", DESTRUCTIVE),
|
|
758
760
|
description: "Update an existing BrewPage HTML, Markdown, code or JSON page. Requires owner token. Returns the updated page metadata. " +
|
|
761
|
+
"Format omitted keeps the stored format, except a whole HTML document makes a Markdown page an HTML page. " +
|
|
759
762
|
"The link and delivery mode never change on update; an advisory deliveryModeReason and delivery notice are included when the new content uses browser features that may not work fully on a BrewPage link." + OLD_READ_ONLY_TEXT + " " + NO_PUBLIC_CREDENTIALS,
|
|
760
763
|
inputSchema: {
|
|
761
764
|
namespace: z.string().describe("Page namespace"),
|
|
@@ -765,7 +768,7 @@ export function createServer(options = {}) {
|
|
|
765
768
|
format: z
|
|
766
769
|
.string()
|
|
767
770
|
.optional()
|
|
768
|
-
.describe("Content format. Accepts (case-insensitive on html/markdown): 'html', 'markdown'/'md', or a code language — yaml, json, xml, csv, tsv, log, toml, ini, sql, sh, bat, env, javascript, typescript, tsx, jsx, css, properties, docker, txt. Omit to preserve the stored format."),
|
|
771
|
+
.describe("Content format. Accepts (case-insensitive on html/markdown): 'html', 'markdown'/'md', or a code language — yaml, json, xml, csv, tsv, log, toml, ini, sql, sh, bat, env, javascript, typescript, tsx, jsx, css, properties, docker, txt. Omit to preserve the stored format, except a whole HTML document makes a Markdown page an HTML page."),
|
|
769
772
|
tags: z
|
|
770
773
|
.array(z.string())
|
|
771
774
|
.optional()
|
package/package.json
CHANGED