DEV Community

Jason Jeong
Jason Jeong

Posted on

I'm a designer, not a developer. I built an MCP server for Claude Desktop with Claude Code.

I'm a product designer with 11 years of experience. This is a side project I've been building nights and weekends — and Claude Code wrote all the Python.

The problem

I manage hundreds of documents across multiple projects. PRDs, decision logs, meeting notes, research reports. Every time I started a new Claude Desktop session, I had to re-explain everything. "We decided on OAuth 2.0 last month." "The mobile app uses this API." Over and over.

Claude Desktop can read files you attach, but it can't search across your whole workspace or remember anything between sessions.

What I built

Tessera is a Python MCP server that indexes your local documents into a vector store (fastembed + LanceDB). Claude Desktop searches them automatically via MCP when you ask a question.

The key features:

  • Hybrid search — semantic + keyword search across all your docs
  • Cross-session memory — tell Claude to remember something, it persists to the next conversation
  • Auto-learn — save and index new knowledge mid-conversation
  • Knowledge graph — Mermaid diagrams showing how documents connect
  • 15 MCP tools — search, memory, workspace management, and more

How I built it with Claude Code

I'm not a developer, so the process was more like being a PM working with an engineer.

I started by describing the problem: "I want Claude Desktop to search all my local documents." Claude Code suggested fastembed for embeddings and LanceDB as the vector store. I didn't know either existed.

From there, I'd write a product spec for each feature, and Claude would implement it. Search came first. Then memory — I described the UX ("I say remember this, next session it comes back") and Claude built it with timestamped markdown files plus vector indexing.

The knowledge graph was the same pattern. I wanted to see how documents relate to each other. I described the output (Mermaid diagrams), Claude handled the topic extraction and link detection.

I made the product decisions — what tools to expose, how the CLI should feel, what the search experience should be like. Claude Code wrote the code. When something felt wrong I'd push back and we'd iterate.

Try it

Zero external dependencies. No Ollama, no Docker, no API keys.

git clone https://github.com/besslframework-stack/project-tessera
pip install -e .
tessera init
Enter fullscreen mode Exit fullscreen mode

tessera init walks you through everything.

Website: https://project-tessera.vercel.app
GitHub: https://github.com/besslframework-stack/project-tessera

Free and open source (AGPL-3.0).

Top comments (1)

Collapse
 
nyrok profile image
Hamza KONTE

This is such a great story — "I'm a designer, not a developer" is exactly the kind of person MCP was designed to empower. The fact that you shipped a working MCP server shows how far the tooling has come.

Since you're building MCP servers for Claude Desktop, you might find flompt useful — it's a visual prompt builder that also ships as an MCP server: claude mcp add flompt https://flompt.dev/mcp/

It exposes three tools: decompose_prompt(), compile_prompt(), and list_block_types(). So Claude Code can natively decompose raw prompts into 12 structured blocks (role, constraints, output format, etc.) and compile them to Claude-optimized XML without leaving the conversation. Could be a nice complement to whatever you built, depending on your use case.

What does your MCP server do? Always curious to see what non-developers build first — they often solve problems developers wouldn't even notice.