ChatGPT Actions Local & HTTP MCP Self-hosted Joplin

Joplin for ChatGPT & MCP

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

private Joplin assistant authenticated
AI
ChatGPT or MCPYour chosen client
J
Guarded bridgeAuthenticate, validate, execute
Your JoplinYour profile and sync target
You Find my notes about the production migration. Tool joplin_search_notes {"query":"production migration"} {"success":true,"results":[{"title":"Migration runbook"}]}
ChatGPT Actions MCP tool schemas Duplicate guards Private Joplin API

Use Joplin where you already think and work.

Joplin remains the system of record. The bridge adds authenticated, structured interfaces without introducing another note store or requiring a permanent desktop session.

01

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 →
02

Connect any MCP client

Launch typed local stdio tools with no listener, or expose Streamable HTTP for notes, notebooks, tags, search, and attachments.

Explore the MCP tools →
03

Run Joplin without a desktop

Install Joplin Terminal, recurrent sync, MCP, and Actions as coordinated rootless services on a Linux host with one interactive installer.

Deploy the complete service →

Deploy the complete headless path.

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 →
  1. 1
    Choose storageConnect the headless profile to your existing Joplin sync target.
  2. 2
    Install servicesDeploy Joplin Terminal and the shared MCP/Actions adapter.
  3. 3
    Publish ActionsRoute only the authenticated Actions namespace through HTTPS.
  4. 4
    Generate the schemaValidate TLS, authentication, and live reads before opening ChatGPT.
  5. 5
    Use your notesSearch and change current Joplin data from a private Custom GPT.
headless-joplin.sh rootless systemd services
$ 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

Current notes, not another stale export.

Both direct interfaces use the same validated operation registry. Choose ChatGPT for conversation or MCP for any compatible client.

ChatGPT

Search and synthesize your knowledge

Find the relevant Joplin notes, read only the selected results, and turn current private context into a focused answer.

Capture

Turn a conversation into a note

Create a decision record, meeting follow-up, research summary, or checklist in the exact notebook you name.

Organize

Maintain notebooks and tags

Rename, move, tag, restore, and trash exact objects while duplicate identities are rejected instead of silently multiplied.

MCP

Bring Joplin into an agent workspace

Let an MCP-capable editor or coding assistant inspect runbooks and update targeted notes without exporting the whole archive.

Resources

Work with attachments through MCP

Read, upload, replace, and traverse note-resource relationships with bounded payloads and explicit destructive operations.

Always on

Keep the assistant available headlessly

Run recurrent Joplin sync and the adapter as user services on your server while desktop and laptop clients come and go.

Your assistant should adapt to your notes, not own them.

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 →
Clients Private Custom GPT or MCP client Separate transports over one shared, validated operation registry
Boundary Dedicated Actions and MCP credentials Independent tokens, authenticated routes, and bounded payloads
Joplin Loopback Data API The upstream token and API never need public network exposure
Owner Your Joplin profile, sync target, encryption, and backups Remove the adapter without migrating or deleting your knowledge base

Use ordinary Markdown when the diff matters.

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.

  1. 1
    PullStart from current Joplin state.
  2. 2
    EditWork in plain Markdown with normal agent tools.
  3. 3
    DiffCompare base, local, and remote states.
  4. 4
    Dry-runReview the exact operation plan.
  5. 5
    PushGuard, apply, verify, and journal.
reviewed-note-change.sh stable JSON and exit codes
$ 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

Agents get explicit errors, not accidental damage.

Direct tools and file synchronization use different consistency models, but both expose failures instead of guessing or silently repeating writes.

No duplicate create retriesOccupied note, notebook, tag, and resource identities return the existing IDs and recommended update tool.
No ambiguous write replayA timed-out direct mutation is reported for inspection instead of being sent again.
No public Joplin APIRemote clients reach the authenticated adapter; Joplin stays on loopback.
No permanent note deletionNotes and notebooks move to normal Joplin trash and can be restored.
No silent file overwriteDivergent edits produce a three-way conflict bundle and exit code 2.
No hidden partial syncA journal blocks later file writes until recovery verifies what completed.

Bring your private notes into ChatGPT and MCP.

joplin-md-sync is an independent open-source project and is not affiliated with or endorsed by the Joplin project.