Skip to main content
Glama

principia-mcp

MCP server that gives Claude access to your local Zotero library. Claude discovers papers via metadata search, then reads PDFs directly.

How It Works

You: "What does Mannheim say about conformal gravity?"
         │
         ▼
Claude: search_papers("conformal gravity", collection="mannheim")
         │
         ▼
MCP returns: [{id: 212, title: "Making the Case...", pdf_path: "/home/.../paper.pdf"}]
         │
         ▼
Claude: Read("/home/.../paper.pdf")  ← Claude sees equations visually
         │
         ▼
Claude: "Mannheim argues that conformal gravity can explain galaxy rotation curves..."

No embeddings, no text extraction. Claude reads PDFs natively.

Installation

git clone https://github.com/phelps-matthew/principia-mcp
cd principia-mcp
uv sync

Configure Claude Code

Add the MCP server (user-wide):

claude mcp add principia -s user -- uv run --directory /path/to/principia-mcp principia-mcp

Or for just one project:

claude mcp add principia -s project -- uv run --directory /path/to/principia-mcp principia-mcp

Verify with claude mcp list or /mcp in a new session.

MCP Tools

Tool

Description

list_collections()

List Zotero collections with paper counts

list_papers(collection?, limit?)

Browse papers in library or collection

search_papers(query, collection?, limit?)

Keyword search on title/abstract

get_paper(paper_id)

Get metadata + PDF path for a paper

Zotero Integration

Reads directly from ~/Zotero/:

  • zotero.sqlite - metadata database

  • storage/[key]/ - PDF files

No export needed. Add a paper to Zotero and it's available immediately.

Set ZOTERO_DIR environment variable if your Zotero data is elsewhere.

Development

uv sync                    # Install dependencies
uv run pytest              # Run tests
uv run principia-mcp       # Run server
uv run mcp dev src/principia_mcp/server.py  # Dev/debug mode

Project Structure

src/principia_mcp/
├── server.py      # FastMCP server, tool definitions
├── models.py      # Pydantic models (Paper, Collection)
├── zotero.py      # ZoteroReader - reads Zotero SQLite DB
└── search.py      # FTS5 index for fast search (optional)
-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/phelps-matthew/principia-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server