使用说明
项目简介
本项目包含两个基于 Model Context Protocol (MCP) 协议的服务器实现:
- IoT 设备控制 MCP 服务器 (iot_mcp_server.py):用于控制和监控物联网设备,例如智能灯泡、传感器等。它允许你通过标准化的 MCP 接口向 LLM 发送指令、查询设备状态和订阅设备更新。
- 长期记忆管理 MCP 服务器 (memory_mcp_server.py):利用 Mem0 框架实现长期记忆的存储和检索。它可以作为 LLM 应用的知识库,提供上下文记忆和语义搜索能力。
主要功能点
IoT 设备控制 MCP 服务器:
- 设备控制: 支持发送命令控制物联网设备,例如开关灯泡。
- 状态查询: 查询设备的当前状态,例如灯泡的开关状态、亮度、颜色等。
- 实时更新: 订阅设备状态的实时更新 (通过 MQTT)。
- 默认设备: 内置一个 light_bulb_001 模拟灯泡设备用于测试和演示。
长期记忆管理 MCP 服务器:
- 记忆存储: 将文本信息保存到长期记忆中。
- 记忆检索: 检索所有存储的记忆。
- 语义搜索: 根据语义相似性搜索记忆内容。
安装步骤
-
克隆仓库
git clone https://github.com/jordy33/iot_mcp_server.git cd iot_mcp_server -
安装依赖
pip install -r requirements.txt -
配置环境变量
- 复制 '.env.example' 文件并重命名为 '.env'。
- 根据需要修改 '.env' 文件中的环境变量。
IoT MCP 服务器 的常用环境变量:
- 'MQTT_BROKER': MQTT Broker 地址 (默认为 'localhost')
- 'MQTT_PORT': MQTT Broker 端口 (默认为 '1883')
- 'HOST': 服务器Host地址 (默认为 '0.0.0.0')
- 'PORT': 服务器端口 (默认为 '8090')
- 'TRANSPORT': 传输协议类型,可选 'sse' 或 'stdio' (默认为 'sse')
Memory MCP 服务器 的常用环境变量:
- 'MEM0_API_KEY': Mem0 服务 API 密钥 (可选,取决于 Mem0 的配置)
- 'MEM0_ENDPOINT': Mem0 服务 Endpoint URL (默认为 'https://api.mem0.ai')
- 'HOST': 服务器Host地址 (默认为 '0.0.0.0')
- 'PORT': 服务器端口 (默认为 '8050')
- 'TRANSPORT': 传输协议类型,可选 'sse' 或 'stdio' (默认为 'sse')
-
运行服务器
IoT MCP 服务器:
python iot_mcp_server.pyMemory MCP 服务器:
python memory_mcp_server.py注意: 确保你的环境中安装了 Python 和 pip,并且 MQTT Broker (如 Mosquitto) 正在运行 (如果使用 IoT MCP 服务器)。如果你想测试 IoT MCP 服务器的灯泡控制功能,可以运行 'light_bulb_simulator.py' 模拟一个 MQTT 灯泡设备:
python light_bulb_simulator.py
服务器配置 (MCP 客户端配置)
MCP 客户端需要配置以下信息来连接到 MCP 服务器。以下是针对 IoT 设备控制 MCP 服务器 和 长期记忆管理 MCP 服务器 的示例配置,你可以根据实际情况进行调整。
IoT 设备控制 MCP 服务器 配置 (server config json):
{ "server name": "mcp-iot", "command": "python iot_mcp_server.py", "args": [], "transport": "sse", "host": "localhost", "port": "8090" }
参数注释:
- 'server name': 服务器名称,标识服务器类型,例如 "mcp-iot"。
- 'command': 启动服务器的命令,例如 'python iot_mcp_server.py'。
- 'args': 启动命令的参数,本例中为空数组,表示没有额外参数。
- 'transport': 传输协议类型,例如 "sse" (Server-Sent Events)。
- 'host': 服务器Host地址,例如 "localhost" 或 "127.0.0.1"。
- 'port': 服务器端口,例如 "8090"。
长期记忆管理 MCP 服务器 配置 (server config json):
{ "server name": "mcp-mem0", "command": "python memory_mcp_server.py", "args": [], "transport": "sse", "host": "localhost", "port": "8050" }
参数注释:
- 'server name': 服务器名称,标识服务器类型,例如 "mcp-mem0"。
- 'command': 启动服务器的命令,例如 'python memory_mcp_server.py'。
- 'args': 启动命令的参数,本例中为空数组,表示没有额外参数。
- 'transport': 传输协议类型,例如 "sse" (Server-Sent Events)。
- 'host': 服务器Host地址,例如 "localhost" 或 "127.0.0.1"。
- 'port': 服务器端口,例如 "8050"。
注意:
- 'transport' 可以设置为 'stdio' 以使用标准输入/输出进行通信,或者设置为 'sse' 使用 Server-Sent Events。
- 'host' 和 'port' 需要与你运行服务器的地址和端口一致。如果服务器和客户端运行在同一台机器上,可以使用 'localhost' 或 '127.0.0.1'。
基本使用方法
- 启动 MCP 服务器: 根据上述步骤运行你需要的 MCP 服务器 (IoT 或 Memory)。
- 配置 MCP 客户端: 在你的 MCP 客户端应用中,配置上面提供的服务器配置信息 (JSON)。
- 调用工具: 使用 MCP 客户端向服务器发送请求,调用服务器提供的工具 (Tools)。
例如,使用 IoT 设备控制 MCP 服务器控制灯泡:
- 调用 'list_devices' 工具可以列出可用的设备和相关命令。
- 调用 'light_bulb_on' 工具可以打开灯泡。
- 调用 'check_light_status' 工具可以查询灯泡状态。
例如,使用长期记忆管理 MCP 服务器进行记忆操作:
- 调用 'save_memory' 工具可以保存信息到记忆库。
- 调用 'search_memories' 工具可以根据关键词搜索记忆。
- 调用 'get_all_memories' 工具可以获取所有记忆。
具体工具的使用方法请参考代码中 '@mcp.tool()' 注解的函数文档 (docstring)。
信息
分类
桌面与硬件