Enables loading configuration from environment files, supporting custom environment file paths for flexible configuration management.
Provides tools for interacting with Joplin notebooks and notes, including listing notebooks, searching notes, reading notebook contents, and accessing individual or multiple notes with their full content.
Server implementation is built on Node.js, allowing the MCP server to run in Node.js environments.
Enables installation and execution via npm's package manager, supporting both local installation and execution via npx without installation.
Joplin MCP Server
This is a Node.js implementation of an MCP (Model Context Protocol) server for Joplin.
Installation
Configuration
Create a .env
file with the following variables:
You can find your Joplin token in the Joplin desktop app under: Tools > Options > Web Clipper
Usage
Local Development
Start the server:
You can also specify a custom environment file:
Using npx (Recommended)
After publishing to npm, you can use npx to run the server without installation:
Command Line Options
MCP Client Configuration
Usage in Augment Code:
Usage in mcp.json (Cursor and other tools):
Or using environment file:
Legacy Usage (if installed locally)
Usage in Augment Code:
name: joplin
command: node /path/to/your/mcp-joplin/index.js --env-file /path/to/your/mcp-joplin/.env
Usage in mcp.json (cursor other tools)
Logging
The server logs all incoming commands and outgoing responses. Logs are stored in two places:
- Console output: Basic information is displayed in the console
- Log files: Detailed logs are saved in the
logs
directory with timestamps
You can adjust the log level by setting the LOG_LEVEL
environment variable:
Available log levels (from most to least verbose):
debug
: All messages including detailed command and response datainfo
: Standard operational messages (default)warn
: Warnings and errors onlyerror
: Only error messages
Available Tools
list_notebooks
Retrieves the complete notebook hierarchy from Joplin.
search_notes
Searches for notes in Joplin and returns matching notebooks.
Parameters:
query
: The search query string
Important: Note the difference between note titles and IDs. When using the
read_notebook
command, you must use the notebook ID (a long alphanumeric string), not the notebook title.
read_notebook
Reads the contents of a specific notebook.
Parameters:
notebook_id
: The ID of the notebook to read
Common Error: If you try to use a note title (like "todo") instead of a notebook ID, you'll get an error. Always use the notebook ID (the long alphanumeric string) shown in the search results or notebook list.
read_note
Reads the full content of a specific note.
Parameters:
note_id
: The ID of the note to read
Note: The
read_note
command shows the full content of a specific note, while theread_notebook
command shows a list of notes in a notebook. Usesearch_notes
to find notes and get their IDs.
read_multinote
Reads the full content of multiple notes at once.
Parameters:
note_ids
: An array of note IDs to read
Tip: When you search for notes or view a notebook, you'll see a suggestion for using
read_multinote
with the exact IDs of the notes found. This makes it easy to read multiple related notes at once.
Development
Local Development Setup
To test the npx command locally during development:
After linking, you can test your local changes immediately:
Making Changes
- Edit any
.js
files in the project - Run tests:
npm test
- Test the CLI:
npx joplin-mcp-server --help
No build step is required - changes are immediately available through the npm link.
Running Tests
Create a .env.test.local
file with your test configuration, then run:
Publishing to npm
To make this package available via npx:
- Update the version in
package.json
- Run
npm publish
Users can then run it with npx joplin-mcp-server
Unlinking (if needed)
To remove the local link:
License
MIT
This server cannot be installed
Joplin MCP Server
Related MCP Servers
- Python
- -securityAlicense-qualityMarineTraffic MCP ServerLast updated -1TypeScriptMIT License
- RustMIT License
- PythonMIT License