Labsco
MCP SERVER

Index PDFs, GitHub repos, YouTube videos, documentation sites and Discord exports into one RAG store, then ask questions from your editor and get answers with page numbers and timestamps.

Vector Stores & RAG Retrieval
Summary
Citations that land on a page number or a timestamp.

The useful part is not that it retrieves — it is that a YouTube answer comes back with the time in the video and a PDF answer with the page, which turns a plausible-sounding claim into one you can go check in ten seconds. Vision enrichment for YouTube is off by default and worth turning on only when the on-screen code and diagrams matter more than the narration; it changes what gets chunked, so re-index after switching it.

What it is

A retrieval server for material that is scattered across formats. It indexes documents into a shared Chroma store with local embeddings, then answers natural-language questions against them with citations pointing back to the PDF page, YouTube timestamp, document name, chunk index or source URL the passage came from.

What you get
  • Files, directories and URLs indexed from one call — PDFs, plain `.txt`, DiscordChatExporter exports, YouTube videos and playlists, GitHub repositories (with `branch`, `include_patterns` and `exclude_patterns`) and documentation sites — `add_document_tool`
  • Questions answered over the index with filters for `document_id`, `tag`, `document_type`, PDF `page_min`/`page_max` and a `response_style` of thorough or concise — `query_tool`
  • What is indexed, with chunk totals, document types, tags and page, message or segment counts — `list_documents_tool`
  • Documents removed by id, and tags set on a document after the fact for filtered search later — `remove_document_tool`, `set_document_tag_tool`, `list_collections_tool`
  • Two read-only resources for the client's MCP panel: the indexed-document list and the effective server configuration — `pinrag://documents`, `pinrag://server-config`
  • A prompt that routes a plain request to the right tool for querying, indexing, listing or removing — `use_pinrag`
Requirements

An OpenRouter key in `OPENROUTER_API_KEY` for the default chat model — `PINRAG_LLM_PROVIDER` also accepts openai, anthropic or cerebras with their own keys. Embeddings run locally with `nomic-embed-text-v1.5`, no key, though the first run downloads roughly 270 MB of weights. The package is `pinrag` on PyPI, launched with `uvx --refresh pinrag`; `uv` must be installed and `uvx` on your PATH. Set `PINRAG_PERSIST_DIR` to an absolute path so the vector store does not depend on the server's working directory. `GITHUB_TOKEN` is needed only for private repositories.

Setup effort

One command plus a key — uvx --refresh pinrag, then supply credentials