项目简介

该仓库名为 RAG-Blueprint,是一个基于 LLaMA Stack、OpenShift AI 和 PGVector 构建的检索增强生成(RAG)参考架构。它展示了如何构建一个端到端的 RAG 应用,包括数据摄取、向量存储和与大型语言模型(LLM)的交互。

在该参考架构中,包含了一个示例性的 MCP 服务器实现,位于 'mcp-servers/weather/weather.py'。这个独立的 Python 脚本充当一个 MCP 工具服务器,提供了通过 MCP 协议访问天气数据的功能,并可被支持 MCP 的 LLM 客户端(如 Llama Stack 框架内的客户端)调用。

主要功能点

这个示例 MCP 服务器专注于提供天气相关的工具功能:

  • 天气警报查询: 根据美国州份代码查询当前有效的恶劣天气警报。
  • 天气预报查询: 根据经纬度查询指定位置的详细天气预报。
  • MCP 工具接口: 通过标准的 MCP JSON-RPC 协议暴露上述功能,供 LLM 客户端调用。
  • 基于 FastMCP 构建: 使用 FastMCP 库简化 MCP 服务器的实现过程。

安装步骤

这个 MCP 服务器是一个独立的 Python 脚本。你需要先安装必要的 Python 库:

  1. 确保你已安装 Python 3.7 或更高版本。
  2. 克隆整个 RAG-Blueprint 仓库:
    git clone https://github.com/RHEcosystemAppEng/RAG-Blueprint.git
    cd RAG-Blueprint
  3. 安装 MCP 服务器所需的依赖(主要是 'fastmcp' 和 'httpx'):
    pip install fastmcp httpx
  4. 你可能需要安装 'llama-stack-client' 如果想运行 UI 部分来测试集成,但运行 MCP 服务器本身只需要上述依赖。
  5. 运行 MCP 服务器脚本:
    python mcp-servers/weather/weather.py
    服务器将启动并监听连接。根据脚本实现(默认使用 SSE),它可能会通过标准输入/输出或网络端口提供服务。

服务器配置 (供 MCP 客户端使用)

MCP 客户端需要知道如何连接到这个 MCP 服务器并发现其提供的工具。以下是 MCP 客户端配置该天气工具服务器所需的基本信息,例如在支持 MCP 的框架(如 Llama Stack)中进行配置时:

{
  // 服务器的唯一名称,必须与服务器启动时指定的名称一致
  "name": "weather",
  // 客户端如何启动或连接服务器的命令
  // 对于 Stdio 传输,这通常是启动服务器脚本的命令
  "command": "python",
  // 启动命令所需的参数
  // 对于 Stdio 传输,通常是服务器脚本的路径
  "args": ["mcp-servers/weather/weather.py"]
  // 注意:具体的连接方式(如网络地址、端口、传输协议 StdIo/SSE/WebSocket)
  // 可能需要额外的配置,取决于客户端框架和服务器启动时的实际行为。
  // 在这个示例中,脚本默认使用 SSE 传输,客户端框架需要配置相应的连接 URI。
  // 例如,在一个 mcp_servers_config.yaml 文件中可能这样配置 URL:
  // mcp_servers:
  //   - name: weather
  //     url: "http://localhost:你的端口号/sse" // 或其他实际的服务器地址/协议
}

基本使用方法

一旦 MCP 服务器运行起来,并被 MCP 客户端框架(如 RAG-Blueprint 的 Streamlit UI,通过 Llama Stack 连接)正确配置和注册,LLM 就可以发现并调用其提供的工具。

例如,LLM 收到一个关于天气的问题时,客户端框架会识别出可以回答这个问题的 MCP 工具(如 'weather::get_alerts' 或 'weather::get_forecast'),然后构造一个 JSON-RPC 请求发送给 MCP 服务器。服务器执行对应的 Python 函数 ('get_alerts' 或 'get_forecast'),并将结果通过 JSON-RPC 响应返回给客户端。客户端再将结果提供给 LLM,以生成最终的用户回复。

用户在使用 RAG-Blueprint UI 时,如果配置并启动了此天气 MCP 服务器,并在 UI 侧边栏选中了 'mcp::weather' 工具组,LLM 聊天模型就可以被赋予调用天气查询工具的能力。

信息

分类

网页与API