项目简介

此项目包含一个基于 Model Context Protocol (MCP) 构建的简单酒店查询后端服务示例。它演示了如何使用 MCP 协议来托管和提供一个“酒店查询”工具,允许大型语言模型 (LLM) 客户端以标准化的方式调用此功能,以获取特定地点和日期的酒店建议。

主要功能点

  • 酒店搜索工具: 根据城市、入住日期和退房日期搜索并返回模拟的酒店信息。
  • 日期验证: 自动验证入住和退房日期是否为有效的 ISO 格式(YYYY-MM-DD),并确保退房日期晚于入住日期。
  • 模拟数据生成: 生成包含酒店名称、地址、评级、价格、类型和便利设施等详细信息的模拟酒店列表。
  • MCP 协议支持: 通过 'fastmcp' 库实现 MCP JSON-RPC 协议,支持 'streamable-http' 传输方式,方便与 MCP 客户端集成。

安装步骤

  1. 克隆仓库: 打开终端或命令提示符,执行以下命令克隆项目仓库:
    git clone https://github.com/Azure-Samples/python-ai-agent-frameworks-demos.git
    cd python-ai-agent-frameworks-demos
  2. 创建并激活虚拟环境: 为了避免依赖冲突,建议创建并使用一个虚拟环境:
    python -m venv venv
    source venv/bin/activate  # 在 Windows 系统上,请使用 'venv\Scripts\activate'
  3. 安装依赖: 除了仓库自带的 'requirements.txt' 外,此 MCP 服务器示例还需要安装 'mcp[fastapi]' 和 'faker' 库:
    pip install -r requirements.txt
    pip install "mcp[fastapi]" faker

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

MCP 客户端需要以下配置信息来连接到此酒店查询服务。这些信息通常会被配置在客户端的配置文件中,以便客户端知道如何启动和与服务器通信。

{
  "name": "TravelServer",
  "command": "python",
  "args": [
    "examples/mcp_server_basic.py"
  ],
  "url": "http://localhost:8000/mcp",
  "transport": "streamable_http",
  "description": "一个用于查找酒店并返回详细建议的 MCP 服务器。"
}
  • 'name': 服务器的唯一标识符,例如 "TravelServer"。
  • 'command': 启动 MCP 服务器所需的可执行命令,例如 "python"。
  • 'args': 传递给 'command' 的参数列表,这里是服务器脚本的相对路径。
  • 'url': MCP 服务器监听的端点 URL,默认是 'http://localhost:8000/mcp'。
  • 'transport': 服务器使用的传输协议,这里是 'streamable_http'。
  • 'description': 服务器功能的简要描述。

基本使用方法

  1. 启动 MCP 服务器: 在一个新的终端窗口中,确保您已激活虚拟环境并位于仓库根目录,然后运行以下命令:

    python examples/mcp_server_basic.py

    服务器将在 'http://localhost:8000/mcp' 启动并监听 MCP 客户端的请求。

  2. (可选)使用示例客户端: 此仓库中的多个示例文件包含了连接到 MCP 服务器的客户端代码。例如,您可以运行 'examples/pydanticai_mcp_http.py' 来测试酒店搜索功能:

    python examples/pydanticai_mcp_http.py

    该客户端脚本会向您刚刚启动的 MCP 服务器发送酒店查询请求,并将返回的酒店建议打印到控制台。

信息

分类

AI与计算