项目简介
本项目是一个基于Model Context Protocol (MCP) 实现的服务器端应用。它的主要功能是通过MCP协议向连接的LLM(大语言模型)客户端提供结构化的外部能力,具体包括:
- RAG (Retrieval Augmented Generation) 搜索工具: 允许LLM查询本地文档库,获取与用户提问相关的上下文信息。
- 基础计算工具: 提供简单的数学运算功能(加法、减法、平方根)。
这个服务器是设计用来增强LLM的应用场景,使其能够访问并利用外部知识源(如文档库)和执行特定任务(如计算)。
主要功能点
- 提供RAG搜索工具: 允许LLM通过调用 'search_documents' 工具,根据查询字符串检索预处理过的文档块。
- 提供数学计算工具: 提供了 'add', 'subtract', 'sqrt' 等工具,供LLM执行基本的数学计算。
- 遵循MCP协议: 使用 'fastmcp' 库构建,通过标准化的JSON-RPC协议与MCP客户端通信。
- 支持Stdio传输: 服务器可以通过标准输入/输出与客户端进行通信。
安装步骤
本项目依赖于Python环境和一些第三方库。
- 克隆仓库:
git clone https://github.com/rajagopal17/agenticMCP_rag.git cd agenticMCP_rag - 安装依赖:
需要安装 'mcp', 'fastmcp', 'requests', 'faiss-cpu', 'numpy', 'tqdm', 'markitdown', 'Pillow' 等库。建议使用pip安装:
pip install mcp fastmcp requests faiss-cpu numpy tqdm markitdown Pillow # 如果在Mac上安装faiss,可能需要 faiss-gpu 或其他版本 # pip install faiss-gpu - 设置RAG所需外部服务和数据 (重要):
- 嵌入模型服务: RAG功能依赖于一个外部的嵌入模型服务(例如使用Ollama),服务器代码中配置的地址是 'http://localhost:11434/api/embeddings',模型名称为 'nomic-embed-text'。您需要确保相应的嵌入模型服务正在运行并可通过该地址访问。
- FAISS索引和元数据: RAG搜索依赖于预先构建好的FAISS索引文件 ('index.bin') 和对应的元数据文件 ('my_metadata.json'),它们应存放在项目根目录下的 'my_faiss_index' 文件夹中。本项目代码中并未提供构建这些文件的方法,您需要根据自己的文档数据自行生成。
服务器配置 (供MCP客户端使用)
MCP客户端需要知道如何启动并连接到这个服务器。以下是客户端连接此服务器时可能需要的配置信息(通常以JSON格式提供):
{ "server_name": "Calculator", "command": "python", "args": ["mcpRAG.py"], "transport": "stdio" }
参数说明:
- 'server_name': 服务器在MCP协议中声明的名称,本项目中设置为 "Calculator"。
- 'command': 启动服务器进程的命令,这里是Python解释器。
- 'args': 传递给启动命令的参数列表,这里是服务器脚本文件名 'mcpRAG.py'。
- 'transport': 通信传输协议,本项目使用 'stdio' (标准输入/输出)。
基本使用方法
- 启动服务器: 在项目根目录下运行以下命令启动服务器:
服务器会启动并监听标准输入/输出。为了避免干扰,调试信息会输出到标准错误。服务器启动后会持续运行,直到收到停止信号或进程被终止。python mcpRAG.py - 连接MCP客户端: 使用一个兼容MCP协议的客户端连接到正在运行的服务器进程。客户端需要使用上面提供的配置信息来建立连接。
- 客户端与服务器交互:
- 客户端连接成功后,会发送 'initialize' 请求。
- 客户端可以发送 'list_tools' 请求来获取服务器提供的工具列表及其描述(包括 'search_documents', 'add', 'subtract', 'sqrt')。
- 客户端(通常是LLM应用)可以根据任务需求,选择合适的工具并发送相应的JSON-RPC请求来调用工具,例如调用 'search_documents' 进行文档搜索,或调用 'add' 进行加法计算。
- 服务器接收到工具调用请求后,会执行相应的Python函数,并将结果通过JSON-RPC响应返回给客户端。
注意: RAG搜索工具 ('search_documents') 需要前面安装步骤中提到的外部依赖(嵌入模型服务和FAISS索引)才能正常工作。如果没有这些,调用该工具可能会失败。其他数学工具则可以直接使用。
信息
分类
AI与计算