About Joplin MCP Server
Joplin MCP Server is an MCP server published by dweigend in the AI category: a Model Context Protocol (MCP) Server for https://joplinapp.org/ that enables note access through the https://modelcontextprotocol.io. Perfect for integration with AI assistants like Claude.
The repository has 94 stars and 17 forks, with the last commit 2 months ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
npx joplin-mcp-serverclaude mcp add joplin-mcp-server -- npx -y joplin-mcp-servernpx -y joplin-mcp-serveruvx joplin-mcp-serverpip install joplin-mcp-serverThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Joplin MCP Server
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 22 hours ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
README
📝 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
🚀 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/uvwith 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
- Find the path with:
- 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. - 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
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.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.
README fetched from the repository 22 hours ago. The original is authoritative.