项目简介
该仓库提供了一系列使用Model Context Protocol (MCP) 的客户端和服务器实现示例。其核心展示了如何构建一个轻量级的MCP服务器来托管工具,并如何使用LLM驱动的客户端来发现和调用这些工具。项目包含基于Stdio和SSE两种传输协议的服务器实现。
主要功能点
- MCP服务器实现: 使用 'FastMCP' 框架快速构建MCP服务器,支持工具的注册和执行。
- 多种传输协议支持: 演示了通过标准输入/输出 (Stdio) 和 Server-Sent Events (SSE) 两种方式与MCP客户端进行通信。
- 工具注册与调用: 示例服务器注册了具体的工具(如BMI计算、时间和天气查询),客户端通过MCP协议发现并调用这些工具。
- LLM集成示例: 包含利用OpenAI或其他LLM模型作为代理,根据用户自然语言请求智能识别并调用MCP服务器上可用工具的客户端代码。
安装步骤
- 克隆仓库到本地:
git clone https://github.com/zahere-dev/mcp-labs.git cd mcp-labs - 安装所需的Python依赖包:
pip install -r requirements.txt - 设置环境变量:
创建 '.env' 文件在项目根目录,并添加所需的API Key(例如,OpenAI API Key 用于LLM客户端,OpenWeatherMap API Key 用于天气工具)。
OPENAI_API_KEY=your_openai_api_key OPENWEATHERMAP_API_KEY=your_openweathermap_api_key
服务器配置
MCP服务器是为MCP客户端提供服务的后端。MCP客户端需要知道如何连接到服务器并与其通信。对于此仓库中的示例服务器,MCP客户端通常需要以下配置信息:
- 对于Stdio服务器 (如BMI服务器): 客户端需要知道服务器的启动命令及其参数。这通常表示为包含 'command' (服务器可执行文件路径或命令,如 'python') 和 'args' (传递给命令的参数列表,如 '['bmi_server.py']') 的配置。服务器的名称 ('BMI Server') 会在初始化时通过协议传递给客户端。
- 对于SSE服务器 (如天气和时间服务器): 客户端需要知道服务器的SSE连接入口URL。例如,默认配置下是 'http://localhost:8100/sse'。服务器的名称 ('Weather and Time SSE Server') 同样在初始化时传递。
这些配置信息使MCP客户端能够找到并启动(对于Stdio)或连接到(对于SSE)相应的MCP服务器,进而发现并调用其提供的工具。
基本使用方法
- 启动Stdio BMI服务器: 运行 'mcp_client_server_stdio/bmi_server.py' 文件。它会作为Stdio进程运行。
- 启动SSE天气和时间服务器: 运行 'mcp_client_server_sse/mcp_server_sse.py' 文件。它会启动一个HTTP服务器(默认端口8100)。
- 运行客户端示例:
- 运行 'mcp_client_server_stdio/bmi_client.py' 调用Stdio BMI服务器的工具。
- 运行 'mcp_client_server_sse/mcp_client_sse.py' 调用SSE天气和时间服务器的工具。
- 运行 'mcp_client_server_sse/mcp_client_sse_chat.py' 进行简单的SSE服务器聊天交互。
- 组合示例: 启动 'mcp_chat_ux_stdio_sse/mcp_client_api.py' (FastAPI应用,默认端口8200)。这个API作为客户端聚合器,连接到配置的Stdio和SSE服务器。然后可以运行 'mcp_chat_ux_stdio_sse/streamlit_chat.py' (Streamlit前端应用,默认端口8501) 连接到该API进行聊天交互,LLM会根据用户输入调用不同的后端MCP工具。
信息
分类
AI与计算