LLMs reading my Obsidian journal
Librechat getting context from Obsidian
Obsidian + LLM Life Coach
For as long as I can remember, I’ve been making notes, journaling and having those feed into planning.
Since 2023, I’ve become a pretty heavy ChatGPT user, using it for therapy, coding, research and all kinds of other weird things to see how I can push it’s limits. Naturally, I’ve started to wonder how I can better merge these two worlds of journaling and LLMs to create an even more potent ideas.
Here’s the idea. Have the LLM:
- Read my journal/notes
- Summarize what’s been going on in my life
- Reflect it back to me and give me an “objective” perspective and some growth ideas.
My note taking tool of choice is Obsidian, a fantastic tool with a very large community of plugins.
To illustrate how much I use Obsidian, here is my latest Obsidian graph with all my hand curated notes where I also archive all my ChatGPT conversations:

Privacy Concerns
LLMs work by training on real text content on the internet to improve their output. A great way for them to improve their responses is training on the actual conversations that people are having with their LLMs. Do we really want our private conversations be part of a new model that other people interact with? Not really…
To prevent that, I could spin up a local LLM like Deepseek, but that requires a decent GPU or dedicated Macbook which ain’t cheap. However, the Terms and Conditions of most providers won’t build profiles or train the LLMs using data via the API. The middleground I’ve found is this: using an open client ( Librechat ) that allows me to use the APIs. I’ve only recently migrated to using LibreChat instead of the ChatGPT web client.
Architecture
Overall
Ultimately we want to connect the Librechat instance in docker on my laptop, to my obsidian instance also running on my machine.
- There is a really nice existing obsidian mcp out there. I wrote PR to allow it to pull from recent Obsidian notes
- That MCP uses the Obsidian REST api plugin to access the data.
Since LibreChat conveniently is already deployed by Docker-compose, we can override it to deploy the ObsidianMCP as a new service to keep everything all nicely contained together.
Here’s the overall design:
Checkout the IcePanel C4 Diagram instance to click around.
In Docker Compose
The main complicating factor is that most MCPs use stdio to communicate with the client. Since we have the MCP sitting in a container, we need to communicate over a network. Thankfully, there is this cool project called SuperGateway that will proxy MCPs to Server Side Events when they only speak stdio. So we deploy both the original Obisidian MCP, with SuperGateway as the proxy within the same container.
Docker Compose Diagram in IcePanel
Getting Started
Steps in Obsidian:
- In your Obsidian instance, install the Obsidian Local Rest API using the Obsidian Plugin manager and turn it on.
Steps in Librechat:
- First get Librechat repo setup using the instructions on their site using Docker Compose. Including adding your API keys to
.env
and getting yourdocker-compose.override.yml
setup to uselibrechat.yaml
. Doc ref - Copy the code below and add it into the example
docker-compose.override.yml
file. This will create theobsidian-mcp
next to the Librechat container so they can talk to each other:
supergateway-obsidian:
image: python:3.12-alpine
container_name: supergateway-obsidian
command: >
sh -c "
apk add --no-cache nodejs npm git socat &&
socat TCP4-LISTEN:27124,fork TCP4:host.docker.internal:27124 &
pip install git+https://github.com/jevy/mcp-obsidian.git@period-tools &&
npm install -g supergateway &&
supergateway --stdio 'mcp-obsidian' --port 8001 --ssePath /sse --messagePath /message --cors --logLevel info
"
ports:
- "8001:8001"
restart: unless-stopped
environment:
- OBSIDIAN_API_KEY=${OBSIDIAN_API_KEY}
extra_hosts:
- "host.docker.internal:host-gateway"
- Add this to your
librechat.yaml
so Librechat knows about theobsidian-mcp
.
mcpServers:
perplexity:
url: http://supergateway-perplexity:8000/sse
- Then
docker-compose restart
and everything should be working great! Add a new “Agent” and add the obsidian tools you want to be available to said agent.
It works!
I now have super powerful suggestions and reflection based on my own journal entries and additional context from my Obsidian notes:

One of my favourite things with writing these posts is that there are always a few folks who reach out and I get to connect with.
Hit me up! jevin@quickjack.ca.