brewpage-mcp 1.15.4 → 1.15.5
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 +12 -8
- package/dist/tools.d.ts +1 -1
- package/dist/tools.js +12 -11
- 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.15.
|
|
20
|
+
npx -y brewpage-mcp@1.15.5
|
|
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.15.
|
|
53
|
+
"args": ["-y", "brewpage-mcp@1.15.5"]
|
|
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.15.
|
|
64
|
+
claude mcp add --transport stdio --scope project brewpage -- npx -y brewpage-mcp@1.15.5
|
|
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.15.
|
|
78
|
+
"args": ["-y", "brewpage-mcp@1.15.5"]
|
|
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.15.
|
|
92
|
+
"args": ["-y", "brewpage-mcp@1.15.5"]
|
|
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.15.
|
|
100
|
+
npm install -g brewpage-mcp@1.15.5
|
|
101
101
|
brewpage-mcp
|
|
102
102
|
```
|
|
103
103
|
|
|
@@ -442,7 +442,7 @@ get_stats()
|
|
|
442
442
|
|
|
443
443
|
### `get_limits`
|
|
444
444
|
|
|
445
|
-
Read the current
|
|
445
|
+
Read the current limits from `GET /api/limits` (no auth; with `BREWPAGE_OWNER_TOKEN` also `reach` and `ownerMaxTtlDays`). Sizes are bytes, TTLs days: `requestMaxBytes`; `html`, `json`, `kv` and `files` max size, counts and TTL default/maximum; `profileMaxTtlDays` (TTL cap for a token in a profile); `sites.maxFiles`, `maxFileBytes`, `maxTotalBytes` (uncompressed), `maxArchiveExpansionBytes`, `maxPathChars`, `maxPathBytes`, `maxNameBytes`, `defaultTtlDays`, `maxTtlDays`, `allowedExtensions`, `skippedFileNames` and `skippedRootFolders`. Call it before publishing a large or multi-file site.
|
|
446
446
|
|
|
447
447
|
Parameters: none.
|
|
448
448
|
|
|
@@ -469,7 +469,7 @@ get_limits()
|
|
|
469
469
|
| "Remove the page I published" | `delete_resource` | Requires `ownerToken` from creation |
|
|
470
470
|
| "Read back the page I published" | `get_page` | Returns raw content for editing |
|
|
471
471
|
| "How many pages are on BrewPage?" | `get_stats` | Returns platform totals |
|
|
472
|
-
| "How big can my site be?" | `get_limits` | Current request and
|
|
472
|
+
| "How big can my site be?" | `get_limits` | Current request and per-type limits (bytes, TTL days) |
|
|
473
473
|
| "Store JSON state between turns" | `publish_json` | Returns short URL + owner token |
|
|
474
474
|
| "Read that JSON document back" | `get_json` | By `namespace` + `id` |
|
|
475
475
|
| "Update the JSON I stored" | `update_json` | Requires `ownerToken`; preserves URL |
|
|
@@ -530,6 +530,10 @@ Every publish response includes an **owner token** -- the only credential that a
|
|
|
530
530
|
|
|
531
531
|
## Changelog
|
|
532
532
|
|
|
533
|
+
## 1.15.5 -- 2026-10-29
|
|
534
|
+
|
|
535
|
+
- `publish_html` prints the page title (`Title:`) when the server reports one; tool texts state plain size limits; `get_limits` names the per-type limits and the profile TTL cap.
|
|
536
|
+
|
|
533
537
|
## 1.15.4 -- 2026-10-29
|
|
534
538
|
|
|
535
539
|
- `publish_html` and `update_html` texts name HTML, Markdown, code or JSON; `format` omitted -> server detects it.
|
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.15.
|
|
3
|
+
export declare const USER_AGENT = "brewpage-mcp/1.15.5";
|
|
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.15.
|
|
4
|
+
export const USER_AGENT = "brewpage-mcp/1.15.5";
|
|
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 };
|
|
@@ -188,7 +188,7 @@ export function createServer(options = {}) {
|
|
|
188
188
|
const apiFetch = options.fetch ?? fetch;
|
|
189
189
|
const server = new McpServer({
|
|
190
190
|
name: "brewpage-mcp",
|
|
191
|
-
version: "1.15.
|
|
191
|
+
version: "1.15.5",
|
|
192
192
|
});
|
|
193
193
|
/** Caller argument first, then the configured default; `fromEnv` marks the configured one. */
|
|
194
194
|
function ownerTokenFor(argument) {
|
|
@@ -236,7 +236,7 @@ export function createServer(options = {}) {
|
|
|
236
236
|
const data = responseType === "text" ? await res.text() : await res.json().catch(() => null);
|
|
237
237
|
return { ok: res.ok, status: res.status, data, headers: res.headers };
|
|
238
238
|
}
|
|
239
|
-
/** `Title:` line when the server
|
|
239
|
+
/** `Title:` line when the server returned a page or site entry title; nothing otherwise. */
|
|
240
240
|
function titleLines(data) {
|
|
241
241
|
return typeof data.title === "string" && data.title ? [`Title: ${data.title}`] : [];
|
|
242
242
|
}
|
|
@@ -248,7 +248,7 @@ export function createServer(options = {}) {
|
|
|
248
248
|
];
|
|
249
249
|
if (data.shortUrl)
|
|
250
250
|
lines.push(`Short URL: ${data.shortUrl}`);
|
|
251
|
-
lines.push(`Namespace: ${data.namespace || "N/A"}`, `ID: ${data.id || "N/A"}
|
|
251
|
+
lines.push(`Namespace: ${data.namespace || "N/A"}`, `ID: ${data.id || "N/A"}`, ...titleLines(data));
|
|
252
252
|
if (data.expiresAt)
|
|
253
253
|
lines.push(`Expires: ${data.expiresAt}`);
|
|
254
254
|
lines.push(...hostingResponseLines(data));
|
|
@@ -262,7 +262,7 @@ export function createServer(options = {}) {
|
|
|
262
262
|
}
|
|
263
263
|
server.registerTool("publish_html", {
|
|
264
264
|
...toolMeta("Publish HTML, Markdown, code or JSON page", ADDITIVE),
|
|
265
|
-
description: "Publish HTML, Markdown, code or JSON content to BrewPage (
|
|
265
|
+
description: "Publish HTML, Markdown, code or JSON content to BrewPage (max 5 MiB); format omitted -> the server detects it. Returns its primary share link and owner token. Supports password protection, custom TTL, optional filename, and an opt-in top toolbar (showTopBar). " +
|
|
266
266
|
"When deliveryMode is omitted for a `public` page, the server may publish it on its own subdomain if the page needs browser features a BrewPage link does not provide; " +
|
|
267
267
|
"the result then includes deliveryModeReason and a delivery notice. Markdown raw HTML is allowlisted: scripts, styles, event handlers, forms and embeds are removed. " +
|
|
268
268
|
MANAGE_URL_TEXT + " " + SECRETS,
|
|
@@ -333,7 +333,7 @@ export function createServer(options = {}) {
|
|
|
333
333
|
});
|
|
334
334
|
server.registerTool("publish_file", {
|
|
335
335
|
...toolMeta("Publish file from URL", ADDITIVE),
|
|
336
|
-
description: "Upload a file to BrewPage via URL.
|
|
336
|
+
description: "Upload a file to BrewPage via URL. Max 5 MiB, video 20 MiB. Returns its primary share link and owner token. Does not expose password or TTL inputs. " +
|
|
337
337
|
MANAGE_URL_TEXT + " " + SECRETS,
|
|
338
338
|
inputSchema: {
|
|
339
339
|
url: z.string().url().describe("URL of the file to upload"),
|
|
@@ -751,7 +751,7 @@ export function createServer(options = {}) {
|
|
|
751
751
|
});
|
|
752
752
|
server.registerTool("publish_json", {
|
|
753
753
|
...toolMeta("Publish JSON document", ADDITIVE),
|
|
754
|
-
description: "Publish a JSON document to BrewPage (
|
|
754
|
+
description: "Publish a JSON document to BrewPage (max 1 MiB). Accepts a JSON object, array, or a JSON-encoded string containing any valid JSON, including scalars/null. Returns its primary share link and owner token. " +
|
|
755
755
|
MANAGE_URL_TEXT + " " + SECRETS,
|
|
756
756
|
inputSchema: {
|
|
757
757
|
deliveryMode: DELIVERY_MODE_SCHEMA,
|
|
@@ -887,7 +887,7 @@ export function createServer(options = {}) {
|
|
|
887
887
|
});
|
|
888
888
|
server.registerTool("publish_kv", {
|
|
889
889
|
...toolMeta("Publish KV entry", ADDITIVE),
|
|
890
|
-
description: "Publish a key/value entry to BrewPage. Creates a KV store; the entry is addressed by (namespace, id, key).
|
|
890
|
+
description: "Publish a key/value entry to BrewPage. Creates a KV store; the entry is addressed by (namespace, id, key). Max 1 MiB per value, 1,000 keys per store; the key name `hosting` is reserved. Returns its primary share link and owner token. " +
|
|
891
891
|
MANAGE_URL_TEXT + " " + SECRETS,
|
|
892
892
|
inputSchema: {
|
|
893
893
|
deliveryMode: DELIVERY_MODE_SCHEMA,
|
|
@@ -1011,8 +1011,9 @@ export function createServer(options = {}) {
|
|
|
1011
1011
|
});
|
|
1012
1012
|
server.registerTool("get_limits", {
|
|
1013
1013
|
...toolMeta("Get upload limits", READ_ONLY),
|
|
1014
|
-
description: "Get the current BrewPage
|
|
1015
|
-
"
|
|
1014
|
+
description: "Get the current BrewPage limits (GET /api/limits): request size; per type (html, json, kv, files, sites) max size, " +
|
|
1015
|
+
"counts and TTL default/maximum; profileMaxTtlDays (TTL cap for a token in a profile); site ZIP expansion, path and name lengths, " +
|
|
1016
|
+
"allowed file extensions and skipped system files. Sizes are bytes, TTLs days. " +
|
|
1016
1017
|
`With ${OWNER_TOKEN_ENV} set: also reach (token|profile) and ownerMaxTtlDays.`,
|
|
1017
1018
|
inputSchema: {},
|
|
1018
1019
|
}, async () => {
|
|
@@ -1033,7 +1034,7 @@ export function createServer(options = {}) {
|
|
|
1033
1034
|
content: [
|
|
1034
1035
|
{
|
|
1035
1036
|
type: "text",
|
|
1036
|
-
text: `BrewPage
|
|
1037
|
+
text: `BrewPage limits (sizes in bytes, TTLs in days):\n\n${JSON.stringify(data, null, 2)}`,
|
|
1037
1038
|
},
|
|
1038
1039
|
],
|
|
1039
1040
|
};
|
package/package.json
CHANGED