Token导航 LogoToken导航TokenDH.com
Docs To AI logo
搜索检索stdio官方级别未说明来源级核验

Docs To AI

MCP Server

一个基于MCP协议的文档查询系统,支持多种文档格式的语义搜索和智能组织。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
搜索文档处理PythonClaude向量数据库Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

dorianmeric

提供方

dorianmeric

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m app.scan_all_my_documents # Ingest documents

详细介绍

文档到人工智能——基于MCP的文档查询系统

A生产就绪的RAG,作为模型上下文协议(MCP)服务器运行,使LLM(如Claude Desktop或支持MCP的任何其他LLM)能够使用语义搜索查询您的文档。根据文件夹结构按主题组织文档。 支持:PDF、Word、Excel、Markdown、PowerPoint、HTML、TXT、CSV。 支持的扩展名:.pdf、.docx、.doc、.xlsx、.xls、.xlsam、.xlsb、.md、.pptx、.html、.htm、.txt、.csv

用于文档检索的模型是全MiniLM-L6-v2,嵌入维度为384。

特性

  • 从PDF、Word、Excel、Markdown、PowerPoint、HTML、TXT和CSV文档中提取文本
  • 按主题组织文档(使用文件夹结构)
  • 生成语义搜索的嵌入
  • 将文档存储在矢量数据库(chromadb)中
  • 向Claude公开MCP工具以搜索和检索文档
  • 按主题/类别筛选搜索
  • 跨不同主题处理具有相同文件名的多个文档
  • 高级搜索:短语匹配、日期范围过滤、正则表达式模式匹配
  • 智能分块:按段落、基于语义标题或基于标记的组块固定大小
  • 保留标题/节结构,以便更智能地检索
  • 可选的重新排序模型,以提高搜索质量

建筑

Documents (PDF, Word, Excel, Markdown, PowerPoint, HTML, TXT, CSV)
  → Text Extraction
    → Chunking (fixed/paragraph/heading/token)
      → Embeddings
        → chromadb (with topic tags)
          ↓
    MCP Server Tools
          ↓
       Claude

文档结构

该系统旨在处理以文件夹结构组织的PDF,其中:

  • 每个文件夹代表一个 话题类别
  • 该文件夹中的PDF会自动标记主题名称
  • 正确处理不同文件夹中具有相同文件名的文档

示例结构:

pdfs/
├── Machine_Learning/
│   ├── neural_networks.pdf
│   ├── deep_learning.pdf
│   └── introduction.pdf
├── Python_Programming/
│   ├── basics.pdf
│   ├── advanced.pdf
│   └── introduction.pdf  # Different from ML's introduction.pdf
└── Data_Science/
    ├── statistics.pdf
    └── visualization.pdf

1.安装,使用本地python

此项目使用 uv 用于快速、可靠的Python包管理。

安装uv(如果尚未安装)

# On macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

安装并运行

uv sync                              # Install dependencies from pyproject.toml
python -m app.scan_all_my_documents  # Ingest documents
python mcp_server.py                 # Start the MCP Server

双重运输模式

MCP服务器现在正在运行 两种运输方式同时进行 (感谢FastMCP):

  • stdio模式 -通过Claude Desktop进行本地连接
  • HTTP/SSE模式 -用于通过HTTP进行远程连接

默认情况下,两者同时处于活动状态。服务器会自动公开:

  • SSE端点: http://localhost:38777/sse (用于建立连接)
  • 消息端点: http://localhost:38777/messages/ (用于发送请求)

您可以使用命令行参数或环境变量自定义HTTP传输:

# Using command line arguments
python mcp_server.py --host 0.0.0.0 --port 38777

# Or using environment variables
export MCP_HOST=0.0.0.0
export MCP_PORT=38777
python mcp_server.py

脚本将:

  • 递归扫描目录
  • 从文件夹名称中检测主题
  • 从每个PDF/Words/Markdown/Excel中提取文本并将其分块
  • 用主题标记块
  • 将所有内容存储在chromadb中

输出示例:

Found 15 PDF files
Base directory: /path/to/pdfs

Detected topics: Data_Science, Machine_Learning, Python_Programming

[1/15] Processing: neural_networks.pdf
  Topic: Machine_Learning
  ✓ Added 45 chunks
...

INGESTION SUMMARY
==================
Total PDFs processed: 15
Successful: 15
Failed: 0
Total chunks added: 523

Documents per topic:
  Data_Science: 4 documents, 156 chunks
  Machine_Learning: 6 documents, 234 chunks
  Python_Programming: 5 documents, 133 chunks

