项目简介

'mcp-in-action' 是一个包含多个实战示例的仓库,旨在帮助开发者理解和掌握 Model Context Protocol (MCP) 的开发与应用。它通过构建具体的客户端-服务器应用,展示如何让大型语言模型 (LLM) 通过 MCP 协议调用外部工具、访问实时数据和集成高级功能(如检索增强生成 RAG)。

本仓库的核心是展示 MCP 服务器 的构建,提供符合 MCP 规范的后端服务,供 MCP 客户端(通常是与 LLM 交互的应用)连接和使用。

主要功能点

  • 构建 MCP 服务器: 提供符合 MCP 协议规范的应用后端框架。
  • 工具注册与调用: 允许开发者定义可供 LLM 调用的外部函数或服务(例如,天气查询)。
  • 外部数据访问: 通过工具或资源方式,使 LLM 能够获取实时或特定数据。
  • 集成高级能力: 示例项目展示了如何将 MCP 与 RAG 等技术结合,增强 LLM 的知识处理能力。
  • 多种传输支持: 示例基于 Stdio 传输协议进行通信(MCP 支持多种传输方式)。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/FlyAIBox/mcp-in-action.git
    cd mcp-in-action/mcp_demo # 以mcp_demo为例
  2. 安装依赖: 安装运行示例所需的 Python 库,包括 'mcp' 库和 HTTP 客户端库等。
    pip install mcp httpx python-dotenv
  3. 配置环境变量: 'mcp_demo' 中的天气服务器需要访问外部天气API。你需要获取一个API密钥,并在项目目录下创建 '.env' 文件来存储配置。
    • 申请和风天气开发密钥 (opensky.com)。
    • 在 'mcp-in-action/mcp_demo' 目录下创建 '.env' 文件,并添加以下内容(将 'YOUR_API_KEY' 替换为你申请的密钥):
      QWEATHER_API_BASE=https://devapi.qweather.com/v7
      QWEATHER_API_KEY=YOUR_API_KEY

服务器配置说明 (供MCP客户端参考)

一个 MCP 客户端需要知道如何连接到 MCP 服务器。对于基于 Stdio 传输的服务器,客户端通常需要提供服务器的可执行命令和参数。

例如,对于 'mcp_demo' 中的天气服务器 ('weather_server.py'),MCP 客户端的配置信息应指定:

  • 服务器名称 ('server name'): 可以自定义,例如 "weather_server"。
  • 传输协议 ('transport'): 例如 "stdio"。
  • 命令 ('command'): 启动服务器脚本的命令,例如 "python"。
  • 参数 ('args'): 传递给命令的参数列表,例如 '["path/to/your/cloned/repo/mcp-in-action/mcp_demo/server/weather_server.py"]'。

客户端会使用这些信息通过 Stdio 启动并与服务器进程通信。

基本使用方法 (以mcp_demo为例)

该仓库中的 'mcp_demo/client/mcp_client.py' 脚本是一个示例客户端,它会自动启动 'weather_server.py' 服务器并与其交互。

  1. 运行客户端脚本: 在 'mcp-in-action/mcp_demo/client' 目录下运行客户端脚本。
    python mcp_client.py
    客户端会自动启动服务器,连接并列出可用工具。
  2. 与服务器交互: 在客户端的命令行界面输入命令。
    • 输入 'list' 查看服务器提供的工具列表及其描述。
    • 输入 'call <工具名> <参数>' 调用工具。例如,调用天气预警工具并传入城市ID:
      call get_weather_warning 101010100
      或调用天气预报工具并传入城市ID和天数:
      call get_daily_forecast 101010100 7
    • 输入 'help' 查看更多命令和示例。
    • 输入 'exit' 退出客户端和服务器。

这个示例展示了如何通过 MCP 协议让客户端(模拟 LLM)发现并调用服务器提供的外部工具功能。

信息

分类

AI与计算