项目简介
'mcp-in-action' 是一个包含多个实战示例的仓库,旨在帮助开发者理解和掌握 Model Context Protocol (MCP) 的开发与应用。它通过构建具体的客户端-服务器应用,展示如何让大型语言模型 (LLM) 通过 MCP 协议调用外部工具、访问实时数据和集成高级功能(如检索增强生成 RAG)。
本仓库的核心是展示 MCP 服务器 的构建,提供符合 MCP 规范的后端服务,供 MCP 客户端(通常是与 LLM 交互的应用)连接和使用。
主要功能点
- 构建 MCP 服务器: 提供符合 MCP 协议规范的应用后端框架。
- 工具注册与调用: 允许开发者定义可供 LLM 调用的外部函数或服务(例如,天气查询)。
- 外部数据访问: 通过工具或资源方式,使 LLM 能够获取实时或特定数据。
- 集成高级能力: 示例项目展示了如何将 MCP 与 RAG 等技术结合,增强 LLM 的知识处理能力。
- 多种传输支持: 示例基于 Stdio 传输协议进行通信(MCP 支持多种传输方式)。
安装步骤
- 克隆仓库:
git clone https://github.com/FlyAIBox/mcp-in-action.git cd mcp-in-action/mcp_demo # 以mcp_demo为例 - 安装依赖: 安装运行示例所需的 Python 库,包括 'mcp' 库和 HTTP 客户端库等。
pip install mcp httpx python-dotenv - 配置环境变量: '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' 服务器并与其交互。
- 运行客户端脚本: 在 'mcp-in-action/mcp_demo/client' 目录下运行客户端脚本。
客户端会自动启动服务器,连接并列出可用工具。python mcp_client.py - 与服务器交互: 在客户端的命令行界面输入命令。
- 输入 'list' 查看服务器提供的工具列表及其描述。
- 输入 'call <工具名> <参数>' 调用工具。例如,调用天气预警工具并传入城市ID:
或调用天气预报工具并传入城市ID和天数:call get_weather_warning 101010100call get_daily_forecast 101010100 7 - 输入 'help' 查看更多命令和示例。
- 输入 'exit' 退出客户端和服务器。
这个示例展示了如何通过 MCP 协议让客户端(模拟 LLM)发现并调用服务器提供的外部工具功能。
信息
分类
AI与计算