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 filtering — query_tool supports document_id, tag, document_type, PDF page_min/page_max, and response_style (thorough or concise)
  • MCP tools — add_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 resources — pinrag://documents (indexed documents) and pinrag://server-config (env vars and config); click in Cursor’s MCP panel to view
  • MCP prompt — use_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: Словарь, содержащий записи, добавленные в индекс, записи с ошибками и итоговые значения.

Параметры
  • branchstring | null

    Для URL GitHub: переопределяет ветку (по умолчанию: main). Игнорируется для других форматов.

  • exclude_patternsstring[] | null

    Для GitHub-URL: шаблоны glob для исключения. Для остальных форматов они игнорируются.

  • include_patternsstring[] | null

    Для GitHub URL: glob patterns для включаемых файлов (например, [".md", "src/**/.py"]). Для других форматов игнорируются.

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

    Пути для индексации: файл, директория, YouTube URL или GitHub URL (например, https://github.com/owner/repo). Один путь: ["/path/to/file.pdf"] или ["https://github.com/owner/repo"].

  • tagsstring[] | null

    Необязательный список тегов, по одному на каждый путь (в том же порядке, что и пути).

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.

Параметры
  • tagstring

    Необязательный тег для фильтрации: показывать только документы с этим тегом.

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).

Параметры
  • document_idstring

    Необязательный идентификатор документа для фильтрации извлечения (из list_documents).

  • document_typestring

    Необязательный тип фильтра: 'pdf', 'youtube', 'discord', 'github' или 'plaintext'.

  • page_maxinteger | null

    Необязательная конечная страница диапазона (включительно). Только для PDF.

  • page_mininteger | null

    Необязательное начало диапазона страниц (включительно). Только для PDF.

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

    Вопрос на естественном языке для запроса.

  • response_stylestring

    Стиль ответа: 'подробный' (детальный) или 'краткий'. Оставьте пустым, чтобы использовать PINRAG_RESPONSE_STYLE.

  • tagstring

    Необязательный тег, который фильтрует результаты (из list_documents).

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.

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

    Идентификатор документа для удаления (из list_documents_tool).

0.9.27основная
0.9.26
0.9.25
0.9.24
0.9.23
0.9.22
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.14
0.9.13
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1

Выберите клиент, чтобы установить ndjordjevic/pinrag:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "ndjordjevic-pinrag-g9mjbs1uuf": {
      "command": "uvx",
      "args": [
        "--refresh",
        "pinrag"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "PINRAG_PERSIST_DIR": "/absolute/path/to/your/pinrag-data"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "ndjordjevic-pinrag-g9mjbs1uuf": {
      "command": "uvx",
      "args": [
        "--refresh",
        "pinrag"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "PINRAG_PERSIST_DIR": "/absolute/path/to/your/pinrag-data"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "ndjordjevic-pinrag-g9mjbs1uuf": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--refresh",
        "pinrag"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "PINRAG_PERSIST_DIR": "/absolute/path/to/your/pinrag-data"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"ndjordjevic-pinrag-g9mjbs1uuf\",\"type\":\"stdio\",\"command\":\"uvx\",\"args\":[\"--refresh\",\"pinrag\"],\"env\":{\"OPENROUTER_API_KEY\":\"your-openrouter-api-key-here\",\"PINRAG_PERSIST_DIR\":\"/absolute/path/to/your/pinrag-data\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "ndjordjevic-pinrag-g9mjbs1uuf": {
      "command": "uvx",
      "args": [
        "--refresh",
        "pinrag"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "PINRAG_PERSIST_DIR": "/absolute/path/to/your/pinrag-data"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add ndjordjevic-pinrag-g9mjbs1uuf --env OPENROUTER_API_KEY=your-openrouter-api-key-here --env PINRAG_PERSIST_DIR=/absolute/path/to/your/pinrag-data -- uvx --refresh pinrag

Либо через JSON-конфиг:

claude mcp add-json ndjordjevic-pinrag-g9mjbs1uuf "{\"command\":\"uvx\",\"args\":[\"--refresh\",\"pinrag\"],\"env\":{\"OPENROUTER_API_KEY\":\"your-openrouter-api-key-here\",\"PINRAG_PERSIST_DIR\":\"/absolute/path/to/your/pinrag-data\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add ndjordjevic-pinrag-g9mjbs1uuf --env OPENROUTER_API_KEY=your-openrouter-api-key-here --env PINRAG_PERSIST_DIR=/absolute/path/to/your/pinrag-data -- uvx --refresh pinrag

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.ndjordjevic-pinrag-g9mjbs1uuf]
command = "uvx"
args = ["--refresh", "pinrag"]

[mcp_servers.ndjordjevic-pinrag-g9mjbs1uuf.env]
OPENROUTER_API_KEY = "your-openrouter-api-key-here"
PINRAG_PERSIST_DIR = "/absolute/path/to/your/pinrag-data"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите ndjordjevic/pinrag, а в поле команды запуска — строку ниже:
uvx --refresh pinrag

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ndjordjevic-pinrag-g9mjbs1uuf": {
      "command": "uvx",
      "args": [
        "--refresh",
        "pinrag"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "PINRAG_PERSIST_DIR": "/absolute/path/to/your/pinrag-data"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "ndjordjevic-pinrag-g9mjbs1uuf": {
      "command": "uvx",
      "args": [
        "--refresh",
        "pinrag"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "PINRAG_PERSIST_DIR": "/absolute/path/to/your/pinrag-data"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например ndjordjevic-pinrag-g9mjbs1uuf.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: ndjordjevic-pinrag-g9mjbs1uuf
    command: uvx
    args:
      - "--refresh"
      - "pinrag"
    env:
      OPENROUTER_API_KEY: your-openrouter-api-key-here
      PINRAG_PERSIST_DIR: /absolute/path/to/your/pinrag-data
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "ndjordjevic-pinrag-g9mjbs1uuf": {
      "command": "uvx",
      "args": [
        "--refresh",
        "pinrag"
      ],
      "env": {
        "OPENROUTER_API_KEY": "your-openrouter-api-key-here",
        "PINRAG_PERSIST_DIR": "/absolute/path/to/your/pinrag-data"
      }
    }
  }
}

Похожие MCP-сервера

graphlit-mcp-server

graphlit-mcp-server

официальный

от graphlit

MCP сервер для Graphlit — превращает проект в RAG-базу знаний из данных Slack, Discord, Jira, GitHub, Google Drive. Работает в Cursor, Windsurf, Goose, Cline. Встроен веб-краулинг и веб-поиск.

TypeScript⭐ 377
dmayboroda/minima

dmayboroda/minima

от dmayboroda

Minima — open-source MCP сервер для локального RAG в контейнерах. Поддерживает изолированный Ollama, кастомные LLM и интеграцию с ChatGPT и Claude. Индексирует документы и отвечает на вопросы, обеспечивая полный контроль над данными. Полезен для конфиденциальных проектов и офлайн-сред.

Python⭐ 1054
gzoonet/cortex

gzoonet/cortex

от gzoonet

Сервер GZOO Cortex — локальный граф знаний для разработчиков: мониторит файлы проектов, извлекает сущности и связи с помощью LLM. MCP инструмент для Claude Code с 12 инструментами позволяет задавать вопросы о проектах и выявлять противоречия прямо из диалога.

TypeScript⭐ 23
lyonzin/knowledge-rag

lyonzin/knowledge-rag

от lyonzin

Ищет по PDF, markdown, коду и блокнотам офлайн. 1800+ файлов индексирует за 3 минуты, гибридный поиск с реранкингом. Без API-ключей, данные не покидают машину.

Python⭐ 299
yuchen20/memory-plus

yuchen20/memory-plus

от yuchen20

Memory-Plus - MCP сервер с локальным RAG для записи и поиска заметок и контекста. Визуализация связей между воспоминаниями. Полезен для долговременной памяти ассистентов.

Python⭐ 56
shinpr/mcp-local-rag

shinpr/mcp-local-rag

от shinpr

MCP сервер для локального семантического поиска с бустом ключевых слов (например, коды ошибок, имена функций). Индексирует PDF, DOCX, TXT, MD без облака, работает offline. Удобен разработчикам: быстрый доступ к технической документации и коду через MCP или CLI. Запуск одной командой npx без Docke...

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

Лука Никитин