I’ve been a passive participant in this forum so far, but since there’s been a lot of discussion about connecting Tinderbox to Large Language Models, I thought I’d share something as well. I’ve been experimenting with this from a different angle: Rather than bringing AI functionality into Tinderbox, I gave the Claude Desktop app access to Tinderbox using the Model Context Protocol (MCP) recently developed by Anthropic.
In the example above I moved the notes around a bit so that they can be seen better. But Claude is actually capable of moving notes on the map when given some information about the relevant attributes. Here I gave it an image of a handwritten sketch and asked it to recreate it on a map:
Although this is not perfect (there are several mistakes in the diagram), I think it’s still impressive. Claude can also play the role of a research assistant with the ability to take a sequence of actions, based on its own decisions about which tools to use. In the example below, Claude was given general instructions and told the locations of some existing notes in Tinderbox as well as a folder with sources in the filesystem (which is another MCP integration). It then retrieved the list of notes in that container, decided which of them to look at more closely, decided which of the files seem most relevant and finally created more notes.
In the background this is using a limited number of applescripts that Claude can call and pass arguments to. Currently these are “create note”, “link notes”, “get children”, “get siblings” and “update attribute”. It’s all adapted from an MCP server that someone else made mostly for interacting with system apps and settings (GitHub - joshrutkowski/applescript-mcp: A macOS AppleScript MCP server). Unfortunately I had to make a few changes to the code and setting up MCP servers is still a bit fiddly anyway, so it wouldn’t be practical to explain the whole process in the forum. But if people are interested, I could look into adding my Tinderbox-adapted version to Github (which I’ve never done before).
As far as I know, MCP servers can also be used with the free version of Claude and technically also with third-party LLM clients that use the OpenAI API or local models.
I just discovered MCP two days ago and have immersed myself in YouTube tutorials.
This advancement in information management with potential to interact with my Tinderbox zettelkasten is awesome.
For my use case, I hope there is a way to wire-up the connections to help me with the processing of atomic notes/highlights from various sources.
I have attributes for each atomic note for zDeclarative Sentence, zIndexTerm, zAuthor, zPerson, zKeyword along with other meta data.
Currently, I have to cut and paste the $Text of the atomic note into Claude with a prompt to analyze that $Text and return to me the values for those attributes.
After reading a book resulting in several hundred atomic notes, it is a very laborious process.
But this new technology of having Claude interact with that note in Tinderbox, via MCP, and populating those attributes would be awesome.
Once those attributes are populated, the further processing of that note is easily done with existing stamps within Tinderbox.
I would be very grateful for a tutorial session on an upcoming Tinderbox Meetup addressing this capability.
Thankyou, @pkus for alerti
I am very interested indeed in this! I will be tied up, at least intermittently, for the next two weeks, but would be happy to add whatever infrastructure is needed for this work after then.
Good grief. That drawing transformation is incredible. I have been manually recreating liquidtext note map exports for years; having the machine do this for me would be transformative. It’s great to seer something useful coming out of AI, superb work @pkus!
@kdjamesrd What you’re describing is definitely possible even with that initial version, although I need to improve the update_attribute tool so that it can change multiple attributes of a note at once. I’ll try to publish this server soon.
@eastgate That’s great to hear! There’s actually not much needed on the Tinderbox side. The main thing I’m missing is more ways to query Tinderbox with AppleScript, like “find all notes where the name contains …” or “all notes with the prototype …”. This might just be my limited knowledge of scripting Tinderbox though, I know you can do a lot with ‘evaluate’.
This is great!!! Would you be willing to demonstrate this on one of our weekly meetups? If co, please check out the calendar and pick a date that works for you: Tinderbox Meetup Calendar (2024, 2025)
If you have a target container, then you can do something like this:
set theNotes to notes in note "MyContainerName" whose value of attribute "Name" contains "MySearchString"
set targetNotes to notes in note "MyContainerName" whose value of attribute "Prototype" is "MyPrototypeName"
This looks in that container only, not in containers that it contains. If you need to look in multiple levels at once then things start getting more complicated and evaluate may be more efficient.
I’ve now created a repository for the MCP server: tinderbox-mcp
In the end it was more practical to create a new server from scratch instead of changing the existing AppleScript server mentioned in my first post. Disclaimer: Much of the actual code was written by Claude. I think I understand it, but I’m a historian, not a programmer, so I can’t say if it’s “good” code. Feedback is welcome, also for the applescripts.
A note on installation: The instructions in the Readme assume that you have a Github account the Github CLI installed. You could also manually download the repository from the site and then use cd /path/to/downloaded/folder instead of cloning the repository. This makes it a little more difficult to install updated versions though.
An easy way to get to the Claude config file that you need to edit before being able to use an MCP server is through Settings → Developer → Edit config in the Claude Desktop app.
Edit: Just after posting this, I notice there will be an issue for some of you. I’m still using Tinderbox 9, and so this is what the applescripts are calling. You’d have to update the tell application "Tinderbox 9" commands at the beginning of the scripts to fit your version. Or is there a way to address Tinderbox in a version-agnostic way, like the tell application id "DNtp" for DEVONthink?
Edit2: Found the answer on the forum, the scripts should now work regardless of the version.