Muninn

Muninn

MCP server for querying a page-citable research knowledge base built from PDFs, with exact filename and page citations.

Category
Visit Server

README

Muninn — Page-Citable Research Knowledge Base + MCP Server

Named after Odin's raven of memory. From research PDFs → chunked at page level → embedded (BAAI/bge-small-en-v1.5) → Qdrant vector DB → served over MCP so any future Claude session (desktop, web, phone) can query the corpus with exact filename, p. N citations — no re-reading, no chat-context cost.

Note: pdfs/, notes/, and qdrant_db/ are not included in this repo. pdfs/ holds the source papers, notes/ holds Claude's generated reading notes, and qdrant_db/ is the resulting vector DB — all excluded for privacy, since they contain personal research material and its derived content rather than shareable code.

Layout

pdfs/            the source PDFs
notes/           Claude's reading notes (notes*.jsonl) — re-ingestable
ingest.py        PDFs + notes → qdrant_db/  (run once, and after adding PDFs)
muninn_mcp.py    MCP server (stdio locally, Streamable HTTP when hosted)
push_to_cloud.py local qdrant_db/ → Qdrant Cloud (one command)
Dockerfile       Hugging Face Space deployment
qdrant_db/       the vector DB (created by ingest.py)

Data model (collection muninn): type=raw — verbatim chunks, ~1000 chars, never crossing page boundaries → every chunk has exactly one (source_file, page); type=page — full page text (backs get_page, and later page-rendering/highlighting: exact search_for → sentence pieces → fuzzy word alignment → semantic nearest-chunk fallback); type=claude_note — interpretation layer. Raw = ground truth, notes = orientation.

Step 1 — Ingest (your machine, ~2-3 min)

cd <this folder>
uv run ingest.py          # downloads bge-small (~130MB) once, builds qdrant_db/

Step 2 — Use locally right away (optional)

Claude Desktop → claude_desktop_config.json:

{"mcpServers": {"muninn": {"command": "uv",
  "args": ["run", "--directory", "/ABSOLUTE/PATH/TO/THIS/FOLDER", "muninn_mcp.py"]}}}

Claude Code: claude mcp add muninn -- uv run --directory /ABSOLUTE/PATH muninn_mcp.py

Note: Qdrant local mode is single-process — stop the MCP server before re-running ingest.py.

Step 3 — Host it (laptop-off access, $0/mo)

3a. Qdrant Cloud (free tier, 4GB): create a cluster at cloud.qdrant.io, copy URL + API key, then:

QDRANT_URL=https://xxxx.cloud.qdrant.io QDRANT_API_KEY=... uv run push_to_cloud.py

3b. HF Space: create a Space (SDK = Docker), push Dockerfile + muninn_mcp.py to it. In Space Settings → Variables and secrets set:

name kind value
MUNINN_PATH_TOKEN secret python -c "import secrets; print(secrets.token_urlsafe(24))"
QDRANT_URL variable your cluster URL
QDRANT_API_KEY secret your cluster key

3c. Connect Claude: Settings → Connectors → Add custom connector → https://<user>-<space>.hf.space/mcp-<TOKEN>

MCP tools

search(query, top_k, doc_id, note_type) → ranked chunks with citation; list_documents() → corpus inventory; get_page(doc_id, page) → full page text. Retrieval tip: if a query misses, try HyDE (in the corpus, doc 322d71209a2f): write a hypothetical paragraph answering the question and search with that.

Adding papers later

Drop PDFs into pdfs/, re-run uv run ingest.py (idempotent per file), then push_to_cloud.py if hosted. Ask Claude to read the new paper and append a note to notes/ for the interpretation layer.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured