Skip to content
VS Code

joplin mcp server for VS Code

io.github.jordanburke/joplin-mcp-server

Search, read, create, edit and sync Joplin notes and notebooks via a headless Joplin sidecar.

client:VS Code transport:stdio runtime:npm

Install joplin mcp server in VS Code

.vscode/mcp.json

{
  "inputs": [
    {
      "type": "promptString",
      "id": "joplin-token",
      "description": "JOPLIN_TOKEN",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-host",
      "description": "JOPLIN_HOST",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-port",
      "description": "JOPLIN_PORT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-profile",
      "description": "JOPLIN_PROFILE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-cli",
      "description": "JOPLIN_CLI",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-sync-target",
      "description": "JOPLIN_SYNC_TARGET",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-sync-path",
      "description": "JOPLIN_SYNC_PATH",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-sync-username",
      "description": "JOPLIN_SYNC_USERNAME",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-sync-password",
      "description": "JOPLIN_SYNC_PASSWORD",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-sync-region",
      "description": "JOPLIN_SYNC_REGION",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-sync-endpoint",
      "description": "JOPLIN_SYNC_ENDPOINT",
      "password": true
    },
    {
      "type": "promptString",
      "id": "joplin-sync-force-path-style",
      "description": "JOPLIN_SYNC_FORCE_PATH_STYLE",
      "password": true
    },
    {
      "type": "promptString",
      "id": "log-level",
      "description": "LOG_LEVEL",
      "password": true
    }
  ],
  "servers": {
    "joplin-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "joplin-mcp-server"
      ],
      "env": {
        "JOPLIN_TOKEN": "${input:joplin-token}",
        "JOPLIN_HOST": "${input:joplin-host}",
        "JOPLIN_PORT": "${input:joplin-port}",
        "JOPLIN_PROFILE": "${input:joplin-profile}",
        "JOPLIN_CLI": "${input:joplin-cli}",
        "JOPLIN_SYNC_TARGET": "${input:joplin-sync-target}",
        "JOPLIN_SYNC_PATH": "${input:joplin-sync-path}",
        "JOPLIN_SYNC_USERNAME": "${input:joplin-sync-username}",
        "JOPLIN_SYNC_PASSWORD": "${input:joplin-sync-password}",
        "JOPLIN_SYNC_REGION": "${input:joplin-sync-region}",
        "JOPLIN_SYNC_ENDPOINT": "${input:joplin-sync-endpoint}",
        "JOPLIN_SYNC_FORCE_PATH_STYLE": "${input:joplin-sync-force-path-style}",
        "LOG_LEVEL": "${input:log-level}"
      }
    }
  }
}

VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs

joplin mcp server in other clients