Talk to your notes in ChatGPT
Give a private Custom GPT live access to search, read, create, update, move, tag, and trash exact Joplin objects through generated Actions.
Configure your Joplin GPT →ChatGPT Actions Local & HTTP MCP Self-hosted Joplin
Search, read, create, organize, and update your own Joplin notes from the assistants you already use. Connect ChatGPT, launch a local MCP process over stdio with no listener, or deploy guarded HTTP interfaces while keeping Joplin, its sync target, and its Data API under your control.
Open source Private by design Desktop optional
You Find my notes about the production migration.
Tool joplin_search_notes {"query":"production migration"}
{"success":true,"results":[{"title":"Migration runbook"}]}
One knowledge base, direct agent access
Joplin remains the system of record. The bridge adds authenticated, structured interfaces without introducing another note store or requiring a permanent desktop session.
Give a private Custom GPT live access to search, read, create, update, move, tag, and trash exact Joplin objects through generated Actions.
Configure your Joplin GPT →Launch typed local stdio tools with no listener, or expose Streamable HTTP for notes, notebooks, tags, search, and attachments.
Explore the MCP tools →Install Joplin Terminal, recurrent sync, MCP, and Actions as coordinated rootless services on a Linux host with one interactive installer.
Deploy the complete service →From sync target to private GPT
The installer coordinates Joplin Terminal and the agent adapter. You choose the Joplin sync target and the HTTPS publishing layer; the upstream Data API never needs to leave loopback.
Review the deployment boundaries →$ set -o pipefail
$ curl --proto '=https' --tlsv1.2 --fail \
--silent --show-error --location \
https://raw.githubusercontent.com/kogeler/\
joplin-md-sync/main/scripts/joplin_terminal_service/\
install_joplin_terminal.py | python3 - \
--sync-target nextcloud \
--sync-location https://cloud.example/Joplin \
--sync-username user
OK joplin-terminal.service active
OK joplin-md-sync.service active
OK separate MCP and Actions tokens created
Useful every day
Both direct interfaces use the same validated operation registry. Choose ChatGPT for conversation or MCP for any compatible client.
Find the relevant Joplin notes, read only the selected results, and turn current private context into a focused answer.
Create a decision record, meeting follow-up, research summary, or checklist in the exact notebook you name.
Rename, move, tag, restore, and trash exact objects while duplicate identities are rejected instead of silently multiplied.
Let an MCP-capable editor or coding assistant inspect runbooks and update targeted notes without exporting the whole archive.
Read, upload, replace, and traverse note-resource relationships with bounded payloads and explicit destructive operations.
Run recurrent Joplin sync and the adapter as user services on your server while desktop and laptop clients come and go.
Control is the feature
Keep the Joplin clients, sync provider, encryption choices, profile, and backups you already trust. The bridge is a replaceable open-source adapter, not a new proprietary knowledge store.
Read the security contract →A second interface for review-heavy work
Direct tools are ideal for current, targeted operations. For broad changes, repository context, or Git review, pull selected Joplin notebooks to files and approve the exact push plan.
$ joplin-md-sync pull --root ./notes --json
OK remote and base refreshed
$ joplin-md-sync diff --root ./notes \
--three-way --unified
1 note body changed locally
$ joplin-md-sync push --root ./notes \
--dry-run --json
PENDING_ACTIONS push_update_remote
$ joplin-md-sync push --root ./notes --json
OK applied 1, failed 0
Predictable failure boundaries
Direct tools and file synchronization use different consistency models, but both expose failures instead of guessing or silently repeating writes.
Keep Joplin. Add the interfaces you need.