Search, read, create, edit and sync Joplin notes and notebooks via a headless Joplin sidecar.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A self-contained MCP (Model Context Protocol) server for Joplin. Bundles the Joplin Terminal CLI as a dependency β no desktop app, no global installs, no external processes to manage. Coexists with Joplin Desktop via automatic port negotiation.
That's it. The server spawns its own Joplin Terminal instance (sidecar mode), syncs to your configured backend, and exposes your notes via MCP.
The server bundles joplin as an npm dependency and manages its own Joplin Terminal process. No Joplin desktop app needed β the sidecar handles everything: data storage, sync, and the REST API.
If Joplin Desktop is already running, the sidecar automatically finds a free port (scanning 41184-41193) and runs alongside it. Both instances stay in sync if configured with the same sync target.
The Joplin CLI is resolved in this order: JOPLIN_CLI env var > node_modules/.bin/joplin (bundled) > global install > npx fallback.
Data is stored in ~/.config/joplin-mcp by default (separate from any desktop Joplin install).
Connects to an existing Joplin instance instead of spawning a sidecar. Activated by setting JOPLIN_HOST or JOPLIN_PORT.
| Variable | Description | Default |
|---|---|---|
JOPLIN_TOKEN | API token (required) | -- |
JOPLIN_HOST | Connect to existing Joplin at this host (skips sidecar) | -- |
JOPLIN_PORT | Connect to existing Joplin on this port (skips sidecar) | -- |
JOPLIN_CLI | Path to joplin CLI binary (overrides auto-detection) | -- |
JOPLIN_PROFILE | Joplin data directory for sidecar mode | ~/.config/joplin-mcp |
JOPLIN_SYNC_TARGET | Sync target type | none |
JOPLIN_SYNC_PATH | Sync target URL/path | -- |
JOPLIN_SYNC_USERNAME | Sync username/email | -- |
JOPLIN_SYNC_PASSWORD | Sync password | -- |
JOPLIN_SYNC_REGION | S3 region | us-east-1 |
JOPLIN_SYNC_ENDPOINT | S3 endpoint URL (for non-AWS providers) | AWS S3 |
JOPLIN_SYNC_FORCE_PATH_STYLE | Use path-style S3 URLs (true/false) | false |
LOG_LEVEL | Log level: debug, info, warn, error | info |
The --profile option and the --sync-path of a filesystem sync target support ~ and environment variable expansion for cross-platform compatibility. Other targets take a URL or bucket name in --sync-path, so it is passed through untouched:
This works in MCP client configs (.mcp.json, Claude Desktop) where shell expansion isn't available.
WSL auto-detection: On WSL, if a ~/ path is empty or missing, the server automatically checks the corresponding Windows path at /mnt/c/Users/<user>/.... This means --sync-path ~/OneDrive/Apps/Joplin just works on WSL without needing the full /mnt/c/... path.
| Target | Required Options |
|---|---|
none | (default, no sync) |
filesystem | --sync-path /path/to/dir |
webdav | --sync-path <url> --sync-username --sync-password |
nextcloud | --sync-path <url> --sync-username --sync-password |
joplin-cloud | --sync-username --sync-password |
joplin-server | --sync-path <url> --sync-username --sync-password |
s3 | --sync-path <bucket> --sync-username <access-key> --sync-password <secret-key> |
dropbox | (OAuth flow) |
onedrive | (OAuth flow) |
The s3 target defaults to AWS (https://s3.amazonaws.com/, region us-east-1). Point it at any
S3-compatible provider with --sync-region and --sync-endpoint:
Cloudflare R2 and Wasabi work the same way β set --sync-endpoint to the provider's S3 endpoint.
The repository includes a .mcp.json that works with Claude Code's env var expansion:
Set JOPLIN_TOKEN in your shell (add to ~/.bashrc or ~/.zshrc):
Claude Desktop does not support ${VAR} expansion. Provide values directly:
Running in WSL? The sidecar architecture makes this straightforward β no Windows port forwarding needed. The server auto-detects WSL and handles path resolution between Linux and Windows filesystems.
Both your Windows Joplin desktop and the WSL sidecar sync to the same OneDrive folder. They see the same notes without needing to talk to each other directly.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/joplin-mcp-server)<a href="https://allmcps.com/mcp/joplin-mcp-server"><img src="https://allmcps.com/api/badge/joplin-mcp-server?style=directory" alt="Joplin MCP Server on AllMCPs" /></a>