joplin-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JOPLIN_TOKEN | Yes | Your Web Clipper authorization token | |
| JOPLIN_BASE_URL | No | Base URL of the Joplin Web Clipper API | http://127.0.0.1:41184 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_notebooksA | List all Joplin notebooks (folders), with id, title and parent_id. |
| create_notebookA | Create a new notebook (folder). Use parent_id to nest it under an existing notebook, e.g. a client/project notebook. |
| update_notebookA | Rename and/or move a notebook. Only the fields provided are changed. |
| delete_notebookA | Delete a notebook by id, including all notes and sub-notebooks inside it. In Joplin this moves the notebook to the trash (or permanently deletes it if the trash is disabled in the app's settings). |
| list_notesA | List notes, optionally filtered to a single notebook. |
| search_notesA | Full-text search notes using Joplin's search syntax (e.g. 'title:foo', 'tag:bar'). |
| get_noteA | Fetch a single note's full content (including body) by id. |
| create_noteA | Create a new note. |
| update_noteA | Edit an existing note. Only the fields provided are changed. |
| get_resource_infoA | Fetch metadata for a Joplin resource (an attachment/image embedded in a note body, referenced there as ':/'), including its mime type and file extension. Use this before get_resource_file to pick a sensible file extension for the saved file. |
| get_resource_fileA | Download a Joplin resource's raw file (e.g. a screenshot embedded in a note) and save it to a local path, so it can then be viewed with a file-reading tool. Call get_resource_info first if you need the mime type to choose the save_path's extension. |
| get_resource_ocr_textA | Fetch the OCR-extracted text for a Joplin resource (e.g. text recognized inside a screenshot or scanned PDF/image attachment), without downloading the file itself. Requires Joplin's built-in OCR feature to be enabled (Options > General > "Enable document text extraction") and to have finished processing the resource. |
| delete_noteA | Delete a note by id. In Joplin this moves the note to the trash (or permanently deletes it if the trash is disabled in the app's settings). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool targets a distinct resource and action: notebooks (create/list/update/delete), notes (create/get/list/update/delete/search), and resources (info/file/OCR). There is no overlap in purpose, and descriptions clearly distinguish similar operations like get_note vs list_notes.
All tool names follow the same verb_noun pattern in snake_case (e.g., create_notebook, list_notes, get_resource_file). Pluralization is consistent for list operations, and verbs are uniform across resource types.
With 13 tools, the surface is well-scoped for a note-taking domain: full CRUD for notebooks and notes, plus search and resource handling. Each tool serves a clear purpose without unnecessary bloat.
The set covers all core note and notebook operations (create, read, update, delete, list, search), and resource retrieval is handled. Minor gaps exist: no single-notebook getter and no resource listing/deletion, but these are non-critical and agents can work around them.