添加到您的Claude桌面配置(%APPDATA%/Claude/claude_desktop_config.json):

对于stdio模式(本地):

{
  "mcpServers": {
    "docs-to-ai": {
      "command": "python",
      "args": ["C:/[UPDATE_PATH_TO_DOCS-TO-AI]/docs-to-ai/mcp_server.py"]
    }
  }
}

对于HTTP/SSE模式(远程):

{
  "mcpServers": {
    "docs-to-ai": {
      "url": "http://localhost:38777/sse",
      "transport": "sse"
    }
  }
}

2.使用Docker进行安装

你需要运行Docker桌面或Docker引擎。然后,只需将以下内容写入一个名为“docker compose.yaml”的文件中,它就会从docker Hub中拉取并运行镜像(镜像:https://hub.docker.com/r/dmeric/docs-to-ai ):

services:
  docs-to-ai:
    image: dmeric/docs-to-ai
    container_name: docs-to-ai
    
    volumes:
      - ./cache/chromadb:/app/chromadb        # chromadb database (persists the vector store)
      - ./cache/doc_cache:/app/doc_cache      # Document cache (persists extracted text)
      - ./my-docs:/app/my-docs:ro             # Documents directory (your PDFs and Word docs). Read-only to prevent accidental modifications
    
    # Stdin/stdout - required for MCP protocol in stdio mode
    stdin_open: true
    tty: true

    ports:
      - "${MCP_PORT:-38777}:38777"            # for http/sse transport, on http://localhost:38777/sse

    # Restart policy
    restart: unless-stopped
    
    # # Resource limits (optional - adjust based on your needs)
    # deploy:
    #   resources:
    #     limits:
    #       cpus: '2'
    #       memory: 4G
    #     reservations:
    #       cpus: '1'
    #       memory: 2G
    

然后在bash或Powershell中运行:

docker compose up -d

Docker配置

docker-compose.yml 配置:

体积:

  • ./cache/chromadb:/app/cache/chromadb -矢量存储数据库(持久)
  • ./cache/doc_cache:/app/cache/doc_cache -文档缓存(持久)
  • ./my-docs:/app/my-docs:ro -您的文档目录(只读)

端口:

  • 38777 -远程MCP连接的HTTP/SSE端点

环境变量:

  • FULL_SCAN_ON_BOOT -设置为 True 启动时扫描文档(默认值: False)
  • FOLDER_WATCHER_ACTIVE_ON_BOOT -设置为 True 启动时启动文件夹监视器(默认值: True)
  • MCP_PORT -自定义HTTP端口(默认值: 38777)

自定义环境变量示例:

# Create a .env file
echo "FULL_SCAN_ON_BOOT=True" > .env
echo "FOLDER_WATCHER_ACTIVE_ON_BOOT=True" >> .env
echo "MCP_PORT=38777" >> .env

# Start with environment variables
docker compose up -d

添加到您的Claude桌面配置(%APPDATA%/Claude/claude_desktop_config.json):

{
  "mcpServers": {

    "docs-to-ai": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "docs-to-ai",
        "python",
        "mcp_server.py"
      ]
    }

  }
}

最后,将您的文档放在文件夹/my-docs中,并要求服务器扫描文档,并可选择启动文件夹监视器。 现在,您应该能够就这些文件向法学硕士提出问题。

项目结构

  • mcp_server.py -主MCP服务器实现(基于FastMCP)
  • app/document_processor.py -文档文本提取和分块(PDF、Word、Excel、Markdown)
  • app/vector_store.py -矢量数据库操作(ChromaDB)
  • app/scan_all_my_documents.py -批处理文档摄取脚本
  • app/incremental_updater.py -增量文档更新逻辑
  • app/folder_watcher.py -自动文件夹监控和更改检测
  • app/config.py -配置设置
  • pyproject.toml -Python依赖关系和项目元数据(使用 uv)
  • Dockerfile -Docker容器配置
  • docker-compose.yml -Docker编写配置

MCP工具

服务器为LLM公开了以下工具:

搜索与发现:

  • search_documents -使用可选过滤器对所有文档进行语义搜索:

- topic -按主题/类别筛选 - phrase_search -精确短语匹配 - date_from / date_to -按last_modified时间戳过滤(Unix) - regex_pattern -按文本中的正则表达式模式过滤

  • list_documents -列出所有可用文档(带可选主题过滤器)
  • list_topics -列出所有主题/类别
  • get_collection_stats -获取有关集合的统计信息(文件类型、大小、计数)

文件管理:

  • scan_all_my_documents -手动触发完整文档扫描并重新索引
  • start_watching_folder -通过增量更新启动自动文件夹监控
  • stop_watching_folder -停止文件夹监视器
  • get_time_of_last_folder_scan -检查上次扫描发生的时间和状态

Claude的查询示例

配置后,您可以询问Claude:

一般查询:

  • “您可以访问哪些文件?”
  • “有哪些可用的主题?”
  • “搜索有关神经网络的信息”
  • “显示收藏统计数据”

特定主题查询:

  • “在Python_programming主题中搜索Python编程概念”
  • “显示有关机器学习的所有文档”
  • “在data_Science主题中查找有关数据可视化的信息”

复杂查询:

  • “比较不同文档对深度学习的看法”
  • “在所有文档中查找所有提及熊猫的内容”
  • “Machine_Learning文档中的关键概念是什么?”

高级搜索(带过滤器):

  • “搜索‘神经网络’作为精确短语”-短语搜索
  • “查找2024-01-01之后修改的Python文档”-日期筛选
  • “搜索与模式匹配的项目\\d{3}-\\d{4}“-正则表达式模式搜索

文件管理:

  • “扫描我的所有文档”-触发完整的重新索引
  • “开始查看我的文档文件夹是否有更改”-启用自动更新
  • “上次扫描是什么时候?”-检查文件夹监控状态
  • “停止监视文件夹”-禁用自动更新

配置

编辑 app/config.py 自定义:

文档处理:

  • SUPPORTED_EXTENSIONS -要处理的文件类型(默认值: .pdf, .docx, .doc, .md, .xlsx, .xls, .xlsam, .xlsb, .pptx, .html, .htm, .txt, .csv)
  • CHUNKING_STRATEGY -分块策略: fixed_size, by_paragraph, semantic_heading,或 by_token (默认值: by_paragraph)
  • CHUNK_SIZE -每个块的字符数(或令牌,如果 CHUNK_BY_TOKEN=true)(默认值: 1000)
  • CHUNK_OVERLAP -块之间的重叠(默认值: 200)
  • CHUNK_BY_TOKEN -使用基于令牌的分块,而不是基于字符的分块(env-var,默认值: False)
  • TOKENIZER_MODEL -用于令牌分块的TikToken标记器(默认值: cl100k_base)
  • PRESERVE_HEADINGS -保留块中的标题结构(env-var,默认值: True)
  • MAX_HEADING_CHUNK_SIZE -每个基于标题的块的最大字符数(默认值: 2000)

搜索配置:

  • DEFAULT_SEARCH_RESULTS -默认结果数(默认值: 10)
  • MAX_SEARCH_RESULTS -最大允许结果(默认值: 20)
  • USE_RERANKER -启用重新排序模型以改善结果(env-var,默认值: True)
  • RERANKER_MODEL -重新排序模型名称(默认值: cross-encoder/ms-marco-MiniLM-L-6-v2)
  • RERANKER_TOP_N -要重新排序的结果数(默认值: 50)
  • USE_BM25 -使用BM25启用混合搜索(env-var,默认值: False)

嵌入模型:

  • EMBEDDING_MODEL -句子转换器模型(默认值: all-MiniLM-L6-v2)
  • EMBEDDING_DIMENSION -矢量维度(默认值: 384)

主题配置:

  • USE_FOLDER_AS_TOPIC -使用文件夹层次结构作为主题(默认: True)
  • DEFAULT_TOPIC -未分类文档的默认主题(默认: uncategorized)
  • TOPIC_SEPARATOR -层次主题的显示分隔符(默认值: >)

储存:

  • CHROMADB_DIR -矢量数据库位置(默认值: cache/chromadb)
  • DOC_CACHE_DIR -文档缓存位置(默认值: cache/doc_cache)
  • DOCS_DIR -文档目录(默认: my-docs,可通过以下方式配置 DOCS_DIR 任何人)
  • CHROMA_COLLECTION_NAME -集合名称(默认值: my-documents)

启动行为:

  • FULL_SCAN_ON_BOOT -服务器启动时扫描文档(env-var,默认值: False)
  • FOLDER_WATCHER_ACTIVE_ON_BOOT -启动时启动文件夹监视器(env-var,默认值: True)

服务器传输:

  • MCP_HOST -HTTP服务器主机(env-var,默认值: 0.0.0.0)
  • MCP_PORT -HTTP服务器端口(env-var,默认值: 38777)

许可证

麻省理工学院

目录标签

目录标签

搜索文档处理PythonClaude向量数据库语义搜索本地部署MCP协议智能组织

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP