Joplin MCP Server
This server lets AI assistants manage Joplin notes through MCP tools.
Search notes full-text with a query and optional result limit.
Get a specific note by its ID.
Create new notes with a title, optional markdown body, parent folder, and todo flag.
Update existing notes (title, body, parent folder, todo status).
Delete notes, with the option to permanently delete.
Import a markdown file as a new note.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Joplin MCP Server search for meeting notes about the Q3 project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ Joplin MCP Server
A Model Context Protocol (MCP) Server for Joplin that enables note access through the Model Context Protocol. Perfect for integration with AI assistants like Claude.
โจ Features
๐ Search Notes: Full-text search across all notes
๐ List Notebooks: Browse available notebooks and sub-notebooks
๐๏ธ Create Notebooks: Create notebooks and nested sub-notebooks
๐ Read Notes: Retrieve individual notes
โ๏ธ Edit Notes: Create new notes and update existing ones
๐๏ธ Delete Notes: Move notes to trash or delete permanently
๐ฅ Markdown Import: Import markdown files as notes
๐ค AI Integration: Seamless integration with Claude and other MCP-capable AI assistants
Related MCP server: Obsidian MCP
๐ Installation
Prerequisites
Python 3.10 or higher
Joplin Desktop with Web Clipper Service enabled
uv (Python package manager)
# Clone repository
git clone https://github.com/dweigend/joplin-mcp.git
cd joplin-mcp
# Create and activate virtual environment
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
```bash
uv pip install -e .โ๏ธ Configuration
Joplin API Token
Open Joplin Desktop
Go to Tools -> Options -> Web Clipper
Enable the Web Clipper Service
Copy the API Token
Create a .env file in the project directory:
JOPLIN_TOKEN=your_api_token_hereClaude Desktop Setup
Install Claude Desktop
Download Claude Desktop
Ensure you have the latest version (Menu: Claude -> Check for Updates...)
Configure MCP Server
{ "mcpServers": { "joplin": { "command": "/PATH/TO/UV/uv", "args": [ "--directory", "/PATH/TO/YOUR/PROJECT/joplin_mcp", "run", "src/mcp/joplin_mcp.py" ] } } }Replace
/PATH/TO/UV/uvwith the absolute path to your uv installationFind the path with:
which uvExample macOS:
/Users/username/.local/bin/uvExample Windows:
C:\Users\username\AppData\Local\Microsoft\WindowsApps\uv.exe
Replace
/PATH/TO/YOUR/PROJECT/joplin_mcpwith the absolute path to your project
Important: Claude Desktop needs the full path to
uvas it cannot access shell environment variables.
๐ ๏ธ Available Tools
search_notes
Search for notes in Joplin.
Parameters:
query(string): Search querylimit(int, optional): Maximum number of results (default: 100)
get_note
Retrieve a specific note by its ID.
Parameters:
note_id(string): ID of the note
list_notebooks
List all available notebooks as a tree.
Parameters:
None
create_notebook
Create a new notebook.
Parameters:
title(string): Notebook titleparent_id(string, optional): Parent notebook IDparent_notebook_name(string, optional): Parent notebook title or full path
create_note
Create a new note.
Parameters:
title(string): Note titlebody(string, optional): Note content in Markdownparent_id(string, optional): ID of parent foldernotebook_name(string, optional): Notebook title or full path such asWork/Projectsis_todo(boolean, optional): Whether this is a todo item
update_note
Update an existing note.
Parameters:
note_id(string): ID of note to updatetitle(string, optional): New titlebody(string, optional): New contentparent_id(string, optional): New parent folder IDnotebook_name(string, optional): New notebook title or full path such asWork/Projectsis_todo(boolean, optional): New todo status
delete_note
Delete a note.
Parameters:
note_id(string): ID of note to deletepermanent(boolean, optional): If true, permanently delete the note
import_markdown
Import a markdown file as a new note.
Parameters:
file_path(string): Path to the markdown fileparent_id(string, optional): ID of parent foldernotebook_name(string, optional): Notebook title or full path such asWork/Projects
๐งช Development
Debug Mode
To start the server in debug mode:
MCP_LOG_LEVEL=debug mcp dev src/mcp/joplin_mcp.pyThis starts the MCP Inspector at http://localhost:5173 where you can test the tools.
๐ License
MIT License - Copyright (c) 2025 David Weigend
๐ค Author
David Weigend
Website: weigend.studio
GitHub: @dweigend
๐ค Contributing
Contributions, issues and feature requests are welcome! Visit the issues page.
Available Tools
6 toolscreate_noteA
Create a new note in Joplin.
Args:
args: Note creation parameters
title: Note title
body: Note content in Markdown (optional)
parent_id: ID of parent folder (optional)
is_todo: Whether this is a todo item (optional)
Returns:
Dictionary containing the created note data
Inputs: args (required).
delete_noteB
Delete a note from Joplin.
Args:
note_id: ID of note to delete
permanent: If True, permanently delete the note
Returns:
Dictionary containing the operation status
Inputs: note_id (required), permanent.
get_noteC
Get a specific note by ID.
Args:
note_id: ID of the note to retrieve
Returns:
Dictionary containing the note data
Inputs: note_id (required).
import_markdownC
Import a markdown file as a new note.
Args:
args: Import parameters
file_path: Path to the markdown file
Returns:
Dictionary containing the created note data
Inputs: args (required).
search_notesC
Search for notes in Joplin.
Args:
args: Search parameters
query: Search query string
limit: Maximum number of results (default: 100)
Returns:
Dictionary containing search results
Inputs: args (required).
update_noteB
Update an existing note in Joplin.
Args:
args: Note update parameters
note_id: ID of note to update
title: New title (optional)
body: New content (optional)
parent_id: New parent folder ID (optional)
is_todo: New todo status (optional)
Returns:
Dictionary containing the updated note data
Inputs: args (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogโฆ
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose with no overlap: create_note, delete_note, get_note, update_note, search_notes, and import_markdown all target specific operations on notes. An agent can easily distinguish between creation, retrieval, modification, deletion, searching, and importing functions without confusion.
All tools follow a consistent verb_noun pattern with snake_case naming: create_note, delete_note, get_note, update_note, search_notes, and import_markdown. The pattern is predictable throughout, making the tool set easy to navigate and understand.
With 6 tools, the server is well-scoped for note management in Joplin. Each tool earns its place by covering essential CRUD operations (create, read, update, delete), plus useful extras like search and import, without being overly sparse or bloated.
The tool set provides complete CRUD and lifecycle coverage for notes in Joplin, including create, read, update, delete, search, and import functionalities. There are no obvious gaps, and agents can perform all core note-related workflows without dead ends.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoโฆ
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables semantic search and retrieval of Apple Notes content, allowing AI assistants to access, search, and create notes using on-device embeddings.3,323 npm2MIT
- AlicenseBqualityFmaintenanceA Model Context Protocol server that enables AI assistants to read, write, and manipulate notes in your Obsidian vault through a standardized interface.53,585 npm4ISC
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows AI assistants like Claude to interact with Evernote, enabling them to create, search, read, and manage notes through natural language.4-
- FlicenseNot gradedqualityBmaintenanceMCP server that provides standardized tools for querying and retrieving notes from Joplin personal knowledge manager through its API, enabling AI assistants to access and reference personal notes contextually.9-