# joplin-mcp-server

Lets your coding agent work with Joplin notes and notebooks: look things up, read them, write new ones, edit existing ones. Handy when your notes live in Joplin.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 8
- Author: jordanburke
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/jordanburke/joplin-mcp-server
- Updated: 2026-09-13
- HTML: https://affpapa.org/en/nevibecode/mcp/jordanburke-joplin-mcp-server

## What it does

The server runs its own Joplin Terminal instance as a sidecar and exposes it over MCP. You do not need the desktop app, and nothing gets installed globally. When Joplin Desktop is already up, the sidecar picks a free port between 41184 and 41193 and runs next to it. Note data sits in `~/.config/joplin-mcp` by default, apart from any desktop install.

Start it with `npx joplin-mcp-server --token your_joplin_token`. The token is required. Sync is configured through `--sync-target` and `--sync-path`, with filesystem, webdav, nextcloud, joplin-cloud, joplin-server, s3, dropbox and onedrive supported. Filesystem paths accept `~` and environment variables, and on WSL the server falls back to the matching Windows path when `~/` is empty. To talk to an instance that is already running, set `JOPLIN_HOST` or `JOPLIN_PORT` and the sidecar stays off.

No token means no server, so sort that out first. Transport defaults to stdio; HTTP comes with `--transport http` on port 3000.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `JOPLIN_TOKEN`, `JOPLIN_HOST`, `JOPLIN_PORT`, `JOPLIN_PROFILE`, `JOPLIN_CLI`, `JOPLIN_SYNC_TARGET`, `JOPLIN_SYNC_PATH`, `JOPLIN_SYNC_USERNAME`, `JOPLIN_SYNC_PASSWORD`, `JOPLIN_SYNC_REGION` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env JOPLIN_TOKEN=<JOPLIN_TOKEN> --env JOPLIN_HOST=<JOPLIN_HOST> --env JOPLIN_PORT=<JOPLIN_PORT> --env JOPLIN_PROFILE=<JOPLIN_PROFILE> --env JOPLIN_CLI=<JOPLIN_CLI> --transport stdio jordanburke-joplin-mcp-server -- npx -y joplin-mcp-server
```
Replace <…> with your own values. 8 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add jordanburke-joplin-mcp-server --env JOPLIN_TOKEN=<JOPLIN_TOKEN> --env JOPLIN_HOST=<JOPLIN_HOST> --env JOPLIN_PORT=<JOPLIN_PORT> --env JOPLIN_PROFILE=<JOPLIN_PROFILE> --env JOPLIN_CLI=<JOPLIN_CLI> -- npx -y joplin-mcp-server
```
Replace <…> with your own values. 8 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "jordanburke-joplin-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "joplin-mcp-server"
            ],
            "env": {
                "JOPLIN_TOKEN": "<JOPLIN_TOKEN>",
                "JOPLIN_HOST": "<JOPLIN_HOST>",
                "JOPLIN_PORT": "<JOPLIN_PORT>",
                "JOPLIN_PROFILE": "<JOPLIN_PROFILE>",
                "JOPLIN_CLI": "<JOPLIN_CLI>"
            }
        }
    }
}
```
Replace <…> with your own values. 8 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "jordanburke-joplin-mcp-server": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "joplin-mcp-server"
            ],
            "env": {
                "JOPLIN_TOKEN": "<JOPLIN_TOKEN>",
                "JOPLIN_HOST": "<JOPLIN_HOST>",
                "JOPLIN_PORT": "<JOPLIN_PORT>",
                "JOPLIN_PROFILE": "<JOPLIN_PROFILE>",
                "JOPLIN_CLI": "<JOPLIN_CLI>"
            }
        }
    }
}
```
Replace <…> with your own values. 8 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e JOPLIN_TOKEN=<JOPLIN_TOKEN> -e JOPLIN_HOST=<JOPLIN_HOST> -e JOPLIN_PORT=<JOPLIN_PORT> -e JOPLIN_PROFILE=<JOPLIN_PROFILE> -e JOPLIN_CLI=<JOPLIN_CLI> jordanburke-joplin-mcp-server npx -y joplin-mcp-server
```
Replace <…> with your own values. 8 more environment variables are in the server README

## When to use it
- find a note by phrase without opening Joplin
- save an agent answer as a new note
- edit text inside an existing notebook
- keep notes in sync across machines
- reach a Joplin instance on another host

## Example prompts
- Find my Joplin notes about deployment and show the latest one
- Create a note called "Weekly summary" in the Work notebook
- Read the API note and append a task list to it

## Similar
- [Reactive Resume](https://affpapa.org/en/nevibecode/mcp/reactive-resume.md) — MCP server · ★ 44874
- [screenpipe](https://affpapa.org/en/nevibecode/mcp/screenpipe.md) — MCP server · ★ 22053
- [Inbox Zero](https://affpapa.org/en/nevibecode/mcp/inbox-zero.md) — MCP server · ★ 12791
- [kaneo](https://affpapa.org/en/nevibecode/mcp/kaneo.md) — MCP server · ★ 9602
- [Mindwtr](https://affpapa.org/en/nevibecode/mcp/mindwtr.md) — MCP server · ★ 2318
- [Azure DevOps (ADO)](https://affpapa.org/en/nevibecode/mcp/azure-devops-ado.md) — MCP server · ★ 2067

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
