@appsoftwareltd/etherpk-mcp 0.8.2 → 0.8.4
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 -16
- package/dist/main.js +806 -360
- package/dist/main.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ server and graph filled in:
|
|
|
25
25
|
# unlocked. The same step as adding a phone.
|
|
26
26
|
npx @appsoftwareltd/etherpk-mcp login --sync-server https://sync.etherpk.com
|
|
27
27
|
|
|
28
|
-
# Tell the agent about the graph (Claude Code shown
|
|
28
|
+
# Tell the agent about the graph (Claude Code shown - the Agents tab has the others).
|
|
29
29
|
claude mcp add etherpk -- npx @appsoftwareltd/etherpk-mcp serve --sync-server https://sync.etherpk.com --graph <graph id>
|
|
30
30
|
```
|
|
31
31
|
|
|
@@ -46,7 +46,7 @@ The server describes its tools and the graph to the agent, so no skill or extra
|
|
|
46
46
|
about something you've written down and the agent uses the tools. To make that a rule rather than
|
|
47
47
|
the agent's judgement, add a line to your `CLAUDE.md`, or your agent's equivalent:
|
|
48
48
|
|
|
49
|
-
> My notes
|
|
49
|
+
> My notes are stored in EtherPK - use the etherpk MCP tools for anything I've written down, and `search`
|
|
50
50
|
> in semantic mode for questions.
|
|
51
51
|
|
|
52
52
|
## What the agent can do
|
|
@@ -57,22 +57,22 @@ and every tool refuses a protected document.
|
|
|
57
57
|
| Group | Tools | Notes |
|
|
58
58
|
| --- | --- | --- |
|
|
59
59
|
| Find and read | `graph_info`, `list_documents`, `read_document`, `read_documents`, `search`, `backlinks`, `tasks` | `list_documents` can narrow to a range of journal days. `read_document` returns the body as text and the frontmatter as data. |
|
|
60
|
-
| Edit | `edit_document`, `append_document`, `create_page`, `set_task`, `set_frontmatter`, `set_aliases` | `edit_document` replaces one exact, unique piece of text
|
|
60
|
+
| Edit | `edit_document`, `append_document`, `create_page`, `set_task`, `set_frontmatter`, `set_aliases` | `edit_document` replaces one exact, unique piece of text - on a synced graph it merges with edits made elsewhere at the same time. `append_document` creates a day's journal entry when there is none. `set_frontmatter` sets any key except `title`, `aliases` and `publication`, which have tools of their own. |
|
|
61
61
|
| Rename | `plan_rename`, `rename` | Links to the old name are rewritten by default and scoped concepts move with it. Renaming onto a name that is taken merges two documents and needs confirming. |
|
|
62
62
|
| Images and files | `upload_asset`, `read_asset`, `list_assets` | `upload_asset` returns the markdown to paste into a document. It refuses hidden files and folders (`.ssh`, `.env`), the Headless Client's own config and cache, and files over 100 MiB. `read_asset` writes an asset to a local file. |
|
|
63
|
-
| Publishing | `list_publications`, `create_publication`, `update_publication`, `publish` | `publish` writes into the folder you set with the `publish` command
|
|
64
|
-
| Themes | `list_themes`, `read_theme`, `read_theme_file`, `create_theme`, `customise_publication_theme`, `write_theme_file`, `delete_theme_file`, `import_theme_folder`, `delete_theme`, `preview_theme` | Bundled themes are read-only
|
|
63
|
+
| Publishing | `list_publications`, `create_publication`, `update_publication`, `publish` | `publish` writes into the folder you set with the `publish` command - the agent can't choose one. |
|
|
64
|
+
| Themes | `list_themes`, `read_theme`, `read_theme_file`, `create_theme`, `customise_publication_theme`, `write_theme_file`, `delete_theme_file`, `import_theme_folder`, `delete_theme`, `preview_theme` | Bundled themes are read-only - customising one copies it into the graph. `preview_theme` renders a site to inspect, with screenshots when a browser is set up. |
|
|
65
65
|
|
|
66
66
|
`read_asset`, `read_theme` and `preview_theme` write only under the graph's **downloads directory**,
|
|
67
67
|
`downloads` inside the graph's folder in the cache directory, and `import_theme_folder` reads only
|
|
68
|
-
from there. An agent names a folder relative to it and gets the full path back
|
|
68
|
+
from there. An agent names a folder relative to it and gets the full path back - a folder outside it
|
|
69
69
|
is refused, so a prompt hidden in a note cannot steer the agent into writing or reading elsewhere.
|
|
70
70
|
Copy a file out with your own tools when you want it somewhere else.
|
|
71
71
|
|
|
72
72
|
## Search by meaning
|
|
73
73
|
|
|
74
74
|
`search` matches words. After one setup step it also matches **meaning**: "when do I pay my taxes"
|
|
75
|
-
finds the note that says "due 31 January". A small embedding model runs on this computer
|
|
75
|
+
finds the note that says "due 31 January". A small embedding model runs on this computer - nothing is
|
|
76
76
|
sent anywhere, and protected documents are never embedded.
|
|
77
77
|
|
|
78
78
|
```sh
|
|
@@ -89,14 +89,14 @@ directory, once per computer.
|
|
|
89
89
|
Each result carries the document, its breadcrumb of headings and parent bullets, the passage's
|
|
90
90
|
lines and text, and a similarity score. Passage text has bullet markers and `[[ ]]` removed, so
|
|
91
91
|
quote it, but take the `old` text for `edit_document` from `read_document`.
|
|
92
|
-
- **Progress.** The first pass over a large graph takes minutes and runs in the background
|
|
92
|
+
- **Progress.** The first pass over a large graph takes minutes and runs in the background - after
|
|
93
93
|
that only changed documents are embedded. Every semantic result reports `embedded`, `total` and
|
|
94
94
|
`complete`, and `semantic status` shows each cached graph.
|
|
95
95
|
- **Only while `serve` runs.** `serve` builds and updates the store, and runs only while an agent
|
|
96
96
|
session has it open. To keep a graph current without an agent, run
|
|
97
97
|
`npx @appsoftwareltd/etherpk-mcp serve --graph <id> </dev/null &` (or `--folder <path>`).
|
|
98
98
|
- **Load.** The model uses a quarter of the cores, at most four, and pauses for a tenth of a second
|
|
99
|
-
between batches. `ETHERPK_MCP_SEMANTIC_THREADS` changes the thread count
|
|
99
|
+
between batches. `ETHERPK_MCP_SEMANTIC_THREADS` changes the thread count - set it in the agent
|
|
100
100
|
registration's `env`.
|
|
101
101
|
- **Per agent.** `serve --no-semantic` keeps one registration text-only.
|
|
102
102
|
|
|
@@ -120,7 +120,7 @@ give its address to `login`.
|
|
|
120
120
|
|
|
121
121
|
`graphs` lists the synced graphs each signed-in account can reach, with the name, the id and your
|
|
122
122
|
role. `serve --graph` takes the id or the name. A graph nobody has opened since names were first
|
|
123
|
-
stored on the server is opened once to read its name
|
|
123
|
+
stored on the server is opened once to read its name - `(unnamed)` means it has none.
|
|
124
124
|
|
|
125
125
|
### Several Sync Servers
|
|
126
126
|
|
|
@@ -136,7 +136,7 @@ and the commands the Agents tab shows always include it.
|
|
|
136
136
|
tool call, and the index follows within a second or so.
|
|
137
137
|
- A tool's write is in the file when the tool returns. If a write fails, the agent is told why and
|
|
138
138
|
the edit is retried on the next write.
|
|
139
|
-
- The index
|
|
139
|
+
- The index is stored under the cache directory, never in the folder. Moving or renaming the folder
|
|
140
140
|
starts the index again.
|
|
141
141
|
|
|
142
142
|
## Publishing a site
|
|
@@ -155,13 +155,13 @@ npx @appsoftwareltd/etherpk-mcp publish --graph <id or name> --publication <id>
|
|
|
155
155
|
republishes itself.
|
|
156
156
|
- Mermaid diagrams need a browser. `diagrams setup` installs a Chromium of about 170 MB into the
|
|
157
157
|
cache directory, once per computer, and a publish whose pages hold diagrams refuses until then.
|
|
158
|
-
`ETHERPK_CHROMIUM` names a Chromium already on the computer instead
|
|
158
|
+
`ETHERPK_CHROMIUM` names a Chromium already on the computer instead - NixOS needs this.
|
|
159
159
|
- `list_publications`, or **Settings → Publish** in EtherPK, shows the publication ids.
|
|
160
160
|
|
|
161
161
|
## Reference
|
|
162
162
|
|
|
163
163
|
Every command is `npx @appsoftwareltd/etherpk-mcp <command>`. `npx` never puts `etherpk-mcp` on
|
|
164
|
-
your PATH
|
|
164
|
+
your PATH - for the short form, install the package globally once:
|
|
165
165
|
|
|
166
166
|
```sh
|
|
167
167
|
npm install -g @appsoftwareltd/etherpk-mcp
|
|
@@ -189,7 +189,7 @@ npm install -g @appsoftwareltd/etherpk-mcp
|
|
|
189
189
|
|
|
190
190
|
| Flag | Applies to | Meaning |
|
|
191
191
|
| --- | --- | --- |
|
|
192
|
-
| `--sync-server <url>` | `login`, `graphs`, `serve --graph`, `publish --graph`, `logout` | Which Sync Server the command means. Required for `login
|
|
192
|
+
| `--sync-server <url>` | `login`, `graphs`, `serve --graph`, `publish --graph`, `logout` | Which Sync Server the command means. Required for `login` - elsewhere optional while only one server is signed in. `serve` and `logout` refuse to guess when several are. |
|
|
193
193
|
| `--pat <token>` | `login` | The Personal Access Token, instead of the prompt. |
|
|
194
194
|
| `--recovery-code` | `login` | Unlock with your Recovery Code instead of waiting for Device Approval. Pressing `r` while `login` waits does the same. |
|
|
195
195
|
| `--graph <id or name>` | `serve`, `publish` | The synced graph. Not with `--folder`. |
|
|
@@ -234,7 +234,7 @@ and keys on this computer and deletes that server's cached graphs.
|
|
|
234
234
|
|
|
235
235
|
## Build from source
|
|
236
236
|
|
|
237
|
-
The package
|
|
237
|
+
The package's source is `apps/mcp` in the etherpk-client repository. It compiles the Client's sync,
|
|
238
238
|
crypto and index code in through a `$lib` alias, so it builds from the repository root, not from
|
|
239
239
|
this folder alone:
|
|
240
240
|
|
|
@@ -242,7 +242,7 @@ this folder alone:
|
|
|
242
242
|
pnpm install --frozen-lockfile
|
|
243
243
|
pnpm --filter @appsoftwareltd/etherpk-mcp check # type check
|
|
244
244
|
pnpm --filter @appsoftwareltd/etherpk-mcp test # unit tests, no server needed
|
|
245
|
-
pnpm --filter @appsoftwareltd/etherpk-mcp build # dist/main.js
|
|
245
|
+
pnpm --filter @appsoftwareltd/etherpk-mcp build # dist/main.js - run it with node dist/main.js
|
|
246
246
|
```
|
|
247
247
|
|
|
248
248
|
Releases are published to npm by the repository's CI, at the same version as the Client. To check
|