使用说明
项目简介
本项目是一个基于Python实现的Model Context Protocol (MCP) 服务器演示,使用了Stdio作为传输协议。它展示了如何构建一个简单的MCP服务器,该服务器可以注册和执行工具,并与MCP客户端进行通信。此演示旨在帮助开发者理解MCP服务器的基本概念和实现方式。
主要功能点
- 工具注册与执行: 服务器注册了两个示例工具:'calculator'(计算器)和 'weather'(天气查询)。客户端可以调用这些工具来执行相应的操作。
- Stdio传输协议: 使用标准输入输出 (Stdio) 作为MCP客户端和服务器之间的通信通道,方便本地开发和调试。
- JSON-RPC通信: 服务器和客户端之间通过JSON-RPC协议进行结构化数据交换,符合MCP协议规范。
- 资源更新通知 (部分实现): 客户端代码中包含资源更新回调的注册和处理逻辑,尽管在服务器端此演示中资源管理功能可能较为基础。
安装步骤
- 克隆仓库: 首先,你需要克隆 GitHub 仓库到本地:
git clone https://github.com/aws-samples/Sample-Model-Context-Protocol-Demos.git - 进入目录: 导航到 Stdio 演示示例的目录:
cd Sample-Model-Context-Protocol-Demos/modules/converse-client-server-stdio-demo-local - 安装依赖 (如果需要): 虽然此示例可能依赖较少,但通常 Python 项目需要安装依赖。检查目录下是否有 'requirements.txt' 文件,如有则运行:
如果缺少 'mcp' 库,可能需要手动安装,例如 'pip install model-context-protocol-sdk' (请根据实际情况调整)。pip install -r requirements.txt
服务器配置
MCP客户端需要配置连接到MCP服务器的信息。对于此 Stdio 演示,配置信息主要指定服务器的启动命令和参数。以下是客户端 ('app.py') 中使用的 'StdioServerParameters' 配置,你需要将其转换为 MCP 客户端所需的配置格式 (通常是 JSON 格式,但具体格式取决于 MCP 客户端实现):
{ "serverName": "Demo Server", "transport": "stdio", "command": "python", "args": ["mcp_server.py"], "description": "使用 Python Stdio 启动的 MCP 服务器,提供计算器和天气查询工具。" }
参数注释:
- 'serverName': 服务器的名称,用于标识。
- 'transport': 指定传输协议为 "stdio"。
- 'command': 启动服务器的命令,这里是 'python',假设你的环境中可以直接运行 'python' 命令。
- 'args': 传递给 'python' 命令的参数,这里指定运行 'mcp_server.py' 文件,即 MCP 服务器的 Python 脚本。
- 'description': 对该服务器配置的简要描述,方便客户端用户理解。
注意: 实际 MCP 客户端的配置格式可能略有不同,上述 JSON 仅为示例,你需要根据你使用的 MCP 客户端的具体文档进行调整。关键是将 'command' 和 'args' 正确配置,以便客户端能够启动并连接到 'mcp_server.py'。
基本使用方法
-
启动 MCP 服务器: 在 'modules/converse-client-server-stdio-demo-local' 目录下,无需手动启动 'mcp_server.py'。客户端 'app.py' 会自动启动它。
-
运行 MCP 客户端: 在同一目录下,运行客户端程序 'app.py':
python app.py -
与 AI 助手对话: 程序启动后,你将在终端看到欢迎信息和可用的工具列表。你可以开始与 AI 助手进行对话。例如:
- 你可以直接提问,如 "What is the weather in London?",AI 助手可能会调用 'weather' 工具来尝试回答。
- 你可以要求进行计算,如 "Calculate 123 + 456",AI 助手可能会调用 'calculator' 工具。
- 输入 'quit' 或 'exit' 可以退出程序。
-
观察工具调用: 在对话过程中,你可以观察终端输出,了解 AI 助手是否以及如何调用注册的工具。服务器端的日志 ('mcp_server.log' 和标准错误输出) 也会记录工具的调用信息,有助于理解服务器的运行情况。
提示:
- 此演示中的 'weather' 工具和 'calculator' 工具都是模拟实现,'weather' 工具返回固定的天气信息,'calculator' 工具执行简单的数学运算。
- 客户端 ('app.py') 使用了 'ConverseAgent' 和 'ConverseToolManager' 等类,展示了如何构建一个可以使用工具的对话 Agent。
- 你可以修改 'mcp_server.py' 文件来添加或修改工具,并修改客户端代码来扩展 Agent 的功能。
信息
分类
开发者工具