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