Joplin MCP Server
by jordanburkeio.github.jordanburke/joplin-mcp-serverv2.3.3
Search, read, create, edit and sync Joplin notes and notebooks via a headless Joplin sidecar.
context tax
queued
security
queued
cold start
queued
freshness
Active26d ago
Install Joplin MCP server
Install in Claude Code
claude mcp add joplin-jordanburke -e JOPLIN_TOKEN='<joplin-token>' -e JOPLIN_SYNC_PASSWORD='<joplin-sync-password>' -- npx -y joplin-mcp-serverInstall in Cursor
{
"mcpServers": {
"joplin-jordanburke": {
"command": "npx",
"args": [
"-y",
"joplin-mcp-server"
],
"env": {
"JOPLIN_TOKEN": "<joplin-token>",
"JOPLIN_SYNC_PASSWORD": "<joplin-sync-password>"
}
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"joplin-jordanburke": {
"command": "npx",
"args": [
"-y",
"joplin-mcp-server"
],
"env": {
"JOPLIN_TOKEN": "<joplin-token>",
"JOPLIN_SYNC_PASSWORD": "<joplin-sync-password>"
}
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"joplin-jordanburke": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"joplin-mcp-server"
],
"env": {
"JOPLIN_TOKEN": "<joplin-token>",
"JOPLIN_SYNC_PASSWORD": "<joplin-sync-password>"
}
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"joplin-jordanburke": {
"command": "npx",
"args": [
"-y",
"joplin-mcp-server"
],
"env": {
"JOPLIN_TOKEN": "<joplin-token>",
"JOPLIN_SYNC_PASSWORD": "<joplin-sync-password>"
}
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| JOPLIN_TOKEN | — | yes | Joplin API token, for external mode only (see JOPLIN_HOST). Sidecar mode manages its own token and ignores this. |
| JOPLIN_HOST | — | — | Connect to an existing Joplin instance at this host instead of running a sidecar |
| JOPLIN_PORT | — | — | Port of the existing Joplin instance (default: 41184) |
| JOPLIN_PROFILE | — | — | Joplin data directory for sidecar mode (default: ~/.config/joplin-mcp) |
| JOPLIN_CLI | — | — | Path to the joplin CLI binary, overriding auto-detection |
| JOPLIN_SYNC_TARGET | — | — | Sync target: none, filesystem, webdav, nextcloud, joplin-cloud, joplin-server, s3, dropbox, onedrive (default: none) |
| JOPLIN_SYNC_PATH | — | — | Sync target URL or path; the bucket name for the s3 target |
| JOPLIN_SYNC_USERNAME | — | — | Sync username or email; the access key for the s3 target |
| JOPLIN_SYNC_PASSWORD | — | yes | Sync password; the secret key for the s3 target |
| JOPLIN_SYNC_REGION | — | — | S3 region (default: us-east-1) |
| JOPLIN_SYNC_ENDPOINT | — | — | S3 endpoint URL for non-AWS providers such as Backblaze B2, MinIO, R2 or Wasabi (default: https://s3.amazonaws.com/) |
| JOPLIN_SYNC_FORCE_PATH_STYLE | — | — | Use path-style S3 URLs, which self-hosted providers such as MinIO usually require: true or false (default: false) |
| LOG_LEVEL | — | — | Log verbosity: debug, info, warn or error (default: info) |
Freshness
Active — last maintenance signal 26d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-09-13 · 26d ago · GitHub
Latest release
2026-08-31 · 40d ago · GitHub · v2.3.3
Package published
no data · npm/PyPI
Registry entry updated
2026-08-31 · 40d ago · official registry · v2.3.3
FAQ
›How do I install the Joplin MCP server in Claude Code?
Run: claude mcp add joplin-jordanburke -e JOPLIN_TOKEN='<joplin-token>' -e JOPLIN_SYNC_PASSWORD='<joplin-sync-password>' -- npx -y joplin-mcp-server. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Joplin require an API key?
Yes. It expects JOPLIN_TOKEN, JOPLIN_SYNC_PASSWORD, of which 2 are secrets.
›Can I use Joplin as a remote (hosted) MCP server?
No hosted endpoint is published; it runs locally over stdio.
›Is Joplin in the official MCP registry?
Yes, as io.github.jordanburke/joplin-mcp-server.
Alternatives to Joplin
Other browser automation MCP servers.