项目简介

Servant(仆人)是一个灵活可扩展的智能家居助手平台,旨在与各种传感器、执行器和外部系统无缝集成。它提供了一个可定制的软件架构,以满足您的特定需求,无论是日常任务管理、工作流自动化还是高级AI驱动的交互。Servant实现了Model Context Protocol (MCP) 服务器API,使其能够作为AI Agent系统的一部分,为LLM客户端提供家居环境的上下文信息和功能。

主要功能点

  • 模块化设计: Servant由多个逻辑子系统模块组成,每个模块提供一组通过动作调用和事件订阅实现的功能。
  • AI能力 (MCP实现): 作为MCP服务器,Servant将家庭设备和服务的核心功能(如购物清单、日历、温度监控、通知管理等)封装为LLM可调用的工具,支持GenAI Agent系统进行智能交互和自动化。
  • 多样化交互方式: 提供RESTful API、WebSocket、Telegram聊天机器人、Google日历集成以及VoIP接口,实现人机或系统间的灵活交互。
  • 高度可扩展: 基于Java和Kotlin实现,采用Vert.x框架,支持轻松集成新的IoT设备、传感器和执行器,并与MQTT、Zigbee2MQTT、IFTTT等系统集成。
  • 智能化: 基于事件和动作的实现,支持创建高级算法;具备自然语言处理能力以优化人机交互;内置调度器用于自动化任务和事件触发。
  • 数据集成: 支持MongoDB和Neo4j数据库,便于数据存储和知识图谱构建。

安装步骤

Servant项目是一个基于Java 21和Maven构建的应用程序。在Linux系统上部署,请遵循以下步骤:

  1. 克隆仓库:
    git clone https://github.com/ucpdh23/Servant.git
    cd Servant
  2. 安装Java 21: 确保您的系统已安装Java Development Kit (JDK) 21。
    • 您可以从OpenAdoptium或Oracle官网下载并安装。
    • 验证Java版本:'java -version'
  3. 构建项目: 使用Maven编译项目。
    mvn compile
  4. 配置设置: 根据您的需求配置 'config' 文件(通常是 'src/main/resources/config.json' 或类似位置,具体文件名可能需要查阅项目约定)。此文件将包含数据库连接、API密钥、用户列表等关键信息。
  5. 运行应用程序:
    mvn exec:java

服务器配置

Servant作为MCP服务器,可以通过JSON-RPC协议与MCP客户端进行通信。MCP客户端需要配置Servant的启动命令及其参数。

以下是一个示例MCP客户端配置(JSON格式),您需要根据您的实际部署环境进行调整。

{
  "server_name": "Servant Home Assistant MCP Server",
  "command": "java",
  "args": [
    "-jar",
    "/path/to/Servant/target/Servant-1.0-SNAPSHOT-fat.jar", 
    "run", 
    "es.xan.servantv3.App",
    "-conf",
    "/path/to/Servant/config.json"
  ],
  "description": "Servant是一个智能家居助手平台,通过Model Context Protocol (MCP) 向LLM客户端提供家居环境的上下文信息和功能。它将购物清单、日历事件、温度监控等功能作为可调用的工具暴露给AI Agent。",
  "notes": [
    "请将 '/path/to/Servant/target/Servant-1.0-SNAPSHOT-fat.jar' 替换为实际的Jar文件路径。",
    "请将 '/path/to/Servant/config.json' 替换为实际的配置文件路径。",
    "确保config.json中包含MCPVerticle和ParrotVerticle等模块的配置信息,例如API密钥、Telegram Bot Token等。",
    "Servant通过Vert.x Event Bus Bridge (默认端口 7000) 和MCPVerticle(内部监听)处理MCP请求。确保网络可达。"
  ]
}

参数注释:

  • 'server_name': MCP服务器的名称,用于标识。
  • 'command': 启动MCP服务器的可执行命令,通常是 'java'。
  • 'args': 传递给 'command' 的参数列表。
    • '-jar': 指定运行可执行Jar文件。
    • '/path/to/Servant/target/Servant-1.0-SNAPSHOT-fat.jar': Servant应用程序的可执行Jar文件路径。这个路径需要根据您实际的构建结果进行调整。通常在运行'mvn package'后生成。
    • 'run es.xan.servantv3.App': Vert.x的命令,用于运行'es.xan.servantv3.App'主Verticle。
    • '-conf /path/to/Servant/config.json': 指定Servant应用程序的配置文件路径。该文件应包含所有Verticle的配置,包括MCPVerticle所需的API密钥、Telegram Bot Token、MongoDB连接字符串等。

基本使用方法

Servant启动后,作为MCP服务器,它将通过内部机制(如Vert.x Event Bus)处理来自LLM客户端的MCP请求。例如:

  1. 调用MCP工具: LLM客户端可以发送JSON-RPC请求来调用Servant暴露的MCP工具,例如获取家庭温度、查询购物清单或管理日历事件。
    • 例如,一个LLM可能会调用一个名为 'TEMPERATURE' 的工具来获取当前家庭温度。
    • 或者调用 'ADD_TO_SHOPPING_LIST' 工具来添加新的购物项。
  2. 接收通知: Servant可以向连接的MCP客户端发送通知,例如当温度发生变化、检测到水泄漏或洗衣完成时。
  3. 通过UI/Bot交互: 除了MCP接口,用户还可以通过其Web界面、Telegram聊天机器人或VoIP接口与Servant进行直接交互,控制设备或查询信息。

信息

分类

桌面与硬件