项目简介

Distiller CM5 Python Framework 是一个用于与大型语言模型(LLM)交互的客户端-服务器框架,基于多模态会话协议(MCP)。本项目仓库包含了该框架的Python实现,其中包括一个强大的MCP客户端、一个可选的本地LLM服务器,以及多个实现设备特定功能的MCP服务器示例。这些MCP服务器通过标准的MCP协议向LLM客户端提供工具和上下文,使得LLM能够与Distiller CM5设备进行交互并控制其硬件或系统服务。

主要功能点

本仓库中的MCP服务器示例主要提供以下功能作为LLM可调用的“工具”:

  • LED控制: 精确控制设备上的RGB LED的颜色、亮度和闪烁模式。
  • 语音合成 (TTS): 将文本转换为语音并在设备上播放, enabling conversational interactions.
  • WiFi管理: 获取可用WiFi网络列表、查询当前连接状态以及连接到指定的WiFi网络。

安装步骤

  1. 安装 uv: 推荐使用 uv 作为虚拟环境和包管理器。
    curl -LsSf https://astral.sh/uv/install.sh | sh
    source $HOME/.cargo/env
  2. 创建并激活虚拟环境:
    # 进入项目根目录
    cd /path/to/distiller-cm5-python
    uv venv
    source .venv/bin/activate
  3. 安装依赖: 安装项目所需的依赖和外部SDK。
    uv pip install -r requirements.txt
    uv pip install distiller-cm5-sdk
    注意:某些依赖(如 'llama-cpp-python' 或 'PyQt6')可能需要额外的系统库或构建工具。请参考它们的官方文档。'distiller-cm5-sdk' 也可能有前置依赖(如 'portaudio')。
  4. 下载模型文件 (可选,用于本地LLM服务或SDK):
    • 如果使用本地LLM服务器,将GGUF模型文件放入 'distiller_cm5_python/llm_server/models/' 目录。
    • 如果使用SDK中的语音功能(ASR/TTS),请参考 distiller-cm5-sdk README 下载所需的模型或可执行文件(如 Whisper 和 Piper 的模型)。
  5. 配置: 复制 'distiller_cm5_python/utils/default_config.json' 到项目根目录并重命名为 'mcp_config.json'。根据需求修改配置,例如LLM提供者、服务器URL、模型名称等。也可以通过环境变量覆盖配置。

服务器配置 (供MCP客户端使用)

MCP服务器通常作为独立的进程运行,并通过标准输入/输出来与MCP客户端通信(默认使用Stdio传输协议)。MCP客户端需要知道如何启动这个服务器进程。以下是MCP客户端在其配置文件(例如 'mcp_config.json')中配置一个MCP服务器(例如LED控制服务器)的示例格式:

{
  "mcp_servers": {
    "available_servers": [
      {
        "name": "LED Control Server",
        "description": "Provides tools for controlling the device's RGB LED.",
        "command": "python",
        "args": ["-m", "distiller_cm5_python.mcp_server.led_use_server"]
      },
      {
        "name": "Talk Server (TTS)",
        "description": "Provides text-to-speech capabilities.",
        "command": "python",
        "args": ["-m", "distiller_cm5_python.mcp_server.tts_use_server"]
      },
      {
        "name": "WiFi Management Server",
        "description": "Provides tools for managing WiFi connections.",
        "command": "python",
        "args": ["-m", "distiller_cm5_python.mcp_server.wifi_use_server"]
      }
      // ... 可以配置其他 MCP 服务器
    ],
    "server_script_path": "mcp_server/wifi-use_server.py" // 客户端默认启动的服务器脚本路径(旧配置项,可能被新的列表取代)
  }
  // ... 其他客户端配置
}
  • 'name': MCP服务器在客户端界面中显示的名称。
  • 'description': 服务器功能的简要描述。
  • 'command': 启动MCP服务器进程的命令,通常是 'python' 或其他解释器路径。
  • 'args': 传递给命令的参数列表,用于指定要运行的服务器脚本 ('-m' 表示作为模块运行)。

用户在使用此MCP服务器实现时,通常不需要直接运行服务器脚本,而是配置其MCP客户端(例如本项目仓库中的客户端)来启动和连接到这些服务器脚本。

基本使用方法

  1. 启动LLM后端: 根据您的配置选择一种方式启动LLM后端(本项目提供的本地LLM服务器、OpenRouter API或其他兼容OpenAI API的服务)。例如,启动本地LLM服务器:
    source .venv/bin/activate # 激活虚拟环境
    python -m distiller_cm5_python.llm_server.server --model_name your_model.gguf
  2. 启动MCP客户端: 在另一个终端中,激活相同的虚拟环境,然后运行客户端主程序 'main.py'。通过 '--server-script' 参数指定要连接的MCP服务器脚本。
    source .venv/bin/activate # 激活虚拟环境
    # 启动CLI客户端并连接到WiFi管理服务器
    python main.py --server-script distiller_cm5_python/mcp_server/wifi_use_server.py
    # 或启动GUI客户端并连接到TTS服务器
    # python main.py --gui --server-script distiller_cm5_python/mcp_server/tts_use_server.py
    客户端将启动指定的MCP服务器进程,并通过MCP协议与其通信,向LLM提供服务器暴露的功能(工具和Prompt)。

信息

分类

桌面与硬件