ndjordjevic/pinrag

ndjordjevic/pinrag

от ndjordjevic
PinRAG индексирует PDF, GitHub, YouTube, Discord и заметки в единый RAG-индекс. Задавайте вопросы из редактора — ответы с цитатами на источники. Полезен разработчикам и исследователям для работы с ...

PinRAG logo

PinRAG

PyPI License: MIT io.github.ndjordjevic/pinrag on MCP Marketplace pinrag MCP server

Overview

PinRAG is for when you want to learn about something and your materials are scattered—PDFs and ebooks, GitHub repos, YouTube videos, Discord discussions, and plain notes. You index those materials into one shared RAG index, then ask questions from Cursor, VS Code (GitHub Copilot), or any MCP-capable assistant and get answers with citations pointing back to pages, timestamps, files, or threads.

Under the hood it is Retrieval-Augmented Generation built with LangChain and exposed as an MCP (Model Context Protocol) server: add documents from the editor, query with natural language, list or remove what you indexed. Supported inputs include PDFs, local text files and directories, Discord exports, YouTube (transcript from URL, playlist, or ID), and GitHub repo URLs. For YouTube you can optionally add vision so on-screen code, diagrams, and UI text are merged with the transcript in the same chunks—see YouTube vision enrichment.

Features

  • Multi-format indexing — PDF (.pdf), local files or directories, plain text (.txt), Discord export (.txt), YouTube (video or playlist URL, or video ID), GitHub repo (URL), web documentation sites (URL)
  • Optional YouTube vision — Off by default. When enabled, runs a vision model (OpenAI, Anthropic, or OpenRouter native video) and merges structured on-screen context with the transcript so RAG chunks carry searchable code names, labels, and diagrams—not speech alone. OpenRouter mode avoids local ffmpeg/video download; openai/anthropic use scene keyframes and require pinrag[vision] + ffmpeg (see YouTube vision enrichment)
  • RAG with citations — Answers cite source context: PDF page, YouTube timestamp, document name for plain text and Discord, chunk index for GitHub repos, source URL for web documentation
  • Document tags — Tag documents at index time (e.g. AMIGA, PI_PICO) for filtered search
  • Metadata filteringquery_tool supports document_id, tag, document_type, PDF page_min/page_max, and response_style (thorough or concise)
  • MCP toolsadd_document_tool, query_tool, list_documents_tool, remove_document_tool, set_document_tag_tool, list_collections_tool; optional collection on tools overrides PINRAG_COLLECTION_NAME for that call
  • MCP resourcespinrag://documents (indexed documents) and pinrag://server-config (env vars and config); click in Cursor’s MCP panel to view
  • MCP promptuse_pinrag (parameter: request) for querying, indexing, listing, or removing documents
  • Configurable LLM — OpenRouter (default, free openrouter/free router), OpenAI, Anthropic, or Cerebras Inference (OpenAI-compatible API); set via PINRAG_LLM_PROVIDER and PINRAG_LLM_MODEL in MCP env or your shell
  • Local embeddings — Nomic (PINRAG_EMBEDDING_MODEL, default nomic-embed-text-v1.5); no API key; first run downloads model weights (~270 MB, cached)
  • Retrieval & chunking options — Structure-aware chunking (on by default); optional FlashRank re-ranking, multi-query expansion, and parent-child chunks for PDFs (see Configuration)
  • Observability — MCP tool notifications (ctx.log) plus optional LangSmith tracing
  • Built with — LangChain, Chroma; optional OpenRouter, OpenAI, Anthropic, FlashRank
add_document_tool

