AI agents and Joplin

I've been working recently on a toolbox, joplin-mcp, to enable LLM agents to interact with Joplin. The goal is to be able to perform actions seamlessly on Joplin's database from within common LLM chat interfaces. This package wraps Joplin's Data API (using @Marph's Joppy) with an API that many LLMs support today (Model Context Protocol, MCP, see the diagram below). It is worth mentioning a similar package by @pikao that was released recently (providing a read-only toolbox). This way you may instruct a LLM to find notes, edit them, tag them, remove unnecessary ones, etc. For example, the first thing that I asked the LLM to do was to find forgotten tags that are no longer in use and delete them.

The installation is fairly simple. I included examples for how to connect joplin-mcp with a commercial model (Claude Desktop), which takes about 5 minutes to setup, and a simple offline / open solution based on Ollama.

I tried to provide a nearly complete Data API support (excluding resource management for the time being). That said, I'm trying to think of ways to improve these tools. During the installation you'll be able to disable / enable tools, or limit their permissions to view or edit your notes, based on your privacy and security preferences. Furthermore, most chat interfaces will ask you to approve each tool execution in the UI. The complete tool set includes:

Note Management

  • Find & Search: find_notes, find_notes_with_tag, find_notes_in_notebook, get_all_notes
  • CRUD Operations: get_note, create_note, update_note, delete_note

Notebook Management

  • Organise: list_notebooks, create_notebook, update_notebook, delete_notebook

Tag Management

  • Categorise: list_tags, create_tag, delete_tag, get_tags_by_note
  • Link: tag_note, untag_note

System

  • Health: ping_joplin

Next steps

I'm trying to think how RAG can be integrated with this MCP. One option is to test how external RAG tools can interact with joplin-mcp. Another option is to support Jarvis embeddings, perhaps by loading and searching its note indexing database. We could also try to design tools with more advanced search methods.

4 Likes

That's very impressive, thanks for sharing this. The kind of queries it supports makes better than the built-in search engine and features:

Once configured, you can ask your AI assistant:

  • "List all my notebooks" - See your Joplin organization
  • "Find notes about Python programming" - Search your knowledge base
  • "Create a meeting note for today's standup" - Quick note creation
  • "Tag my recent AI notes as 'important'" - Organize with tags
  • "Show me my todos" - Find task items

I think the drawback of these AI-based solution, at least for non-technical users, is the need to install and setup Python scripts. Even for technical users it's sometimes a bit of a challenge to get Python apps running.

Thanks @laurent! I agree, it's a downside that I wasn't able to overcome yet. This is probably a solution for power users, even though I tried to minimise the setup to 2 lines:

pip install joplin-mcp
joplin-mcp-install

After these, a user can open the chat app and start typing.

2 Likes