Skip to main content
Glama

zotero-rag — Twoja biblioteka Zotero jako narzędzie dla Claude (MCP)

Własny, odchudzony pipeline RAG inspirowany RAG-Assistant-for-Zotero (kod napisany od nowa). Serwer MCP przeszukuje pełne teksty PDF z Zotero, a odpowiedź z cytowaniami pisze Claude (Desktop lub Code). Nie trzeba klucza API. Wszystko liczy się lokalnie.

Pipeline

zotero.sqlite (kopia, tylko odczyt) ──► PDF (PyMuPDF)
   ──► czyszczenie: nagłówki/stopki, dzielenie wyrazów, ligatury, bibliografia pomijana
   ──► fragmenty ~1000 znaków ze zdań w obrębie sekcji (+ abstrakt z Zotero)
   ──► embeddingi bge-m3 (wielojęzyczne: PL+EN, zapytanie PL znajduje tekst EN)
   ──► data/index.sqlite: wektory + FTS5/BM25 (bez polskich znaków diakrytycznych też działa)

zapytanie ──► wektory (cosine) + BM25 (z dopasowaniem prefiksów pod polską fleksję)
          ──► RRF ──► reranker bge-reranker-v2-m3 ──► max N fragmentów na pracę
          ──► Claude: odpowiedź z cytatami (Nazwisko, rok, s. X)

Pliki: zotero_rag/zotero.py (Zotero), pdftext.py (PDF→fragmenty), store.py (indeks), models.py (modele), search.py (wyszukiwanie), indexer.py, server.py (narzędzia MCP), cli.py.

Related MCP server: Stratosphere MCP Zotero

Użycie

git clone https://github.com/jolapodolszanska/zotero-rag.git
cd zotero-rag
uv sync                              # instalacja zależności
uv run zotero-rag index              # indeksuj nowe/zmienione PDF-y (--full: od zera)
uv run zotero-rag search "redukcja artefaktów w CBCT"   # test z terminala

Podłączenie do Claude Code

claude mcp add zotero --scope user "C:\ścieżka\do\zotero-rag\.venv\Scripts\zotero-rag.exe" serve

(macOS/Linux: .venv/bin/zotero-rag.)

(W PowerShellu nie używaj wariantu z -- uv --directory ...: PowerShell zjada -- i claude zgłasza unknown option '--directory'.)

Podłączenie do Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "zotero": {
      "command": "uv",
      "args": ["--directory", "C:\\ścieżka\\do\\zotero-rag", "run", "zotero-rag", "serve"]
    }
  }
}

Po restarcie Claude zapytaj np. „Co moja biblioteka mówi o wyjaśnialności (XAI) w diagnostyce Alzheimera? Cytuj strony.”

Narzędzia MCP

narzędzie

do czego

search_library

wyszukiwanie hybrydowe; filtry: lata, autor, tag, kolekcja, typ

search_within_item

szukanie w jednej pracy

get_context

sąsiednie fragmenty (gdy cytat jest urwany)

get_item

pełny opis bibliograficzny + abstrakt

list_items

lista prac (z filtrami)

index_status

statystyki, kolekcje, tagi

update_index

doindeksowanie nowych PDF-ów

Ustawienia (zmienne środowiskowe)

zmienna

domyślnie

ZOTERO_DIR

~/Zotero

ZOTERO_BASE_DIR

— (folder bazowy dla plików „linked”)

ZOTERO_RAG_DATA

./data

EMBED_MODEL

BAAI/bge-m3 (zmiana = pełna reindeksacja)

RERANK_MODEL

BAAI/bge-reranker-v2-m3 ("" wyłącza)

EMBED_QUERY_PREFIX / EMBED_DOC_PREFIX

— (np. query: / passage: dla multilingual-e5)

Inne modele dobre dla polskiego: sdadas/mmlw-roberta-large (prefiks zapytania zapytanie: ), intfloat/multilingual-e5-large (prefiksy query: / passage: ). Lżejszy i szybszy na CPU: intfloat/multilingual-e5-base.

PDF-y muszą mieć warstwę tekstową (skany bez OCR zostaną pominięte i zgłoszone w logu).

Licencja

MIT, zob. LICENSE. Pomysł zaczerpnięty z RAG-Assistant-for-Zotero (GPL-3.0); kod tego repozytorium został napisany od nowa.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Connects your Zotero research library with Claude and other AI assistants via the Model Context Protocol, allowing you to search your library, access content, discuss papers, get summaries, and analyze citations.
    38
    5,723 PyPI
    5,540
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural language interaction with Zotero libraries, allowing users to search, retrieve, and update papers and metadata via AI assistants like Claude and Gemini.
    1
    GPL 2.0