Token导航 LogoToken导航TokenDH.com
MCP RAG with ChromaDB logo
搜索检索stdio官方级别未说明来源级核验

MCP RAG with ChromaDB

MCP Server

一个支持多种文档格式的检索增强生成(RAG)服务,提供文档处理、向量存储和语义搜索功能。

工具数

5

提示词数

0

GitHub Stars

0

资源数

0
检索增强生成PythonClaude搜索Claude DesktopClaude

安装说明

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

作者 / 组织

CyprianFusi

提供方

CyprianFusi

最后核验

2026/5/17 20:23

快速接入

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

命令预览

pip install -r requirements.txt

详细介绍

带ChromaDB的MCP RAG-多格式文档支持

_通过 BINATI A分析_

一个强大的MCP(模型上下文协议)服务器,提供RAG(检索增强生成)功能,支持多种文档格式。由LangChain、ChromaDB提供技术支持 OpenAI或Ollama嵌入.

截图

UI Screenshot 1 UI Screenshot 2 UI Screenshot 3 UI Screenshot 4 UI Screenshot 5 UI Screenshot 6 UI Screenshot 7 UI Screenshot 8

嵌入选项

选择您的嵌入提供商:

  • 开放人工智能 (推荐用于Claude Desktop/MCP)-可靠、快速、基于云。看 OPENAI_SETUP.md
  • 奥拉玛 (免费,本地)-免费,本地运行,可能存在MCP连接问题

OpenAI快速入门:

  1. 从获取API密钥https://platform.openai.com/api-keys
  2. 复制 .env.example.env
  3. OPENAI_API_KEY=sk-your-key-here
  4. python server.py

OPENAI_SETUP.md 详细说明。

支持的文档格式

  • PDF (.pdf)-通过PyPDF2
  • 微软Word (.docx、.doc)-通过python-docx
  • 幻灯片 (.pptx、.ppt)-通过python pptx
  • Excel (.xlsx,.xls)-通过openpyxl
  • OpenDocument文本 (.DT)-通过odfy
  • 超文本标记语言 (.html,.htm)-通过BeautifulSoup4
  • 纯文本 (.txt)
  • 降价 (.md,.markdown)
  • CSV文件 (.csv)
  • JSON (.json)
  • XML (.xml)
  • 富文本格式 (.rtf)

特性

  • 具有自动格式检测功能的多格式文档摄取
  • 使用具有持久存储的ChromaDB进行矢量存储
  • 双重嵌入支持: OpenAI(推荐用于MCP)或Ollama(免费,本地)
  • 并行文档处理以提高性能
  • 批量数据库写入以提高效率(OpenAI处理100个文档/批)
  • 支持URL、单个文件和整个目录
  • 基于相似性评分的语义搜索与检索
  • 当可选依赖项缺失时,出现优雅的回退
  • 通过.env文件进行基于环境的配置

安装

  1. 克隆或下载此存储库
  1. 安装Python依赖项:
pip install -r requirements.txt

uv pip install -r requirements.txt
  1. 选择您的嵌入提供商:

选项A:OpenAI(推荐)

   # Copy environment file
   cp .env.example .env

   # Edit .env and add your API key
   # Get key from: https://platform.openai.com/api-keys
   OPENAI_API_KEY=sk-your-key-here

选项B:Ollama(免费,当地)

   # Download from https://ollama.ai
   # Pull the embedding model
   ollama pull nomic-embed-text

   # Edit .env
   EMBEDDING_PROVIDER=ollama

注意:Ollama在MCP/Claude Desktop环境中可能存在连接问题。

用法

运行服务器

python server.py

与Claude Desktop集成

要将此MCP服务器与Claude Desktop一起使用,请将以下配置添加到您的Claude Desktop配置文件中:

适用于MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json 对于Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "mcp-rag-chroma": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/mcp_rag_server",
        "run",
        "server.py"
      ]
    }
  }
}

替换 /path/to/mcp_rag_server 带有安装目录的实际路径。

或者,您也可以通过更新claude桌面直接从Github集成它,如下所示:

"mcp-rag-chroma": {
	"command": "uvx",
	"args": [
		"--from",
		"git+https://github.com/CyprianFusi/MCP-rag-with-Chromadb.git",
		"server.py"
	]
}

如果这是您的第一台MCP服务器,请使用以下内容:

{
  "mcpServers": {
	"mcp-rag-chroma": {
		"command": "uvx",
		"args": [
			"--from",
			"git+https://github.com/CyprianFusi/MCP-rag-with-Chromadb.git",
			"server.py"
		]
	}
  }
}

可用的MCP工具

1. ingest_document

从各种来源和格式获取文档。

参数:

  • source (str):URL、文件路径或目录路径

示例:

  • 从URL摄取: ingest_document("https://example.com/document.pdf")
  • 摄入单个文件: ingest_document("/path/to/document.docx")
  • 占用整个目录: ingest_document("/path/to/documents/")

支持的来源:

  • HTTP/HTTPS URL(先下载文件)
  • 本地文件路径(任何支持的格式)
  • 目录路径(处理所有支持的文件)

