joplin-mcp-server
Categories
Language:
Python
Stars:
2
Forks:
1
๐ 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
- ๐ 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
๐ 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_here
Claude 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/uv
with the absolute path to your uv installation-
Find the path with:
which uv
- Example macOS: `/Users/username/.local/bin/uv`
-
Example Windows:
C:\Users\username\AppData\Local\Microsoft\WindowsApps\uv.exe
-
- Replace
/PATH/TO/YOUR/PROJECT/joplin_mcp
with the absolute path to your project
Important: Claude Desktop needs the full path to
uv
as it cannot access shell environment variables. - Replace
๐ ๏ธ 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
create_note
Create a new note.
Parameters:
title
(string): Note titlebody
(string, optional): Note content in Markdownparent_id
(string, optional): ID of parent folderis_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 IDis_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 file
๐งช Development
Debug Mode
To start the server in debug mode:
MCP_LOG_LEVEL=debug mcp dev src/mcp/joplin_mcp.py
This 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](https://github.com/dweigend/joplin-mcp/issues).
Publisher info
More MCP servers built with Python
MCP server that exposes the Apollo.io API functionalities as tools
Enables IDEs like Cursor and Windsurf to analyze large codebases using Gemini's extensive context window.