项目简介

本项目是一个基于Model Context Protocol (MCP) 实现的服务器端应用。它的主要功能是通过MCP协议向连接的LLM(大语言模型)客户端提供结构化的外部能力,具体包括:

  1. RAG (Retrieval Augmented Generation) 搜索工具: 允许LLM查询本地文档库,获取与用户提问相关的上下文信息。
  2. 基础计算工具: 提供简单的数学运算功能(加法、减法、平方根)。

这个服务器是设计用来增强LLM的应用场景,使其能够访问并利用外部知识源(如文档库)和执行特定任务(如计算)。

主要功能点

  • 提供RAG搜索工具: 允许LLM通过调用 'search_documents' 工具,根据查询字符串检索预处理过的文档块。
  • 提供数学计算工具: 提供了 'add', 'subtract', 'sqrt' 等工具,供LLM执行基本的数学计算。
  • 遵循MCP协议: 使用 'fastmcp' 库构建,通过标准化的JSON-RPC协议与MCP客户端通信。
  • 支持Stdio传输: 服务器可以通过标准输入/输出与客户端进行通信。

安装步骤

本项目依赖于Python环境和一些第三方库。

  1. 克隆仓库:
    git clone https://github.com/rajagopal17/agenticMCP_rag.git
    cd agenticMCP_rag
  2. 安装依赖: 需要安装 '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
  3. 设置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' (标准输入/输出)。

基本使用方法

  1. 启动服务器: 在项目根目录下运行以下命令启动服务器:
    python mcpRAG.py
    服务器会启动并监听标准输入/输出。为了避免干扰,调试信息会输出到标准错误。服务器启动后会持续运行,直到收到停止信号或进程被终止。
  2. 连接MCP客户端: 使用一个兼容MCP协议的客户端连接到正在运行的服务器进程。客户端需要使用上面提供的配置信息来建立连接。
  3. 客户端与服务器交互:
    • 客户端连接成功后,会发送 'initialize' 请求。
    • 客户端可以发送 'list_tools' 请求来获取服务器提供的工具列表及其描述(包括 'search_documents', 'add', 'subtract', 'sqrt')。
    • 客户端(通常是LLM应用)可以根据任务需求,选择合适的工具并发送相应的JSON-RPC请求来调用工具,例如调用 'search_documents' 进行文档搜索,或调用 'add' 进行加法计算。
    • 服务器接收到工具调用请求后,会执行相应的Python函数,并将结果通过JSON-RPC响应返回给客户端。

注意: RAG搜索工具 ('search_documents') 需要前面安装步骤中提到的外部依赖(嵌入模型服务和FAISS索引)才能正常工作。如果没有这些,调用该工具可能会失败。其他数学工具则可以直接使用。

信息

分类

AI与计算