这是我的尝试,创建一个本地RAG MCP服务器,用于与本地的.docx和.xlsx文件进行对话。
该项目提供了一个基于Python的MCP代理,允许您使用Ollama进行本地语言模型推理,与您的本地Word(.docx)和Excel(.xlsx)文档进行对话,确保您的私有数据保留在您的机器上。
它使用LangChain社区组件进行文档加载、文本分割、嵌入和向量存储(ChromaDB),并通过mcp-sdk将其功能暴露为一组工具。
特性:
mcp-cli。nomic-embed-text)转换成数值表示(嵌入)。llama3)来生成答案。ollama list来测试这一点。ollama pull nomic-embed-textollama pull llama3克隆仓库(或下载脚本):
# 如果您创建了一个Git仓库:
# git clone https://github.com/ItsMistahJi/local_RAG_mcp
# cd local_RAG_mcp
创建虚拟环境(推荐):
python -m venv venv
source venv/bin/activate # 在Windows上:venv\Scripts\activate
安装Python依赖项:
pip install -r requirements.txt
准备您的文档:
server.py脚本所在的同一目录下创建一个名为docs_simple的文件夹(或在脚本中配置DOC_DIR)。.docx和.xlsx文件放入这个docs_simple文件夹中。运行MCP代理脚本: 打开您的终端,导航到项目目录,并运行:
python server.py
脚本将启动,尝试连接到Ollama,然后等待MCP客户端连接(如MCP Inspector)。您将在该终端中看到日志输出。
使用MCP Inspector交互(推荐):
python /完整路径/to/your/server.py。stdio。initialize_and_index:首先运行此工具。它不需要参数。它将处理docs_simple中的文档,并在chroma_db_simple中创建本地向量数据库。检查代理终端日志以了解进度。ask_question:索引完成后,使用此工具。它接受一个参数:
{
"question": "关于这些文档的问题"
}
代理将检索相关信息并生成答案。使用mcp-cli交互(替代方法):
确保您的Python脚本(server.py)尚未运行。mcp-cli将为每个命令启动它。
列出可用工具(可选检查):
mcp tool list CompanyDocumentQA-Ollama --command "python server.py" --transport stdio
索引文档:
mcp tool call CompanyDocumentQA-Ollama initialize_and_index --command "python server.py" --transport stdio
(等待其完成。您将在终端中看到日志。)
提问:
m
mcp tool call CompanyDocumentQA-Ollama ask_question '{"question": "公司的年假政策是什么?"}' --command "python server.py" --transport stdio
server.py)initialize_and_index(MCP工具):
.docx和.xlsx文件。ask_question(MCP工具):
stdio上启动MCP代理服务器。load_documents_from_directory中添加PDF(PyPDFLoader)、文本文件(TextLoader)等加载器。记得安装必要的包(如pypdf,unstructured)。EMBEDDING_MODEL_NAME和LLM_MODEL_NAME以使用其他Ollama模型。确保它们已本地拉取。RecursiveCharacterTextSplitter中实验chunk_size和chunk_overlap以获得更好的结果。ask_question中的search_kwargs={"k": 3}以检索更多或更少的块。如有需要,探索其他检索模式。ask_question中优化提示模板以获得更好的LLM响应。ollama serve或Ollama桌面应用)。OLLAMA_BASE_URL是否匹配您的Ollama设置(默认是http://localhost:11434)。nomic-embed-text,llama3):ollama list。DOC_DIR路径,确保它指向正确的文件夹。initialize_and_index工具。检查终端日志以了解索引期间的错误。mcp-cli问题:
mcp-cli(pip install "mcp-cli[cli]")。--command "python /path/to/script.py"和--transport stdio标志。stdio传输。