2. retrieve

根据查询搜索相关文档块。

参数:

  • query (str):搜索查询
  • n (int,可选):要返回的结果数(默认值:5,最大值:100)

退货: 包含文本、元数据和相似性得分的块列表

3. db_info

获取有关数据库及其内容的信息。

退货: 数据库统计信息、配置和唯一来源

4. clear_db

清除数据库中的所有数据。

退货: 状态消息

5. ingest_pdf (遗产)

向后兼容的PDF摄取工具。重定向到 ingest_document.

配置

在中编辑配置部分 server.py.env:

server.py设置:

CHROMA_PATH = "chroma_db"                   # Vector database storage path
CHUNK_SIZE = 4096                           # Text chunk size
CHUNK_OVERLAP = 409                         # Overlap between chunks
COLLECTION_NAME = "documents"               # ChromaDB collection name
DOWNLOAD_DIR = "downloads"                  # Directory for downloaded files

.env设置:

# Embedding Provider (openai or ollama)
EMBEDDING_PROVIDER=openai

# OpenAI settings (if using OpenAI)
OPENAI_API_KEY=sk-your-key-here

# Ollama settings (if using Ollama)
EMBED_MODEL=nomic-embed-text
OLLAMA_BASE_URL=http://localhost:11434

建筑

文档处理管道

  1. 源检测:确定源是URL、文件还是目录
  2. 下载 (如果是URL):将文件下载到本地存储
  3. 格式检测:按扩展名标识文档格式
  4. 文本提取:对格式使用适当的提取器
  5. 文本组块:将文本分割成重叠的块
  6. 嵌入:使用OpenAI或Ollama生成向量嵌入(可配置)
  7. 存储:在ChromaDB中存储块和嵌入

提取方法

每种格式都有专门的提取功能:

  • extract_text_from_pdf() -从PDF页面提取文本
  • extract_text_from_docx() -从Word文档中提取段落和表格
  • extract_text_from_pptx() -从PowerPoint幻灯片中提取文本
  • extract_text_from_xlsx() -从Excel工作表中提取数据
  • extract_text_from_odt() -从OpenDocument文件中提取文本
  • extract_text_from_html() -解析HTML并提取干净的文本
  • extract_text_from_markdown() -处理Markdown文件
  • 还有更多。..

主要的 extract_text() 函数根据文件扩展名路由到适当的提取器。

依赖项

必需

  • langchain-chroma -ChromaDB集成
  • langchain-ollama -奥利玛嵌入物
  • langchain-core -核心LangChain功能
  • langchain-text-splitters -文本分块
  • requests -HTTP下载
  • fastmcp -MCP服务器框架

文档格式支持

  • PyPDF2 -PDF提取
  • python-docx -DOCX提取
  • beautifulsoup4 + lxml -HTML/XML解析
  • python-pptx -PowerPoint提取
  • openpyxl -Excel提取
  • odfpy -OpenDocument提取
  • markdown -Markdown处理(可选)

错误处理

服务器包括全面的错误处理:

  • 当缺少可选依赖项时,性能会下降
  • 记录提取失败,而不会使整个过程崩溃
  • 不支持的文件类型的信息性错误消息
  • 回退到未知格式的文本提取

性能优化

  • 并发处理:使用ThreadPoolExecutor并行处理多个文档
  • 批量写入:在单个操作中写入数据库的所有块
  • 异步/等待:非阻塞I/O操作
  • 只读模式:以只读模式打开Excel文件以获得更好的性能
  • 流媒体下载:大块下载的大文件

局限性

  • .doc (旧Word格式)支持有限-需要 python-docx 哪种方法最有效 .docx
  • .ppt (旧PowerPoint格式)支持有限-最适合与 .pptx
  • .xls (旧Excel格式)支持有限-最适合 .xlsx
  • RTF文件使用基本文本提取
  • 没有OCR的扫描PDF将无法提取文本
  • 某些复杂的文档布局可能无法保留格式

故障排除

Ollama连接问题

确保Ollama正在运行且可访问:

curl http://localhost:11434/api/tags

空文本提取

  • 对于PDF:可能是扫描图像-考虑OCR工具
  • 对于其他格式:检查文件是否损坏或密码保护

许可证

该项目是开源的,可在 MIT许可证.

致谢

该项目基于多种优秀的开源技术构建:

核心框架和基础设施:

嵌入提供者:

文档处理:

特别感谢这些项目的开发人员和维护人员使RAG服务器成为可能。

贡献

欢迎投稿!要添加对新格式的支持,请执行以下操作:

  1. 按照模式添加提取功能 extract_text_from_[format]()
  2. 添加格式扩展名 SUPPORTED_EXTENSIONS
  3. 在中添加映射 extract_text() 函数
  4. 更新文档

目录标签

目录标签

检索增强生成PythonClaude搜索本地部署多格式文档处理语义搜索向量数据库LangChain集成

支持客户端

Claude DesktopClaude

接入字段

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

stdio

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

api-key

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdioapi-key部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP