Skip to main content
Glama

MyDocsMCP: MCP Server for PDF Collections

This project is a Model Context Protocol (MCP) Server that enables semantic search (local RAG) over a collection of PDF documents. It uses the FastMCP framework, the ChromaDB vector database, and local embedding models from Sentence Transformers.

Architecture

  • Semantic Search: 100% local (offline) RAG (Retrieval-Augmented Generation).

  • Embeddings: paraphrase-multilingual-mpnet-base-v2 (supports Portuguese).

  • Vector DB: Persistent ChromaDB.

  • Watcher: Monitors new PDFs in the ./data/pdfs folder and indexes them automatically via watchdog.


Related MCP server: DocScan MCP Server

How to Use

1. Data Preparation

Place your PDFs in the ./data/pdfs/ folder. If you want to organize them by disciplines, create subfolders:

data/pdfs/
  ├── Generative-AI/
  │   └── lecture1.pdf
  └── Machine-Learning/
      └── fundamentals.pdf

The subfolder name will be used as the discipline metadata.

2. Extremely Simple Configuration (Claude / Gemini Desktop)

To use the server, add the configuration below to your agent's JSON file (claude_desktop_config.json or Gemini's settings.json).

Claude Path (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json Gemini Path (macOS): ~/.gemini/settings.json

The server automatically resolves all data folders (pdfs, metadata, chroma_db) based on the project root. You only need to provide the absolute path where you cloned the repository:

{
  "mcpServers": {
    "mydocsmcp": {
      "command": "uv",
      "args": [
        "--directory", "/Absolute/Path/To/Your/MyDocsMCP",
        "run",
        "mydocs-mcp"
      ]
    }
  }
}

That's it! No additional environment variables (PYTHONPATH, PDF_DIR, etc.) are required. The setup "Just Works"™.


Exposed Tools

  • search_documents(query, top_k=5, discipline=None): Semantic search in the collection.

  • list_documents(discipline=None): Lists indexed PDFs.

  • cross_topic_search(query, disciplines): Cross-topic search across multiple disciplines.

  • get_index_stats(): Vector database statistics.

  • ingest_new_documents(path=None, force_reindex=False): Forces manual re-ingestion.


Local Development (Python)

We use the uv package manager:

# Install dependencies
uv sync

# Run the server
uv run mydocs-mcp

Running Tests

uv run pytest

Technologies Used

Available Tools

5 tools
get_index_statsA

Retorna estatísticas do índice: total de documentos, chunks, última atualização.

Inputs: no named parameters. Returns: result

ingest_new_documentsB

Força re-ingestão de PDFs novos ou modificados. Normalmente automático via watcher, mas pode ser chamado manualmente.

Inputs: path, force_reindex. Returns: result

list_documentsA

Lista todos os PDFs indexados, opcionalmente filtrado por disciplina.

Inputs: discipline. Returns: result

search_documentsA

Busca semanticamente no acervo de PDFs. Retorna trechos relevantes com referência ao documento e página.

Args: query: Pergunta ou tema a pesquisar top_k: Número de resultados (padrão: 5) discipline: Filtrar por disciplina/pasta específica (opcional)

Inputs: query (required), top_k, discipline. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 5 tools

    Disambiguation4/5

    search_documents and cross_topic_search both perform semantic search, but their descriptions clearly distinguish single-discipline versus cross-discipline queries. Other tools (list, stats, ingest) are entirely distinct in purpose.

    Naming Consistency5/5

    All tools follow a consistent snake_case verb_noun pattern: search_documents, list_documents, cross_topic_search, get_index_stats, ingest_new_documents. The pattern is uniform and predictable.

    Tool Count5/5

    With only 5 tools, the set is tightly scoped to the core operations of searching, browsing, and maintaining a document index. Each tool serves a clear purpose without redundancy or bloat.

    Completeness4/5

    The surface covers core search, listing, stats, and ingestion workflows. It lacks an explicit delete/remove operation for documents, but this may be handled automatically or is a minor gap given the watcher-based ingestion model.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Local-first RAG indexing and semantic search MCP server. Enables document retrieval and context-aware queries using local embedding models.
      3
      8 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server that enables local hybrid semantic and keyword search over private PDF, DOCX, Markdown, and text documents without sending data to embedding APIs.
      9
      4,501 npm
      MIT