Celestia
A persona-driven AI assistant that reads, searches, and writes an Obsidian Markdown knowledge vault using a typed MCP filesystem core.
README

Celestia
A persona-driven AI assistant over an Obsidian knowledge vault, wired through a typed MCP filesystem core.
What it is
Celestia is an assistant that reads, searches, and writes a Markdown knowledge vault as its working memory. Ask it to walk you into your day, prep you for a meeting, or file an update, and it opens the relevant notes first, reasons over what it found, and only then answers. When it writes, it routes the change to the note that owns that piece of truth, appends rather than overwrites, and tells you exactly what it touched.
The durable engineering here is the vault, the persona, and the tool layer between them. The chat window is an off-the-shelf open-source front end that exists to make the demo look like a product; it is deliberately replaceable and lives outside this repo. Underneath Celestia sits Cortex, the self-hosted knowledge platform this pattern was built for.
What is real, and what is sanitized
Being precise about this, because trust starts here.
Real: the architecture, and the system behind it. The MCP-filesystem-over-a-Markdown-vault pattern, the persona design, the note-ownership routing, and the write discipline are the actual engineering. The same system runs in my daily production over my own vault; this repo is a sanitized demo of it, so the design is on display without exposing the private vault it normally works against.
Sanitized: everything on screen. The clips run against a throwaway demo vault populated with a fictional company (a family-run machining shop) and fictional people. No real personal notes, values, health, finance, or private content appears anywhere. The vault content is fabricated for the demo; the machinery around it is not.
Demos
Three short clips, one capability each, recorded live against the demo vault.
https://github.com/user-attachments/assets/5e982028-5579-4712-a8c9-d2e243e3a143
What to watch: one request fans out into several reads across the vault (dashboard, inbox, project tasks) before a single word is written, and comes back as a short brief built around the few decisions that actually matter today, not a dump of everything.
https://github.com/user-attachments/assets/3319654e-62ce-4698-80af-49d5a247b643
What to watch: a spoken-style business update gets written into the project note that owns it, appended to the log rather than overwriting anything, and the assistant reports back the exact file it changed and what it recorded.
https://github.com/user-attachments/assets/630a1abe-99a8-42a3-abe5-52d687f4f2da
What to watch: asked to prep for a meeting, it pulls the meeting note and the surrounding context and briefs the people dynamics in the room, not just the agenda facts, while keeping sensitive threads out of anything meant for other eyes.
How it works
The system is a small set of deliberate design decisions, not a framework.
- The vault is the product; the chat UI is not. In the recorded demo the face is an off-the-shelf open-source chat front end (LibreChat), which is external and not part of this repo. It is disposable by design: swap it for any MCP-speaking client or a custom web front end and nothing underneath changes, because the assistant's real interface is the tool layer, not the window.
- The agent gets typed tools, not raw access. A Model Context Protocol filesystem server exposes a narrow set of operations over the vault:
read_file,write_file,list_directory,search_files,directory_tree. Every read and every write goes through that boundary, which keeps what the agent does observable and constrained. This is retrieval over a live Markdown filesystem, not a vector database. - Note-ownership routing. Each piece of truth has an owning note: a business update belongs to its project card, an ongoing responsibility to its area note, a raw capture to the inbox. The assistant decides ownership before it writes, so state lands where it can be found again instead of in a scratchpad.
- Append, do not overwrite. Reads surface; writes append to a log section rather than replacing prior content. History is preserved and every change is reconstructable.
- The persona is an engineered artifact. Voice, working modes (brief me, prep me, file this), time anchoring, and discretion rules (sensitive threads never leak into shared documents) are specified in the system prompt, so behavior is repeatable rather than a matter of mood.
- The human stays the editor. New content lands in the inbox first, nothing is ever deleted, and after any write the assistant confirms what changed and where in one line. Automation proposes and records; the person decides and purges.
flowchart TB
U["User"] --> FACE["Chat face<br/>LibreChat, external (replaceable)"]
FACE --> AG["Assistant persona<br/>engineered system prompt"]
AG --> R{"Read or write?"}
R -->|"surface: read / search / list"| MCP["MCP filesystem server<br/>typed tools"]
R -->|"write: route to owning note,<br/>append not overwrite,<br/>confirm what and where"| MCP
MCP <--> V[("Obsidian Markdown vault")]
V -. "same pattern, production instance" .- CX["Cortex platform"]
Celestia is one instance of a pattern reused across several systems: a persona, plus a typed MCP tool layer, plus a routing or policy boundary written in code, on a disposable chat face. Its siblings put the same shape over accounting data, a podcast archive, and a live trading fleet. See the portfolio index for the others.
Stack
In this repo:
- MCP filesystem server (
mcp_server.py) over an Obsidian Markdown vault, exposing the five typed read / write / list / search / tree tools behind one sandbox guard. - Note-ownership and append-vs-surface routing (
routing.py) as the write discipline in front of the tools. - Persona and system-prompt design (
persona/) carrying voice, modes, time anchoring, and discretion rules. - A throwaway demo vault (
demo_vault/) of fictional content, plus a standard-library self-test (test_flow.py).
External (not included here):
- Anthropic Claude API as the model behind the assistant.
- An off-the-shelf chat front end (LibreChat) as the disposable product face used to record the demo. Any MCP-speaking client works; the face is not what this repo ships.
Correctness: grounded and auditable
This system's guarantee is not a retrieval score, and it would be dishonest to dress it up as one. Celestia is trustworthy because it is grounded and auditable:
- It reads live vault state before answering, so replies reflect what is actually on disk rather than a guess.
- Writes are explicit and reversible: appended, never overwritten, and reported back file-by-file, so there is always a clear record of what the assistant changed.
- Ownership routing means a written fact can be found where it belongs, which is what makes the state honest over time.
Where correctness does reduce to a measurable retrieval problem, the rigor lives in the sibling that can carry it: the podcast-archive assistant ships a hand-labeled gold set with recall@k and MRR numbers across keyword, dense, and hybrid retrieval. Celestia's job is different, so it makes a different, more modest claim.
How it's built
The architecture, the tool boundary, the routing rules, and the persona spec are mine; the code was produced by directing AI tooling (primarily Claude Code) and then read, run, and reviewed before anything shipped.
Status and contact
Tier: Demo. A recorded, working demo of a pattern that runs in production underneath. The platform it sits on is jv-cortex-platform.
- Portfolio: github.com/janvrsinsky
- LinkedIn: linkedin.com/in/janvrsinsky
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。