tabtree-mcp 1.2.1 → 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.
Files changed (3) hide show
  1. package/README.md +100 -203
  2. package/package.json +4 -4
  3. package/tabtree-mcp.mjs +966 -98
package/README.md CHANGED
@@ -1,214 +1,121 @@
1
1
  # TabTree Connector for Claude
2
2
 
3
- Let Claude read your TabTree library and build new maps for you.
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
- > "Map the structure of this codebase."
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 itself.** This package is the bridge, not the app. It works
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, or your folder.** TabTree (subscription): open the app →
36
- ⚙️ Settings → Account → **Claude connector** → *Create a connector key*. It is
37
- shown once — copy it. TabTree Classic: open TabTree → *My maps* → 🛟 and pick a
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
- Quickest test, account mode:
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
- **2. Node.js 18+ — for the npm and Claude Code routes.** Claude Desktop ships
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
- claude mcp add tabtree --scope user -e TABTREE_DIR="/path/to/your/backup/folder" -- npx -y tabtree-mcp
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, asks which folder to use — pick your backup folder — and that is the
83
- whole procedure. No terminal, no config file, no Node.
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
- ```bash
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
- node mcp/install.mjs --check
42
+ claude mcp add tabtree --scope user -e TABTREE_API_KEY="tt_live_…" -- npx -y tabtree-mcp
109
43
  ```
110
44
 
111
- ### Manual install — Claude Code
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": "node",
128
- "args": ["/absolute/path/to/mcp/tabtree-mcp.mjs"],
129
- "env": { "TABTREE_DIR": "/path/to/your/backup/folder" }
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 — name, type, folder, size, last modified. |
160
- | `read_map` | Reads one map. A mind map comes back as a markdown outline, a board as elements and connections. |
161
- | `search_maps` | Searches the whole library — map names, nodes, notes, shapes, stickies. Case-insensitive. |
162
- | `create_mindmap` | Creates a new mind map from a markdown outline. |
163
- | `create_board` | Creates a new whiteboard — shapes and arrows that stay anchored in the app. |
164
- | `propose_changes` | Proposes changes to a map you already have. Nothing is written to it — TabTree asks you first. |
165
-
166
- `create_mindmap` takes an indented markdown outline. Headings (`#`, `##`) and
167
- bullet lists both work, two spaces per level, `[x]` for a checked item and
168
- `[title](url)` for a link. The first top-level line becomes the centre of the
169
- map.
170
-
171
- `create_board` takes a list of elements (`rect`, `ellipse`, `text`, `sticky`)
172
- and connections between them. Leave out the x/y coordinates and it lays the
173
- board out automatically — the connections define the hierarchy, left to right.
174
- Both accept an optional `folder`, which becomes a folder in your library.
175
-
176
- `propose_changes` is the one tool that points at a map you already have. It can
177
- add a branch, rename a node, write a note, tick a task, or remove a branch — and
178
- it does none of those things by itself. It writes a small file into a
179
- `Propositions` subfolder of your backup folder; TabTree checks that folder while
180
- it is open and raises a banner on the map concerned. You review the changes one
181
- by one, tick the ones you want, and press **Apply**. ⌘Z undoes the lot.
182
-
183
- Claude names each node by its exact text, so ask it to read the map first. When
184
- the same wording appears twice, it must write a path — `"Q4 > Hire"` — and if it
185
- cannot tell them apart, the proposal is refused rather than applied to the wrong
186
- one. A proposal you ignore is moved to `Propositions/Reviewed`, never deleted.
187
-
188
- If you close TabTree, or the backup folder is not connected, nothing is lost:
189
- the proposal waits in the folder and the banner appears the next time you open
190
- the app with that folder connected.
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"`.
191
111
 
192
112
  ---
193
113
 
194
- ## Getting the maps into TabTree
195
-
196
- New files land in your backup folder but the app does not watch that folder, so
197
- nothing appears on its own. Open *My maps*, click the **🛟** button in the
198
- toolbar, and choose **"Bring maps back from this folder…"**. Anything already in
199
- your library is skipped, so you can press it as often as you like. The same
200
- command is in ⌘K under "Bring my maps back from a folder…".
201
-
202
- There is no ♻️ button in the toolbar: it only appears when your library is
203
- empty. With maps already in it, the 🛟 menu is the way in.
204
-
205
- **The folder must match.** The connector writes to the folder you configured;
206
- TabTree reads the folder named next to its 🛟 button. If those are two different
207
- folders, maps are created correctly and never appear. Every creation message
208
- tells you which folder was written — compare it with what the app shows.
114
+ ## What the connector will never do
209
115
 
210
- Tell Claude to use a `folder` — `"Depuis Claude"`, `"Claude"`, whatever you
211
- prefer — and everything it makes stays grouped in one place in your library.
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.
212
119
 
213
120
  ---
214
121
 
@@ -218,56 +125,46 @@ prefer — and everything it makes stays grouped in one place in your library.
218
125
  full quit, not a window reload. Then check the config file is valid JSON; a
219
126
  trailing comma is enough to make the whole file be ignored silently.
220
127
 
221
- **"TABTREE_DIR is not set."** The `env` block is missing or the path is wrong.
222
- Run `node mcp/install.mjs --check` to see the path the connector resolves.
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.
223
130
 
224
- **"The TABTREE_DIR folder does not exist."** The path has a typo, or the folder
225
- is in iCloud Drive / OneDrive and has been evicted to the cloud. Open it in
226
- 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.
227
133
 
228
- **New maps do not show up in the app.** They are files on disk until you press
229
- brought them in from the 🛟 menu. Check the folder in Finder first — if the file
230
- is there, the connector did its job, and the question is only which folder the
231
- app is reading.
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.
232
138
 
233
- **A map comes back empty.** The connector reads `.tabtree` and `.ygmind` files
234
- one folder deep. A map filed two levels down is out of reach; move it up.
235
-
236
- **Claude filed a proposal and no banner appeared.** Three things must all be
237
- true: TabTree is open, its 🛟 folder is the folder the connector writes to, and
238
- the map the proposal targets is one this browser actually has. That last one
239
- catches the common case — a proposal for a map that only exists on your other
240
- machine stays silent here, on purpose. Type `__ygProps()` in the browser console
241
- 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.
242
141
 
243
142
  ---
244
143
 
245
- ## 🇫🇷 En français
144
+ ### TabTree Classic (the discontinued local file)
246
145
 
247
- Le connecteur permet à Claude de lire votre bibliothèque TabTree et de créer des
248
- cartes et des boards. Il ne crée que de **nouveaux fichiers** : il ne peut rien
249
- écraser ni supprimer, et ne touche jamais au stockage du navigateur. Pour
250
- modifier une carte existante, il dépose une **proposition** que TabTree vous
251
- 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.
252
149
 
253
- Prérequis : un dossier de sauvegarde configuré dans TabTree (🛟 dans « Mes
254
- cartes »).
150
+ ---
255
151
 
256
- **Claude Desktop** — double-cliquez `TabTree-Connector.mcpb`. Claude demande le
257
- dossier à utiliser, et c'est terminé : ni terminal, ni fichier de config, ni
258
- Node à installer.
152
+ ## 🇫🇷 En français
259
153
 
260
- **Claude Code** — `.mcpb` ne s'y applique pas, il lit un fichier de config :
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.
261
158
 
262
- ```bash
263
- node mcp/install.mjs --dir "/chemin/vers/votre/dossier"
264
- ```
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`
265
163
 
266
- Cette voie-là demande Node.js 18 ou plus. Ensuite, demandez par exemple
267
- « transforme ces notes de réunion en carte mentale » : la carte est écrite dans
268
- le dossier ; récupérez-la dans l'app par *Mes cartes* → **🛟** → **« Bring maps
269
- back from this folder… »**. Le dossier visé par le connecteur doit être celui
270
- que TabTree affiche à côté de son bouton 🛟 : s'ils diffèrent, les cartes sont
271
- 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.
272
169
 
273
170
  Support : info@ai4x.academy
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "tabtree-mcp",
3
- "version": "1.2.1",
3
+ "version": "1.5.0",
4
4
  "mcpName": "app.tabtree/tabtree",
5
- "description": "Let Claude read your TabTree library and turn conversations into mind maps and whiteboards — in your TabTree account, or from local files.",
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
- "local-first",
36
- "offline"
35
+ "team",
36
+ "project-management"
37
37
  ],
38
38
  "homepage": "https://tabtree.app/",
39
39
  "bugs": {