Skip to main content
Glama

Joplin MCP

An MCP server that exposes a Joplin note collection as a tool set, running as a stateful agent on Cloudflare Workers. Point an MCP client (Claude, etc.) at the deployed endpoint and it can browse notebooks and notes, and create/update/delete notes and notebooks directly against your own Joplin instance.

How it works

Every tool call goes straight to the Joplin Data API on your live instance — there's no index or cache in between.

MCP client ──HTTP/SSE──► Worker (/mcp) ──► JoplinMCP (Durable Object)
                                                  │
                                    JoplinClient ──► Joplin Data API

JoplinMCP is a McpAgent hosted on a Durable Object.

Related MCP server: Capacities MCP Worker

Tools

Tool

Description

get_note

Fetch a single note by ID — title, body, metadata

list_notebooks

List all notebooks with IDs and names

list_notes

List notes in a given notebook

create_note

Create a note in a notebook

update_note

Update a note's title, body, or notebook

delete_note

Permanently delete a note

create_notebook

Create a notebook, optionally nested

update_notebook

Rename or move a notebook

delete_notebook

Move a notebook (and its notes) to trash

Setup

npm install

Before deploying, set vars.JOPLIN_CLIENT_URL in wrangler.jsonc to the base URL of your Joplin Data API.

JOPLIN_API_TOKEN (a Joplin Data API token) is read from Cloudflare's Secrets Store, not a plain Wrangler secret. Create it once per account and it's reusable across Workers:

wrangler secrets-store secret create <store-id> \
  --name joplin-token --scopes workers --remote

wrangler.jsonc then binds it via secrets_store_secrets:

"secrets_store_secrets": [
  { "binding": "JOPLIN_API_TOKEN", "store_id": "<store-id>", "secret_name": "joplin-token" }
]

For local dev, create a local-only secret with the same name (omit --remote) so wrangler dev has something to read.

See CLAUDE.md for the full architecture and binding reference.

Development

npm run dev         # wrangler dev — local development with hot reload
npm run test        # vitest run
npm run typecheck   # tsc --noEmit

Deploy

npm run deploy

Or connect this repository to a Cloudflare Worker for git-based deploys. Either way, the joplin-token secret must exist in the account's Secrets Store — it is never stored in the repo.

Stack

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    A
    maintenance
    Self-hosted semantic memory layer for Claude and MCP-compatible AI clients. Store notes, search by meaning not keywords, and recall relevant context automatically across sessions. Runs free on Cloudflare Workers, D1, Vectorize, and Workers AI
    0
    713
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to interact with Joplin notes, notebooks, and tags through a standardized MCP interface, supporting CRUD operations, search, and organization.
    19
    154
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Unofficial MCP server that enables interaction with NotebookLM through a Cloudflare Worker, supporting tools for notebooks, sources, chat, notes, and more. It uses OAuth authentication and stateless encrypted credential envelopes.
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

  • Read and write your Fresh Jots notes from Claude, Cursor, and any MCP client.

  • Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/crunchypancake1/joplin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server