@openmark/mcp 1.0.3 → 1.1.1
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 +168 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/openmarkClient.d.ts +11 -0
- package/dist/openmarkClient.d.ts.map +1 -1
- package/dist/openmarkClient.js +22 -0
- package/dist/openmarkClient.js.map +1 -1
- package/dist/tools.d.ts +3 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +58 -1
- package/dist/tools.js.map +1 -1
- package/package.json +6 -2
package/README.md
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# @openmark/mcp
|
|
2
|
+
|
|
3
|
+
MCP server for [openmark](https://openmark.cc) — lets AI coding agents create, read, and update markdown documents.
|
|
4
|
+
|
|
5
|
+
## Tools
|
|
6
|
+
|
|
7
|
+
| Tool | Description |
|
|
8
|
+
|------|-------------|
|
|
9
|
+
| `openmark_create_doc` | Create a new markdown document and return its shareable URL |
|
|
10
|
+
| `openmark_read_doc` | Read a document's content by slug or full URL |
|
|
11
|
+
| `openmark_update_doc` | Replace the content of an existing document you own |
|
|
12
|
+
| `openmark_list_comments` | List comments left on a document |
|
|
13
|
+
| `openmark_resolve_comment` | Mark a comment resolved or unresolved |
|
|
14
|
+
| `openmark_delete_comment` | Delete a comment on a document you own |
|
|
15
|
+
|
|
16
|
+
## Setup
|
|
17
|
+
|
|
18
|
+
### 1. Get an API key
|
|
19
|
+
|
|
20
|
+
Sign in at [openmark.cc](https://openmark.cc), go to **Settings → API Keys**, and generate a key. It starts with `omk_`.
|
|
21
|
+
|
|
22
|
+
### 2. Add to your MCP client
|
|
23
|
+
|
|
24
|
+
**Claude Code (CLI)** — run once in your terminal:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
claude mcp add openmark -e OPENMARK_API_KEY=omk_your_key_here -- npx -y @openmark/mcp
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This writes to `~/.claude.json`. Verify with `claude mcp list`.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
**Claude Desktop** — edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"mcpServers": {
|
|
39
|
+
"openmark": {
|
|
40
|
+
"command": "npx",
|
|
41
|
+
"args": ["-y", "@openmark/mcp"],
|
|
42
|
+
"env": {
|
|
43
|
+
"OPENMARK_API_KEY": "omk_your_key_here"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Cursor** — edit `~/.cursor/mcp.json`:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"mcpServers": {
|
|
55
|
+
"openmark": {
|
|
56
|
+
"command": "npx",
|
|
57
|
+
"args": ["-y", "@openmark/mcp"],
|
|
58
|
+
"env": {
|
|
59
|
+
"OPENMARK_API_KEY": "omk_your_key_here"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Restart your MCP client after saving.
|
|
67
|
+
|
|
68
|
+
## Tool reference
|
|
69
|
+
|
|
70
|
+
### `openmark_create_doc`
|
|
71
|
+
|
|
72
|
+
Creates a new document and returns its URL.
|
|
73
|
+
|
|
74
|
+
| Parameter | Type | Required | Description |
|
|
75
|
+
|-----------|------|----------|-------------|
|
|
76
|
+
| `content` | string | yes | Markdown content (max 500 KB) |
|
|
77
|
+
| `title` | string | no | Document title (max 300 chars) |
|
|
78
|
+
|
|
79
|
+
### `openmark_read_doc`
|
|
80
|
+
|
|
81
|
+
Reads a document by slug or full URL.
|
|
82
|
+
|
|
83
|
+
| Parameter | Type | Required | Description |
|
|
84
|
+
|-----------|------|----------|-------------|
|
|
85
|
+
| `slug` | string | yes | 7-character slug (e.g. `abc1234`) or full openmark URL |
|
|
86
|
+
|
|
87
|
+
### `openmark_update_doc`
|
|
88
|
+
|
|
89
|
+
Replaces the content of a document you own.
|
|
90
|
+
|
|
91
|
+
| Parameter | Type | Required | Description |
|
|
92
|
+
|-----------|------|----------|-------------|
|
|
93
|
+
| `slug` | string | yes | 7-character slug or full openmark URL |
|
|
94
|
+
| `content` | string | yes | New markdown content |
|
|
95
|
+
| `title` | string | no | New title (omit to leave unchanged) |
|
|
96
|
+
|
|
97
|
+
### `openmark_list_comments`
|
|
98
|
+
|
|
99
|
+
Lists comments on a document as a plain-text digest (one line per comment: id, resolved state, author, the anchored text it was left on — if any — and content). The anchored text lets an agent locate which part of the document a comment refers to. Available to any visitor, matching the doc's open comment-reading behavior.
|
|
100
|
+
|
|
101
|
+
| Parameter | Type | Required | Description |
|
|
102
|
+
|-----------|------|----------|-------------|
|
|
103
|
+
| `slug` | string | yes | 7-character slug or full openmark URL |
|
|
104
|
+
|
|
105
|
+
### `openmark_resolve_comment`
|
|
106
|
+
|
|
107
|
+
Marks a comment resolved or unresolved. Not restricted to the doc owner, matching the doc's open resolve behavior. There is no tool for editing comment content — only the `resolved` flag can be toggled.
|
|
108
|
+
|
|
109
|
+
| Parameter | Type | Required | Description |
|
|
110
|
+
|-----------|------|----------|-------------|
|
|
111
|
+
| `slug` | string | yes | 7-character slug or full openmark URL |
|
|
112
|
+
| `commentId` | string | yes | The comment id, from `openmark_list_comments` |
|
|
113
|
+
| `resolved` | boolean | yes | `true` to resolve, `false` to unresolve |
|
|
114
|
+
|
|
115
|
+
### `openmark_delete_comment`
|
|
116
|
+
|
|
117
|
+
Deletes a comment. Restricted to the document owner — returns a 403 error if the API key doesn't belong to the doc's owner.
|
|
118
|
+
|
|
119
|
+
| Parameter | Type | Required | Description |
|
|
120
|
+
|-----------|------|----------|-------------|
|
|
121
|
+
| `slug` | string | yes | 7-character slug or full openmark URL |
|
|
122
|
+
| `commentId` | string | yes | The comment id, from `openmark_list_comments` |
|
|
123
|
+
|
|
124
|
+
## Local development
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
cd mcp
|
|
128
|
+
npm install
|
|
129
|
+
npm test # run tests once
|
|
130
|
+
npm run test:watch # watch mode
|
|
131
|
+
npm run build # compile TypeScript to dist/
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Run the server locally against the production API:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
OPENMARK_API_KEY=omk_your_key_here node dist/index.js
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
To test against a local worker dev server, register it in Claude Code CLI:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
claude mcp add openmark-local \
|
|
144
|
+
-e OPENMARK_API_KEY=omk_your_key_here \
|
|
145
|
+
-e OPENMARK_BASE_URL=http://localhost:8787 \
|
|
146
|
+
-- node /path/to/markdown-reader/mcp/dist/index.js
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Then start the worker (`npm run wrangler:dev` from the repo root) and run `claude mcp list` to confirm it's registered.
|
|
150
|
+
|
|
151
|
+
## Release workflow
|
|
152
|
+
|
|
153
|
+
Releases are triggered by pushing a `mcp/v*.*.*` git tag from the repo root.
|
|
154
|
+
|
|
155
|
+
1. Make your changes inside `mcp/`
|
|
156
|
+
2. Run tests: `npm test`
|
|
157
|
+
3. Bump `version` in `mcp/package.json` (follow semver)
|
|
158
|
+
4. Commit and tag:
|
|
159
|
+
```bash
|
|
160
|
+
git add mcp/package.json
|
|
161
|
+
git commit -m "chore: bump mcp to v1.x.x"
|
|
162
|
+
git tag mcp/v1.x.x
|
|
163
|
+
git push origin main --tags
|
|
164
|
+
```
|
|
165
|
+
5. CI builds, type-checks, tests, and stages the package to npm
|
|
166
|
+
6. Go to **npmjs.com → @openmark/mcp → Staged Packages**, review, and **Approve** (requires 2FA)
|
|
167
|
+
|
|
168
|
+
The package publishes under the `latest` tag once approved.
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ if (!apiKey) {
|
|
|
9
9
|
process.stderr.write('Set it in your MCP server config: { "env": { "OPENMARK_API_KEY": "omk_..." } }\n');
|
|
10
10
|
process.exit(1);
|
|
11
11
|
}
|
|
12
|
-
const baseUrl = process.env.OPENMARK_BASE_URL ?? 'https://
|
|
12
|
+
const baseUrl = process.env.OPENMARK_BASE_URL ?? 'https://openmark.cc';
|
|
13
13
|
const client = new OpenMarkClient({ apiKey, baseUrl });
|
|
14
14
|
const server = new McpServer({ name: 'openmark', version: '1.0.0' });
|
|
15
15
|
registerTools(server, client);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACzG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;IACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACzG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,qBAAqB,CAAC;AAEvE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AACvD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAErE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9B,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC"}
|
package/dist/openmarkClient.d.ts
CHANGED
|
@@ -16,6 +16,14 @@ export interface UpdatedDoc {
|
|
|
16
16
|
slug: string;
|
|
17
17
|
url: string;
|
|
18
18
|
}
|
|
19
|
+
export interface CommentInfo {
|
|
20
|
+
id: string;
|
|
21
|
+
authorName: string;
|
|
22
|
+
content: string;
|
|
23
|
+
anchorText: string | null;
|
|
24
|
+
resolved: boolean;
|
|
25
|
+
createdAt: string;
|
|
26
|
+
}
|
|
19
27
|
export declare function extractSlug(input: string): string;
|
|
20
28
|
export declare class OpenMarkClient {
|
|
21
29
|
private readonly apiKey;
|
|
@@ -26,5 +34,8 @@ export declare class OpenMarkClient {
|
|
|
26
34
|
createDoc(content: string, title?: string): Promise<CreatedDoc>;
|
|
27
35
|
readDoc(slugOrUrl: string): Promise<ReadDoc>;
|
|
28
36
|
updateDoc(slugOrUrl: string, content: string, title?: string): Promise<UpdatedDoc>;
|
|
37
|
+
listComments(slugOrUrl: string): Promise<CommentInfo[]>;
|
|
38
|
+
resolveComment(slugOrUrl: string, commentId: string, resolved: boolean): Promise<void>;
|
|
39
|
+
deleteComment(slugOrUrl: string, commentId: string): Promise<void>;
|
|
29
40
|
}
|
|
30
41
|
//# sourceMappingURL=openmarkClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openmarkClient.d.ts","sourceRoot":"","sources":["../src/openmarkClient.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASjD;AAOD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,oBAAoB;IAKxC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,MAAM;IAIR,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB/D,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"openmarkClient.d.ts","sourceRoot":"","sources":["../src/openmarkClient.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASjD;AAOD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,oBAAoB;IAKxC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,MAAM;IAIR,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAgB/D,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY5C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiBlF,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAYvD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtF,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CASzE"}
|
package/dist/openmarkClient.js
CHANGED
|
@@ -68,5 +68,27 @@ export class OpenMarkClient {
|
|
|
68
68
|
const data = (await res.json());
|
|
69
69
|
return { slug: data.slug, url: this.docUrl(data.slug) };
|
|
70
70
|
}
|
|
71
|
+
async listComments(slugOrUrl) {
|
|
72
|
+
const slug = extractSlug(slugOrUrl);
|
|
73
|
+
const res = await fetch(`${this.baseUrl}/api/docs/${encodeURIComponent(slug)}/comments`, {
|
|
74
|
+
headers: { 'X-OpenMark-Key': this.apiKey },
|
|
75
|
+
});
|
|
76
|
+
if (!res.ok)
|
|
77
|
+
await handleErrorResponse(res);
|
|
78
|
+
const data = (await res.json());
|
|
79
|
+
return data.comments;
|
|
80
|
+
}
|
|
81
|
+
async resolveComment(slugOrUrl, commentId, resolved) {
|
|
82
|
+
const slug = extractSlug(slugOrUrl);
|
|
83
|
+
const res = await fetch(`${this.baseUrl}/api/docs/${encodeURIComponent(slug)}/comments/${encodeURIComponent(commentId)}`, { method: 'PATCH', headers: this.authHeaders(), body: JSON.stringify({ resolved }) });
|
|
84
|
+
if (!res.ok)
|
|
85
|
+
await handleErrorResponse(res);
|
|
86
|
+
}
|
|
87
|
+
async deleteComment(slugOrUrl, commentId) {
|
|
88
|
+
const slug = extractSlug(slugOrUrl);
|
|
89
|
+
const res = await fetch(`${this.baseUrl}/api/docs/${encodeURIComponent(slug)}/comments/${encodeURIComponent(commentId)}`, { method: 'DELETE', headers: this.authHeaders() });
|
|
90
|
+
if (!res.ok)
|
|
91
|
+
await handleErrorResponse(res);
|
|
92
|
+
}
|
|
71
93
|
}
|
|
72
94
|
//# sourceMappingURL=openmarkClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openmarkClient.js","sourceRoot":"","sources":["../src/openmarkClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openmarkClient.js","sourceRoot":"","sources":["../src/openmarkClient.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ export interface ToolHandlers {
|
|
|
4
4
|
openmark_create_doc: (args: Record<string, unknown>) => Promise<string>;
|
|
5
5
|
openmark_read_doc: (args: Record<string, unknown>) => Promise<string>;
|
|
6
6
|
openmark_update_doc: (args: Record<string, unknown>) => Promise<string>;
|
|
7
|
+
openmark_list_comments: (args: Record<string, unknown>) => Promise<string>;
|
|
8
|
+
openmark_resolve_comment: (args: Record<string, unknown>) => Promise<string>;
|
|
9
|
+
openmark_delete_comment: (args: Record<string, unknown>) => Promise<string>;
|
|
7
10
|
}
|
|
8
11
|
export declare function buildToolHandlers(client: OpenMarkClient): ToolHandlers;
|
|
9
12
|
export declare function registerTools(server: McpServer, client: OpenMarkClient): void;
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAgC1D,MAAM,WAAW,YAAY;IAC3B,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3E,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,CA0DtE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA+D7E"}
|
package/dist/tools.js
CHANGED
|
@@ -11,6 +11,18 @@ const updateDocSchema = z.object({
|
|
|
11
11
|
content: z.string().min(1, 'content is required'),
|
|
12
12
|
title: z.string().max(300).optional(),
|
|
13
13
|
});
|
|
14
|
+
const listCommentsSchema = z.object({
|
|
15
|
+
slug: z.string().min(1, 'slug is required'),
|
|
16
|
+
});
|
|
17
|
+
const resolveCommentSchema = z.object({
|
|
18
|
+
slug: z.string().min(1, 'slug is required'),
|
|
19
|
+
commentId: z.string().min(1, 'commentId is required'),
|
|
20
|
+
resolved: z.boolean(),
|
|
21
|
+
});
|
|
22
|
+
const deleteCommentSchema = z.object({
|
|
23
|
+
slug: z.string().min(1, 'slug is required'),
|
|
24
|
+
commentId: z.string().min(1, 'commentId is required'),
|
|
25
|
+
});
|
|
14
26
|
export function buildToolHandlers(client) {
|
|
15
27
|
async function openmark_create_doc(args) {
|
|
16
28
|
const { content, title } = createDocSchema.parse(args);
|
|
@@ -32,7 +44,36 @@ export function buildToolHandlers(client) {
|
|
|
32
44
|
const result = await client.updateDoc(slug, content, title);
|
|
33
45
|
return `Updated: ${result.url}`;
|
|
34
46
|
}
|
|
35
|
-
|
|
47
|
+
async function openmark_list_comments(args) {
|
|
48
|
+
const { slug } = listCommentsSchema.parse(args);
|
|
49
|
+
const comments = await client.listComments(slug);
|
|
50
|
+
if (comments.length === 0)
|
|
51
|
+
return 'No comments on this document.';
|
|
52
|
+
return comments
|
|
53
|
+
.map((c) => {
|
|
54
|
+
const anchor = c.anchorText ? ` (on: "${c.anchorText}")` : '';
|
|
55
|
+
return `[${c.id}] ${c.resolved ? 'resolved' : 'open'} — ${c.authorName}${anchor}: ${c.content}`;
|
|
56
|
+
})
|
|
57
|
+
.join('\n');
|
|
58
|
+
}
|
|
59
|
+
async function openmark_resolve_comment(args) {
|
|
60
|
+
const { slug, commentId, resolved } = resolveCommentSchema.parse(args);
|
|
61
|
+
await client.resolveComment(slug, commentId, resolved);
|
|
62
|
+
return `Comment ${commentId} marked ${resolved ? 'resolved' : 'unresolved'}`;
|
|
63
|
+
}
|
|
64
|
+
async function openmark_delete_comment(args) {
|
|
65
|
+
const { slug, commentId } = deleteCommentSchema.parse(args);
|
|
66
|
+
await client.deleteComment(slug, commentId);
|
|
67
|
+
return `Deleted comment ${commentId}`;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
openmark_create_doc,
|
|
71
|
+
openmark_read_doc,
|
|
72
|
+
openmark_update_doc,
|
|
73
|
+
openmark_list_comments,
|
|
74
|
+
openmark_resolve_comment,
|
|
75
|
+
openmark_delete_comment,
|
|
76
|
+
};
|
|
36
77
|
}
|
|
37
78
|
export function registerTools(server, client) {
|
|
38
79
|
const handlers = buildToolHandlers(client);
|
|
@@ -45,5 +86,21 @@ export function registerTools(server, client) {
|
|
|
45
86
|
server.tool('openmark_update_doc', 'Replace the content of an existing openmark document you own.', { slug: z.string().describe('The 7-char slug or full openmark URL'), content: z.string().describe('New markdown content'), title: z.string().max(300).optional().describe('New title (omit to leave unchanged)') }, async ({ slug, content, title }) => ({
|
|
46
87
|
content: [{ type: 'text', text: await handlers.openmark_update_doc({ slug, content, title }) }],
|
|
47
88
|
}));
|
|
89
|
+
server.tool('openmark_list_comments', 'List comments left on an openmark document.', { slug: z.string().describe('The 7-char slug or full openmark URL') }, async ({ slug }) => ({
|
|
90
|
+
content: [{ type: 'text', text: await handlers.openmark_list_comments({ slug }) }],
|
|
91
|
+
}));
|
|
92
|
+
server.tool('openmark_resolve_comment', 'Mark a comment on an openmark document as resolved or unresolved.', {
|
|
93
|
+
slug: z.string().describe('The 7-char slug or full openmark URL'),
|
|
94
|
+
commentId: z.string().describe('The comment id, from openmark_list_comments'),
|
|
95
|
+
resolved: z.boolean().describe('true to resolve, false to unresolve'),
|
|
96
|
+
}, async ({ slug, commentId, resolved }) => ({
|
|
97
|
+
content: [{ type: 'text', text: await handlers.openmark_resolve_comment({ slug, commentId, resolved }) }],
|
|
98
|
+
}));
|
|
99
|
+
server.tool('openmark_delete_comment', 'Delete a comment on an openmark document you own.', {
|
|
100
|
+
slug: z.string().describe('The 7-char slug or full openmark URL'),
|
|
101
|
+
commentId: z.string().describe('The comment id, from openmark_list_comments'),
|
|
102
|
+
}, async ({ slug, commentId }) => ({
|
|
103
|
+
content: [{ type: 'text', text: await handlers.openmark_delete_comment({ slug, commentId }) }],
|
|
104
|
+
}));
|
|
48
105
|
}
|
|
49
106
|
//# sourceMappingURL=tools.js.map
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,qBAAqB,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openmark/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "MCP server for openmark — lets AI coding agents create, read, and update markdown documents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -34,5 +34,9 @@
|
|
|
34
34
|
"cursor",
|
|
35
35
|
"ai"
|
|
36
36
|
],
|
|
37
|
-
"license": "MIT"
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/prathamudeshmukh/markdown-reader"
|
|
41
|
+
}
|
|
38
42
|
}
|