mcp-server-jotbird 0.1.5 → 0.1.7
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 +15 -3
- package/dist/index.js +54 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -115,22 +115,24 @@ Ask your LLM things like:
|
|
|
115
115
|
- *"Update my published page 'my-notes' with this new section"*
|
|
116
116
|
- *"Show me all my published pages"*
|
|
117
117
|
- *"Take down the page with slug 'old-draft'"*
|
|
118
|
+
- *"Publish this at my namespace as 'project-notes'"* (Pro)
|
|
118
119
|
|
|
119
120
|
## Tools
|
|
120
121
|
|
|
121
122
|
### `publish`
|
|
122
123
|
|
|
123
|
-
Publish Markdown content as a formatted web page with a shareable URL. To update an existing page, pass its slug.
|
|
124
|
+
Publish Markdown content as a formatted web page with a shareable URL. To update an existing page, pass its slug. Pro users with a username can publish at a permanent namespaced URL by passing `namespaced: true`.
|
|
124
125
|
|
|
125
126
|
| Parameter | Required | Description |
|
|
126
127
|
|-----------|----------|-------------|
|
|
127
128
|
| `markdown` | Yes | Markdown content (max 256 KB). Supports footnotes, task lists, definition lists, math (`$…$` and `$$…$$`), and inline HTML. |
|
|
128
129
|
| `title` | No | Page title. If omitted, the first H1 in the Markdown is used. |
|
|
129
|
-
| `slug` | No |
|
|
130
|
+
| `slug` | No | For flat documents: slug of an existing page to update. Omit to publish a new page with an auto-generated slug. For namespaced documents (`namespaced: true`): required — publishes at `@username/slug`. Use `list_documents` to find slugs. |
|
|
131
|
+
| `namespaced` | No | When `true`, publish at your namespace: `share.jotbird.com/@username/slug`. Requires Pro and a username set in Account Settings. |
|
|
130
132
|
|
|
131
133
|
### `list_documents`
|
|
132
134
|
|
|
133
|
-
List the user's published pages. Returns each page's title, URL, slug, and
|
|
135
|
+
List the user's published pages. Returns each page's title, URL, slug, expiration date, and username (for namespaced pages).
|
|
134
136
|
|
|
135
137
|
No parameters.
|
|
136
138
|
|
|
@@ -141,6 +143,16 @@ Permanently delete a published page and its shareable URL. Cannot be undone.
|
|
|
141
143
|
| Parameter | Required | Description |
|
|
142
144
|
|-----------|----------|-------------|
|
|
143
145
|
| `slug` | Yes | Slug of the page to delete. Use `list_documents` to find slugs. |
|
|
146
|
+
| `namespaced` | No | When `true`, delete the document at `@username/slug` instead of the flat URL. Requires Pro and a username. |
|
|
147
|
+
|
|
148
|
+
## Namespaced URLs (Pro)
|
|
149
|
+
|
|
150
|
+
Pro users with a username set in Account Settings can publish at permanent, human-readable URLs like `share.jotbird.com/@username/my-page`. Just ask your AI:
|
|
151
|
+
|
|
152
|
+
> "Publish this at my namespace as 'project-notes'."
|
|
153
|
+
> → `share.jotbird.com/@clayton-myers/project-notes`
|
|
154
|
+
|
|
155
|
+
Namespaced pages never expire and keep the same URL across updates. Set your username in **Account Settings** at [jotbird.com](https://www.jotbird.com).
|
|
144
156
|
|
|
145
157
|
## Limits
|
|
146
158
|
|
package/dist/index.js
CHANGED
|
@@ -13,10 +13,16 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
|
13
13
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
14
14
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
15
15
|
import { z } from "zod";
|
|
16
|
+
import { createRequire } from "node:module";
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
17
18
|
// Configuration
|
|
18
19
|
// ---------------------------------------------------------------------------
|
|
19
|
-
|
|
20
|
+
// Read the version from package.json so the User-Agent and MCP server identity
|
|
21
|
+
// always match the published release instead of a hand-edited literal that
|
|
22
|
+
// drifts. tsc emits dist/index.js flat, so "../package.json" is the package
|
|
23
|
+
// root. createRequire avoids needing resolveJsonModule for a static import.
|
|
24
|
+
const require = createRequire(import.meta.url);
|
|
25
|
+
const VERSION = require("../package.json").version;
|
|
20
26
|
// ---------------------------------------------------------------------------
|
|
21
27
|
// Argument schemas
|
|
22
28
|
// ---------------------------------------------------------------------------
|
|
@@ -26,10 +32,23 @@ const PublishArgs = z.object({
|
|
|
26
32
|
slug: z
|
|
27
33
|
.string()
|
|
28
34
|
.optional()
|
|
29
|
-
.describe("
|
|
35
|
+
.describe("For flat documents: slug of an existing page to update. " +
|
|
36
|
+
"For namespaced documents (namespaced: true): required — publish at @username/slug. " +
|
|
37
|
+
"Omit (with namespaced: false/absent) to publish a new page with an auto-generated slug."),
|
|
38
|
+
namespaced: z
|
|
39
|
+
.boolean()
|
|
40
|
+
.optional()
|
|
41
|
+
.describe("When true, publish at your namespace: share.jotbird.com/@username/slug. " +
|
|
42
|
+
"Requires a Pro subscription and a username set in Account Settings. " +
|
|
43
|
+
"A slug is required when namespaced is true."),
|
|
30
44
|
});
|
|
31
45
|
const DeleteArgs = z.object({
|
|
32
46
|
slug: z.string().describe("The slug of the document to delete"),
|
|
47
|
+
namespaced: z
|
|
48
|
+
.boolean()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("When true, delete the document at @username/slug instead of the flat URL. " +
|
|
51
|
+
"Requires a Pro subscription and a username set in Account Settings."),
|
|
33
52
|
});
|
|
34
53
|
// ---------------------------------------------------------------------------
|
|
35
54
|
// MCP server factory (exported for testing)
|
|
@@ -66,8 +85,11 @@ export function createServer(apiKey, apiBase) {
|
|
|
66
85
|
async function listDocuments() {
|
|
67
86
|
return apiRequest("/api/v1/documents");
|
|
68
87
|
}
|
|
69
|
-
async function deleteDocument(slug) {
|
|
70
|
-
|
|
88
|
+
async function deleteDocument(slug, namespaced) {
|
|
89
|
+
const params = new URLSearchParams({ slug });
|
|
90
|
+
if (namespaced)
|
|
91
|
+
params.set("namespaced", "true");
|
|
92
|
+
return apiRequest(`/api/v1/documents?${params.toString()}`, { method: "DELETE" });
|
|
71
93
|
}
|
|
72
94
|
// -- Server setup --
|
|
73
95
|
const server = new Server({ name: "mcp-server-jotbird", version: VERSION }, { capabilities: { tools: {} } });
|
|
@@ -79,7 +101,9 @@ export function createServer(apiKey, apiBase) {
|
|
|
79
101
|
"shareable URL on JotBird. Use when the user wants to share, publish, " +
|
|
80
102
|
"or host written content online. Supports full Markdown including " +
|
|
81
103
|
"headings, lists, code blocks, tables, footnotes, and math. " +
|
|
82
|
-
"To update an existing page, pass its slug."
|
|
104
|
+
"To update an existing page, pass its slug. " +
|
|
105
|
+
"Pro users with a username can publish at a permanent namespaced URL " +
|
|
106
|
+
"(share.jotbird.com/@username/slug) by passing namespaced: true and a slug.",
|
|
83
107
|
inputSchema: {
|
|
84
108
|
type: "object",
|
|
85
109
|
properties: {
|
|
@@ -95,10 +119,17 @@ export function createServer(apiKey, apiBase) {
|
|
|
95
119
|
},
|
|
96
120
|
slug: {
|
|
97
121
|
type: "string",
|
|
98
|
-
description: "
|
|
99
|
-
"
|
|
122
|
+
description: "For flat documents: slug of an existing page to update. " +
|
|
123
|
+
"Omit to publish a new page with an auto-generated slug. " +
|
|
124
|
+
"For namespaced documents (namespaced: true): required — publish at @username/slug. " +
|
|
100
125
|
"Use list_documents to find slugs of existing pages.",
|
|
101
126
|
},
|
|
127
|
+
namespaced: {
|
|
128
|
+
type: "boolean",
|
|
129
|
+
description: "When true, publish at your namespace: share.jotbird.com/@username/slug. " +
|
|
130
|
+
"Requires a Pro subscription and a username set in Account Settings. " +
|
|
131
|
+
"A slug must be provided.",
|
|
132
|
+
},
|
|
102
133
|
},
|
|
103
134
|
required: ["markdown"],
|
|
104
135
|
},
|
|
@@ -117,7 +148,7 @@ export function createServer(apiKey, apiBase) {
|
|
|
117
148
|
name: "delete",
|
|
118
149
|
description: "Permanently delete a published JotBird page and its shareable URL. " +
|
|
119
150
|
"Use when the user wants to take down or remove a published page. " +
|
|
120
|
-
"This cannot be undone.",
|
|
151
|
+
"This cannot be undone. For namespaced pages (@username/slug), pass namespaced: true.",
|
|
121
152
|
inputSchema: {
|
|
122
153
|
type: "object",
|
|
123
154
|
properties: {
|
|
@@ -126,6 +157,11 @@ export function createServer(apiKey, apiBase) {
|
|
|
126
157
|
description: "Slug of the page to delete (e.g. 'my-notes'). " +
|
|
127
158
|
"Use list_documents to find slugs.",
|
|
128
159
|
},
|
|
160
|
+
namespaced: {
|
|
161
|
+
type: "boolean",
|
|
162
|
+
description: "When true, delete the document at @username/slug instead of the flat URL. " +
|
|
163
|
+
"Requires a Pro subscription and a username set in Account Settings.",
|
|
164
|
+
},
|
|
129
165
|
},
|
|
130
166
|
required: ["slug"],
|
|
131
167
|
},
|
|
@@ -137,18 +173,21 @@ export function createServer(apiKey, apiBase) {
|
|
|
137
173
|
try {
|
|
138
174
|
switch (name) {
|
|
139
175
|
case "publish": {
|
|
140
|
-
const { markdown, title, slug } = PublishArgs.parse(args);
|
|
141
|
-
const result = await publishDocument({ markdown, title, slug });
|
|
176
|
+
const { markdown, title, slug, namespaced } = PublishArgs.parse(args);
|
|
177
|
+
const result = await publishDocument({ markdown, title, slug, namespaced });
|
|
142
178
|
const action = result.created ? "Published" : "Updated";
|
|
143
179
|
const expiry = result.expiresAt
|
|
144
180
|
? `\nExpires: ${result.expiresAt}`
|
|
145
181
|
: "\nExpires: never (Pro)";
|
|
182
|
+
const identifier = result.username
|
|
183
|
+
? `@${result.username}/${result.slug}`
|
|
184
|
+
: result.slug;
|
|
146
185
|
return {
|
|
147
186
|
content: [
|
|
148
187
|
{
|
|
149
188
|
type: "text",
|
|
150
189
|
text: `${action}: ${result.url}\n` +
|
|
151
|
-
`Slug: ${
|
|
190
|
+
`Slug: ${identifier}\n` +
|
|
152
191
|
`Title: ${result.title ?? "(untitled)"}` +
|
|
153
192
|
expiry,
|
|
154
193
|
},
|
|
@@ -166,7 +205,8 @@ export function createServer(apiKey, apiBase) {
|
|
|
166
205
|
}
|
|
167
206
|
const lines = documents.map((d) => {
|
|
168
207
|
const expires = d.expiresAt ?? "never";
|
|
169
|
-
|
|
208
|
+
const identifier = d.username ? `@${d.username}/${d.slug}` : d.slug;
|
|
209
|
+
return `- **${d.title || "(untitled)"}**\n ${d.url}\n slug: ${identifier} · expires: ${expires}`;
|
|
170
210
|
});
|
|
171
211
|
return {
|
|
172
212
|
content: [
|
|
@@ -178,8 +218,8 @@ export function createServer(apiKey, apiBase) {
|
|
|
178
218
|
};
|
|
179
219
|
}
|
|
180
220
|
case "delete": {
|
|
181
|
-
const { slug } = DeleteArgs.parse(args);
|
|
182
|
-
await deleteDocument(slug);
|
|
221
|
+
const { slug, namespaced } = DeleteArgs.parse(args);
|
|
222
|
+
await deleteDocument(slug, namespaced);
|
|
183
223
|
return {
|
|
184
224
|
content: [
|
|
185
225
|
{
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,kEAAkE;AAClE,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;IAC5C,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;QACxB,KAAK,EAAE,GAAG,CAAC,OAAO;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|