Добавляет файлы, директории, видео YouTube или репозитории GitHub в индекс. Автоматически определяет формат по пути и индексирует: - GitHub (URL, например https://github.com/owner/repo или github.com/owner/repo/tree/branch) - YouTube (URL или ID видео, например https://youtu.be/xyz) - PDF (.pdf) - Экспорт Discord (.txt с заголовком DiscordChatExporter Guild:/Channel:) Передайте один или несколько путей. Один путь: paths=[\"/path/to/file.pdf\"]. Использует конфигурацию сервера для расположения и коллекции векторного хранилища. Возвращает как успешно добавленные, так и ошибочные записи, чтобы один некорректный путь не приводил к сбою всего пакета. Args: paths: Список путей к файлам, директориям, URL YouTube или URL GitHub для индексации. tags: Необязательный список тегов, по одному на путь (в том же порядке, что и пути). branch: Для URL GitHub: переопределение ветки (по умолчанию main). Игнорируется для других форматов. include_patterns: Для URL GitHub: glob-шаблоны для включения файлов (например ["*.md", "src/**/*.py"]). exclude_patterns: Для URL GitHub: glob-шаблоны для исключения. Игнорируется для других форматов. ctx: MCP контекст запроса (внедряется сервером; не используется). Returns: Словарь, содержащий записи, добавленные в индекс, записи с ошибками и итоговые значения.

Добавляет файлы, директории, видео YouTube или репозитории GitHub в индекс. Автоматически определяет формат по пути и индексирует: - GitHub (URL, например https://github.com/owner/repo или github.com/owner/repo/tree/branch) - YouTube (URL или ID видео, например https://youtu.be/xyz) - PDF (.pdf) - Экспорт Discord (.txt с заголовком DiscordChatExporter Guild:/Channel:) Передайте один или несколько путей. Один путь: paths=[\"/path/to/file.pdf\"]. Использует конфигурацию сервера для расположения и коллекции векторного хранилища. Возвращает как успешно добавленные, так и ошибочные записи, чтобы один некорректный путь не приводил к сбою всего пакета. Args: paths: Список путей к файлам, директориям, URL YouTube или URL GitHub для индексации. tags: Необязательный список тегов, по одному на путь (в том же порядке, что и пути). branch: Для URL GitHub: переопределение ветки (по умолчанию main). Игнорируется для других форматов. include_patterns: Для URL GitHub: glob-шаблоны для включения файлов (например ["*.md", "src/**/*.py"]). exclude_patterns: Для URL GitHub: glob-шаблоны для исключения. Игнорируется для других форматов. ctx: MCP контекст запроса (внедряется сервером; не используется). Returns: Словарь, содержащий записи, добавленные в индекс, записи с ошибками и итоговые значения.

Параметры

  • pathsstring[]обязательный

    Paths to index: file, directory, YouTube URL, or GitHub URL (e.g. https://github.com/owner/repo). Single path: ["/path/to/file.pdf"] or ["https://github.com/owner/repo"].

  • tagsany

    Optional list of tags, one per path (same order as paths).

  • branchany

    For GitHub URLs: override branch (default: main). Ignored for other formats.

  • include_patternsany

    For GitHub URLs: glob patterns for files to include (e.g. ["*.md", "src/**/*.py"]). Ignored for other formats.

  • exclude_patternsany

    For GitHub URLs: glob patterns to exclude. Ignored for other formats.

list_documents_tool

Выводит список всех проиндексированных документов в индексе PinRAG. Возвращает уникальные идентификаторы документов (имена PDF-файлов, ID видео, discord-alicia-1200-pcb, owner/repo/path для GitHub и т.д.), которые сейчас находятся в векторном хранилище, а также общее количество чанков. Использует конфигурацию сервера для расположения векторного хранилища и коллекции. Аргументы: tag: Опциональный тег для фильтрации: выводить только документы с этим тегом. ctx: Контекст запроса MCP (внедряется сервером; не используется). Возвращает: Словарь, содержащий documents, total_chunks, persist_directory, collection_name, document_details.

Выводит список всех проиндексированных документов в индексе PinRAG. Возвращает уникальные идентификаторы документов (имена PDF-файлов, ID видео, discord-alicia-1200-pcb, owner/repo/path для GitHub и т.д.), которые сейчас находятся в векторном хранилище, а также общее количество чанков. Использует конфигурацию сервера для расположения векторного хранилища и коллекции. Аргументы: tag: Опциональный тег для фильтрации: выводить только документы с этим тегом. ctx: Контекст запроса MCP (внедряется сервером; не используется). Возвращает: Словарь, содержащий documents, total_chunks, persist_directory, collection_name, document_details.

Параметры

  • tagstring

    Optional tag to filter: only list documents that have this tag.

query_tool

_style: "Answer style" — "Стиль ответа". ctx: "MCP request context" — "Контекст запроса MCP", в скобках "injected by the server; unused" — "внедряется сервером; не используется". Всё выглядит хорошо.Запрашивает проиндексированные документы и возвращает ответ с цитатами. Просматривает все проиндексированные документы (PDF, Discord и т.д.) и использует RAG для формирования ответа на основе извлечённого контекста с указанием источников. Аргументы: query: Вопрос на естественном языке. document_id: Идентификатор документа для фильтрации (необязательно, из list_documents). page_min: Начало диапазона страниц (включительно). Только для PDF. page_max: Конец диапазона страниц (включительно). Только для PDF. tag: Тег для фильтрации (необязательно, из list_documents). document_type: Тип для фильтрации: "pdf", "youtube", "discord", "github" или "plaintext" (необязательно). response_style: Стиль ответа; если не указан или пустая строка, используется PINRAG_RESPONSE_STYLE. ctx: Контекст запроса MCP (внедряется сервером; не используется). Возвращает: Словарь, содержащий ответ и источники (document_id, page).

_style: "Answer style" — "Стиль ответа". ctx: "MCP request context" — "Контекст запроса MCP", в скобках "injected by the server; unused" — "внедряется сервером; не используется". Всё выглядит хорошо.Запрашивает проиндексированные документы и возвращает ответ с цитатами. Просматривает все проиндексированные документы (PDF, Discord и т.д.) и использует RAG для формирования ответа на основе извлечённого контекста с указанием источников. Аргументы: query: Вопрос на естественном языке. document_id: Идентификатор документа для фильтрации (необязательно, из list_documents). page_min: Начало диапазона страниц (включительно). Только для PDF. page_max: Конец диапазона страниц (включительно). Только для PDF. tag: Тег для фильтрации (необязательно, из list_documents). document_type: Тип для фильтрации: "pdf", "youtube", "discord", "github" или "plaintext" (необязательно). response_style: Стиль ответа; если не указан или пустая строка, используется PINRAG_RESPONSE_STYLE. ctx: Контекст запроса MCP (внедряется сервером; не используется). Возвращает: Словарь, содержащий ответ и источники (document_id, page).

Параметры

  • querystringобязательный

    Natural language question to ask.

  • document_idstring

    Optional document ID to filter retrieval (from list_documents).

  • page_minany

    Optional start of page range (inclusive). PDF only.

  • page_maxany

    Optional end of page range (inclusive). PDF only.

  • tagstring

    Optional tag to filter retrieval (from list_documents).

  • document_typestring

    Optional type to filter: 'pdf', 'youtube', 'discord', 'github', or 'plaintext'.

  • response_stylestring

    Answer style: 'thorough' (detailed) or 'concise'. Leave empty to use PINRAG_RESPONSE_STYLE.

remove_document_tool

Удаляет документ и все его фрагменты из индекса PinRAG. Удаляет все фрагменты и эмбеддинги для указанного документа. Используйте list_documents_tool чтобы получить document_ids (например: "mybook.pdf", "bwgLXEQdq20", "discord-alicia-1200-pcb", "owner/repo/path" для GitHub). Использует конфигурацию сервера для расположения векторного хранилища и коллекции. Аргументы: document_id: Идентификатор документа для удаления (из list_documents_tool). ctx: Контекст запроса MCP (внедряется сервером; не используется). Возвращает: Словарь, содержащий deleted_chunks, document_id, persist_directory, collection_name.

Удаляет документ и все его фрагменты из индекса PinRAG. Удаляет все фрагменты и эмбеддинги для указанного документа. Используйте list_documents_tool чтобы получить document_ids (например: "mybook.pdf", "bwgLXEQdq20", "discord-alicia-1200-pcb", "owner/repo/path" для GitHub). Использует конфигурацию сервера для расположения векторного хранилища и коллекции. Аргументы: document_id: Идентификатор документа для удаления (из list_documents_tool). ctx: Контекст запроса MCP (внедряется сервером; не используется). Возвращает: Словарь, содержащий deleted_chunks, document_id, persist_directory, collection_name.

Параметры

  • document_idstringобязательный

    Document identifier to remove (from list_documents_tool).

Другие проверенные MCP-сервера

discourse/discourse-mcp

discourse/discourse-mcp

официальный

MCP сервер для интеграции AI-агентов с Discourse: поиск, чтение и управление топиками, постами, пользователями. Опциональная запись с защитой от злоупотреблений. Полезен для автоматизации модерации...

TypeScript66
vectorize-io/vectorize-mcp-server

vectorize-io/vectorize-mcp-server

официальный

MCP-сервер для интеграции с Vectorize: выполняет векторный поиск по документам, извлекает текст из любых файлов в Markdown и запускает Deep Research. Полезен разработчикам AI-приложений, работающих...

JavaScript109
Canner/wren-engine

Canner/wren-engine

официальный

Wren Engine — open source context engine для AI-агентов через MCP. Он заменяет сырые таблицы бизнес-моделями и метриками: агенты понимают контекст, строят точные запросы и соблюдают правила доступа...

Java664
serpapi/serpapi-mcp

serpapi/serpapi-mcp

официальный

MCP-сервер для поиска через SerpApi: объединяет Google, Bing, YouTube, eBay и другие движки. Поддерживает погоду, котировки и гибкие режимы ответов - удобно для ИИ-агентов, которым нужны структурир...

Python156
gitkraken/gk-cli

gitkraken/gk-cli

официальный

MCP-сервер GitKraken CLI объединяет git, GitHub и Jira. Встроенный AI помогает с коммитами и Pull Request. Полезен разработчикам для автоматизации работы с несколькими репозиториями через единый сервер.

435
bitbonsai/mcp-obsidian

bitbonsai/mcp-obsidian

MCPVault — AI-мост для Obsidian по стандарту MCP. Подключает Claude, ChatGPT и других ассистентов к вашим заметкам с безопасным доступом и защитой frontmatter. Без привязки к одному провайдеру.

TypeScript1547
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин