tabtree-mcp 1.4.0 → 1.5.0
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 +100 -216
- package/package.json +4 -4
- package/tabtree-mcp.mjs +522 -124
package/README.md
CHANGED
|
@@ -1,227 +1,121 @@
|
|
|
1
1
|
# TabTree Connector for Claude
|
|
2
2
|
|
|
3
|
-
Let Claude read your TabTree library and build
|
|
3
|
+
Let Claude read your TabTree library and build mind maps, kanban boards and
|
|
4
|
+
whiteboards for you — in your account, on every device, and in your team spaces.
|
|
4
5
|
|
|
5
6
|
> "Turn these meeting notes into a mind map."
|
|
6
|
-
> "
|
|
7
|
+
> "Make a kanban for the launch: these eight tasks, Sara owns the design ones, due Friday."
|
|
8
|
+
> "Add the three follow-ups from this call to the sprint board, in Doing."
|
|
7
9
|
> "Draw our database schema as a board."
|
|
8
|
-
> "Add the risks we just discussed to my Q3 plan."
|
|
9
10
|
|
|
10
|
-
**You need TabTree
|
|
11
|
-
with both editions of TabTree, and you pick the mode with ONE environment variable:
|
|
12
|
-
|
|
13
|
-
| Edition | What Claude talks to | Set |
|
|
14
|
-
| --- | --- | --- |
|
|
15
|
-
| **TabTree** (subscription — your maps live in your account) | your account, through TabTree's API | `TABTREE_API_KEY` — the key from ⚙️ Settings → Account → **Claude connector** |
|
|
16
|
-
| **TabTree Classic** (the local file, bought once) | the 🛟 backup folder on your disk | `TABTREE_DIR` — that folder's path |
|
|
17
|
-
|
|
18
|
-
In account mode a new map appears in TabTree within a minute, on every device you
|
|
19
|
-
are signed in on. In Classic mode it appears as a file in your backup folder, and
|
|
20
|
-
you pull it in from *My maps* → **🛟** → **"Bring maps back from this folder…"**.
|
|
21
|
-
|
|
22
|
-
In both modes the connector **only ever creates new maps.** It cannot overwrite a
|
|
23
|
-
map, cannot delete one, and never touches your browser storage. With a folder,
|
|
24
|
-
nothing is uploaded anywhere; with an account, it talks only to TabTree's own
|
|
25
|
-
API for that account.
|
|
26
|
-
|
|
27
|
-
Changes to a map you already have are no exception. Claude never writes to it:
|
|
28
|
-
it files a **proposal**, TabTree shows it as a banner on that map, and you tick
|
|
29
|
-
the changes you want. ⌘Z undoes them afterwards, like anything else you do.
|
|
11
|
+
**You need a TabTree account.** This package is the bridge, not the app.
|
|
30
12
|
|
|
31
13
|
---
|
|
32
14
|
|
|
33
15
|
## Before you start
|
|
34
16
|
|
|
35
|
-
**1. Get your key
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
folder; that folder is what the connector reads and writes.
|
|
17
|
+
**1. Get your connector key.** Open TabTree → ⚙️ Settings → Account →
|
|
18
|
+
**Claude connector** → *Create a connector key*. It is shown once — copy it. It
|
|
19
|
+
starts with `tt_live_`.
|
|
39
20
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
TABTREE_API_KEY=tt_live_… npx tabtree-mcp
|
|
44
|
-
```
|
|
21
|
+
**2. Node.js 18+ — for the npm and Claude Code routes.** Claude Desktop ships its
|
|
22
|
+
own Node, so the `.mcpb` install below needs nothing.
|
|
45
23
|
|
|
46
|
-
|
|
47
|
-
its own Node, so the `.mcpb` install below needs nothing. For the other routes,
|
|
48
|
-
check with `node --version` and install the LTS build from
|
|
49
|
-
[nodejs.org](https://nodejs.org) if it errors. The app itself never needs Node.
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## Install — npm (Claude Code, Cursor, any MCP client)
|
|
54
|
-
|
|
55
|
-
Nothing to clone, nothing to build. Point `TABTREE_DIR` at your backup folder:
|
|
24
|
+
Quickest test:
|
|
56
25
|
|
|
57
26
|
```bash
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
For any client that reads a JSON config, the same thing:
|
|
62
|
-
|
|
63
|
-
```json
|
|
64
|
-
{
|
|
65
|
-
"mcpServers": {
|
|
66
|
-
"tabtree": {
|
|
67
|
-
"command": "npx",
|
|
68
|
-
"args": ["-y", "tabtree-mcp"],
|
|
69
|
-
"env": { "TABTREE_DIR": "/path/to/your/backup/folder" }
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
27
|
+
TABTREE_API_KEY=tt_live_… npx tabtree-mcp
|
|
73
28
|
```
|
|
74
29
|
|
|
75
|
-
The path must be absolute — `~` and relative paths will not resolve.
|
|
76
|
-
|
|
77
30
|
---
|
|
78
31
|
|
|
79
32
|
## Install — Claude Desktop (double-click)
|
|
80
33
|
|
|
81
34
|
**Double-click `TabTree-Connector.mcpb`.** Claude Desktop opens its install
|
|
82
|
-
screen
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
To change the folder later, or to remove the connector, use Claude Desktop's own
|
|
86
|
-
extension settings. Nothing was written outside the app.
|
|
87
|
-
|
|
88
|
-
## Install — Claude Code (one command)
|
|
89
|
-
|
|
90
|
-
`.mcpb` is a Claude Desktop format; Claude Code reads a config file instead. The
|
|
91
|
-
installer writes it for you, backing up any existing one first:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
node mcp/install.mjs --dir "/path/to/your/backup/folder"
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
It prints the `claude mcp add` command to paste for user-wide access.
|
|
98
|
-
|
|
99
|
-
To see what it *would* do without writing anything:
|
|
35
|
+
screen and asks for your connector key — paste it, and that is the whole
|
|
36
|
+
procedure. To change the key later, or to remove the connector, use Claude
|
|
37
|
+
Desktop's own extension settings.
|
|
100
38
|
|
|
101
|
-
|
|
102
|
-
node mcp/install.mjs --dir "/path/to/your/backup/folder" --dry-run
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
To check an install that already exists:
|
|
39
|
+
## Install — Claude Code, Cursor, any MCP client (npm)
|
|
106
40
|
|
|
107
41
|
```bash
|
|
108
|
-
|
|
42
|
+
claude mcp add tabtree --scope user -e TABTREE_API_KEY="tt_live_…" -- npx -y tabtree-mcp
|
|
109
43
|
```
|
|
110
44
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
claude mcp add tabtree --scope user -e TABTREE_DIR="/path/to/your/backup/folder" -- node /absolute/path/to/mcp/tabtree-mcp.mjs
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
`--scope user` makes the connector available in every project. Drop it and the
|
|
118
|
-
connector only exists in the directory you ran the command from.
|
|
119
|
-
|
|
120
|
-
If you would rather not use the CLI, put this in a `.mcp.json` file at the root
|
|
121
|
-
of a project — same result, scoped to that project:
|
|
45
|
+
`--scope user` makes the connector available in every project. For any client
|
|
46
|
+
that reads a JSON config:
|
|
122
47
|
|
|
123
48
|
```json
|
|
124
49
|
{
|
|
125
50
|
"mcpServers": {
|
|
126
51
|
"tabtree": {
|
|
127
|
-
"command": "
|
|
128
|
-
"args": ["
|
|
129
|
-
"env": { "
|
|
52
|
+
"command": "npx",
|
|
53
|
+
"args": ["-y", "tabtree-mcp"],
|
|
54
|
+
"env": { "TABTREE_API_KEY": "tt_live_…" }
|
|
130
55
|
}
|
|
131
56
|
}
|
|
132
57
|
}
|
|
133
58
|
```
|
|
134
59
|
|
|
135
|
-
### Manual install — Claude Desktop (fallback)
|
|
136
|
-
|
|
137
|
-
You should not need this: the `.mcpb` above does it for you. Use it only if your
|
|
138
|
-
Claude Desktop is too old to install extensions. Open the config file for your
|
|
139
|
-
system:
|
|
140
|
-
|
|
141
|
-
| System | File |
|
|
142
|
-
| --- | --- |
|
|
143
|
-
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
144
|
-
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
145
|
-
| Linux | `~/.config/Claude/claude_desktop_config.json` |
|
|
146
|
-
|
|
147
|
-
Add the `tabtree` block shown above inside `mcpServers`, keeping any servers
|
|
148
|
-
already listed there. Save, then **fully quit and reopen Claude Desktop** —
|
|
149
|
-
reloading the window is not enough.
|
|
150
|
-
|
|
151
|
-
Paths must be absolute in both clients. `~` and relative paths will not resolve.
|
|
152
|
-
|
|
153
60
|
---
|
|
154
61
|
|
|
155
62
|
## What Claude can do
|
|
156
63
|
|
|
157
64
|
| Tool | What it does |
|
|
158
65
|
| --- | --- |
|
|
159
|
-
| `list_maps` | Lists every map and board —
|
|
160
|
-
| `read_map` | Reads one map. A mind map comes back as
|
|
161
|
-
| `search_maps` | Searches the whole library — map names, nodes, notes, shapes, stickies.
|
|
162
|
-
| `create_mindmap` | Creates a
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
66
|
+
| `list_maps` | Lists every map, kanban, note and board — yours and those of the team spaces you belong to. |
|
|
67
|
+
| `read_map` | Reads one map. A mind map or kanban comes back as an outline with each card's column, owner, dates, priority and labels; a board as elements and connections. |
|
|
68
|
+
| `search_maps` | Searches the whole library — map names, nodes, notes, shapes, stickies. |
|
|
69
|
+
| `create_mindmap` | Creates a mind map from a markdown outline — or a **note** (a page of text) or a **Gantt** (give it dates). |
|
|
70
|
+
| `create_kanban` | Creates a kanban board in one go: columns, and cards with owners, start and due days, priority, colour labels, time estimates, an Ai4X lever, a note (a Google Meet link in it becomes clickable), a link and sub-tasks. |
|
|
71
|
+
| `create_board` | Creates a whiteboard — shapes and arrows that stay anchored in the app. |
|
|
72
|
+
| `propose_changes` | Changes a map or kanban you already have — see below. |
|
|
73
|
+
|
|
74
|
+
Every creation tool takes an optional `folder` and an optional `space`. Name a
|
|
75
|
+
**team space** you are an editor of and the new map lives there: every member
|
|
76
|
+
sees it.
|
|
77
|
+
|
|
78
|
+
### Changing a map you already have — hybrid, on purpose
|
|
79
|
+
|
|
80
|
+
**Safe changes apply by themselves.** Adding cards or branches, moving a card to
|
|
81
|
+
a column, ticking it, setting its owner, dates, priority, labels, estimate, Ai4X
|
|
82
|
+
lever, an attribute, a link, a comment, a picture — and setting up the columns
|
|
83
|
+
of a map that has no kanban yet. TabTree applies them within seconds while it is
|
|
84
|
+
open on one of your devices (or the next time you open it). **⌘Z undoes them**
|
|
85
|
+
like anything else you do.
|
|
86
|
+
|
|
87
|
+
**Changes that rewrite or remove what someone wrote wait for you** — renaming,
|
|
88
|
+
rewriting a note, deleting, replacing the columns of an existing board. TabTree
|
|
89
|
+
shows them as a banner on the map; you tick the ones you want and press Apply.
|
|
90
|
+
|
|
91
|
+
In one request, the safe changes that come *before* the first review-only change
|
|
92
|
+
apply by themselves, and everything from there on waits for you — in order, so
|
|
93
|
+
nothing is applied to text that is about to be renamed.
|
|
94
|
+
|
|
95
|
+
Claude names each card or node by its exact text, so ask it to read the map
|
|
96
|
+
first. When the same wording appears twice it writes a path — `"Q4 > Hire"` — and
|
|
97
|
+
if it still cannot tell them apart, the change is refused rather than applied to
|
|
98
|
+
the wrong one. A column is named by its name: `"Doing"`.
|
|
99
|
+
|
|
100
|
+
On a team space where your role is **viewer**, Claude can read the maps but not
|
|
101
|
+
change them.
|
|
102
|
+
|
|
103
|
+
### Screenshots on nodes
|
|
104
|
+
|
|
105
|
+
Ask Claude to build a map *with screenshots* — of an app, a website, a slide
|
|
106
|
+
deck. Claude saves the screenshot and passes its path in `images`:
|
|
107
|
+
`{ target: "Login page", file: "/path/to/shot.png" }`. The picture becomes the
|
|
108
|
+
node's cover, on the map, in the kanban and in every exported image. It is
|
|
109
|
+
re-encoded on your machine first (about 840 px, a few dozen KB). The same works
|
|
110
|
+
on a map you already have: `propose_changes` with `op: "img"`.
|
|
204
111
|
|
|
205
112
|
---
|
|
206
113
|
|
|
207
|
-
##
|
|
208
|
-
|
|
209
|
-
New files land in your backup folder but the app does not watch that folder, so
|
|
210
|
-
nothing appears on its own. Open *My maps*, click the **🛟** button in the
|
|
211
|
-
toolbar, and choose **"Bring maps back from this folder…"**. Anything already in
|
|
212
|
-
your library is skipped, so you can press it as often as you like. The same
|
|
213
|
-
command is in ⌘K under "Bring my maps back from a folder…".
|
|
214
|
-
|
|
215
|
-
There is no ♻️ button in the toolbar: it only appears when your library is
|
|
216
|
-
empty. With maps already in it, the 🛟 menu is the way in.
|
|
217
|
-
|
|
218
|
-
**The folder must match.** The connector writes to the folder you configured;
|
|
219
|
-
TabTree reads the folder named next to its 🛟 button. If those are two different
|
|
220
|
-
folders, maps are created correctly and never appear. Every creation message
|
|
221
|
-
tells you which folder was written — compare it with what the app shows.
|
|
114
|
+
## What the connector will never do
|
|
222
115
|
|
|
223
|
-
|
|
224
|
-
|
|
116
|
+
It never overwrites or deletes a map, and never touches your browser storage. It
|
|
117
|
+
talks only to TabTree's own API, for your account and the team spaces you are a
|
|
118
|
+
member of. Your key is stored by your client, never in a map.
|
|
225
119
|
|
|
226
120
|
---
|
|
227
121
|
|
|
@@ -231,56 +125,46 @@ prefer — and everything it makes stays grouped in one place in your library.
|
|
|
231
125
|
full quit, not a window reload. Then check the config file is valid JSON; a
|
|
232
126
|
trailing comma is enough to make the whole file be ignored silently.
|
|
233
127
|
|
|
234
|
-
**"
|
|
235
|
-
|
|
128
|
+
**"Unknown or revoked connector key."** Create a new key in TabTree → Settings →
|
|
129
|
+
Account → Claude connector, and paste it into the connector's settings.
|
|
236
130
|
|
|
237
|
-
**"
|
|
238
|
-
|
|
239
|
-
Finder or Explorer once to bring it back.
|
|
131
|
+
**"TABTREE_API_KEY does not look like a connector key."** The field is empty or
|
|
132
|
+
was reset — reinstalling the `.mcpb` clears it. Paste the key again.
|
|
240
133
|
|
|
241
|
-
**
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
134
|
+
**Claude's changes did not appear.** Safe changes are applied by TabTree itself,
|
|
135
|
+
so it must be open and signed in on one of your devices; they land within
|
|
136
|
+
seconds, or the next time it opens. Changes that need your approval appear as a
|
|
137
|
+
banner on that map.
|
|
245
138
|
|
|
246
|
-
**
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
**Claude filed a proposal and no banner appeared.** Three things must all be
|
|
250
|
-
true: TabTree is open, its 🛟 folder is the folder the connector writes to, and
|
|
251
|
-
the map the proposal targets is one this browser actually has. That last one
|
|
252
|
-
catches the common case — a proposal for a map that only exists on your other
|
|
253
|
-
machine stays silent here, on purpose. Type `__ygProps()` in the browser console
|
|
254
|
-
to see what the app found.
|
|
139
|
+
**"The connector can read, not write."** Your trial or subscription has ended —
|
|
140
|
+
or, on a team space, the space owner's plan has.
|
|
255
141
|
|
|
256
142
|
---
|
|
257
143
|
|
|
258
|
-
|
|
144
|
+
### TabTree Classic (the discontinued local file)
|
|
259
145
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
modifier une carte existante, il dépose une **proposition** que TabTree vous
|
|
264
|
-
présente ligne par ligne : rien n'est appliqué sans votre clic, et ⌘Z l'annule.
|
|
146
|
+
The connector still reads a TabTree Classic backup folder when it is given
|
|
147
|
+
`TABTREE_DIR` instead of a key — maps are written there as files, and changes are
|
|
148
|
+
always filed for review. This mode receives no new features.
|
|
265
149
|
|
|
266
|
-
|
|
267
|
-
cartes »).
|
|
150
|
+
---
|
|
268
151
|
|
|
269
|
-
|
|
270
|
-
dossier à utiliser, et c'est terminé : ni terminal, ni fichier de config, ni
|
|
271
|
-
Node à installer.
|
|
152
|
+
## 🇫🇷 En français
|
|
272
153
|
|
|
273
|
-
|
|
154
|
+
Le connecteur permet à Claude de lire votre bibliothèque TabTree et d'y créer des
|
|
155
|
+
cartes mentales, des **kanbans**, des notes, des Gantt et des boards — dans votre
|
|
156
|
+
compte, sur tous vos appareils, et dans les **espaces d'équipe** dont vous êtes
|
|
157
|
+
membre.
|
|
274
158
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
159
|
+
Créez votre clé dans TabTree → ⚙️ Réglages → Compte → **Claude connector**, puis :
|
|
160
|
+
|
|
161
|
+
- **Claude Desktop** — double-cliquez `TabTree-Connector.mcpb` et collez la clé.
|
|
162
|
+
- **Claude Code** — `claude mcp add tabtree --scope user -e TABTREE_API_KEY="tt_live_…" -- npx -y tabtree-mcp`
|
|
278
163
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
créées et n'apparaissent jamais.
|
|
164
|
+
Pour une carte existante, le connecteur est **hybride** : ajouter ou déplacer des
|
|
165
|
+
cartes, cocher, poser un responsable, des dates, des étiquettes, une estimation,
|
|
166
|
+
un levier Ai4X s'applique tout seul en quelques secondes (⌘Z l'annule) ; renommer,
|
|
167
|
+
réécrire une note ou supprimer vous est d'abord présenté, et rien n'est appliqué
|
|
168
|
+
sans votre clic. Il n'écrase ni ne supprime jamais une carte.
|
|
285
169
|
|
|
286
170
|
Support : info@ai4x.academy
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tabtree-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"mcpName": "app.tabtree/tabtree",
|
|
5
|
-
"description": "Let Claude read your TabTree library and
|
|
5
|
+
"description": "Let Claude read your TabTree library and build mind maps, kanban boards and whiteboards in your TabTree account — team spaces included.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "git+https://github.com/ai4xedu/tabtree-mcp.git"
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"diagram",
|
|
33
33
|
"outline",
|
|
34
34
|
"kanban",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
35
|
+
"team",
|
|
36
|
+
"project-management"
|
|
37
37
|
],
|
|
38
38
|
"homepage": "https://tabtree.app/",
|
|
39
39
|
"bugs": {
|