Tessera MCP
Local MCP server for semantic search over non-markdown Obsidian attachments — PDFs, images, audio, CSV, code. The sibling to Obsidian Semantic MCP that covers everything markdown cannot see.
Tessera is the attachment layer for the Obsidian memory stack. obsidian-semantic-mcp already handles .md files. Tessera handles everything else: PDFs become searchable page by page, images go through OCR and local vision description, audio files get transcribed with timestamps via whisper.cpp, and HTML, CSV, and code files each get a sensible loader.
Everything is stored as 768-dimension embeddings in a local SQLite database. Cosine similarity search returns ranked chunks with source path and page or timestamp metadata. Claude reaches it through the MCP protocol — ask “what was that diagram I screenshotted last month?” and tessera answers.
Built in Rust using rmcp. Zero cloud dependencies — Ollama for embeddings and vision, whisper.cpp for audio, all running locally.
What it does
- PDFs: text extracted per page via
lopdf - Images: OCR and text description via local Ollama vision model
- Audio: full transcript with timestamps via local whisper.cpp
- HTML, CSV, code: per-type loaders with sensible chunking
- Single
tessera index <vault>command — incremental on subsequent runs - Registered with Claude Code via
claude mcp add tessera
Status
Active. v0.4.0. In the forge alongside Obsidian Semantic MCP as the full vault memory stack.