项目简介

Scenic MCP是一个为Elixir语言的Scenic GUI应用设计的模型上下文协议(MCP)服务器。它允许外部AI助手(如Claude Desktop或Claude Code)像人类用户一样与Scenic应用互动。通过模拟键盘输入、鼠标操作和提供视觉反馈,Scenic MCP能够实现自动化测试、AI驱动的开发工作流以及增强可访问性等多种功能。

主要功能点

  • 键盘输入模拟:AI助手可以发送文本、特殊按键(如回车、Esc、Tab)以及组合键(如Ctrl+S、Cmd+C),精确模拟用户键盘操作,实现自动化文本输入和快捷键触发。
  • 鼠标精确控制:AI助手能够将鼠标光标移动到屏幕上的指定坐标,并进行左键、右键或中键点击,实现与应用界面元素的精确交互。
  • 视觉反馈与界面分析:AI助手可以获取当前Scenic应用界面的文本结构描述,帮助理解界面布局和可交互元素;同时,还能捕获应用界面的屏幕截图,用于视觉验证、状态记录或进一步的图像分析。
  • MCP集成:无缝集成到支持MCP协议的客户端(如Claude Desktop和Claude Code),为LLM提供标准化的工具调用接口。

安装步骤

此项目包含两部分:一个用于Scenic应用的Elixir库和一个负责MCP通信的TypeScript服务器。

  1. 添加Elixir依赖: 将'scenic_mcp'作为依赖添加到您的Scenic应用中。由于此库尚未发布到Hex,您需要先克隆仓库,然后将其作为本地依赖添加。

    # 在您的Scenic应用目录下的 mix.exs 文件中
    defp deps do
      [
        {:scenic_mcp, "../scenic_mcp_experimental"} # 假设 scenic_mcp_experimental 仓库位于您的应用目录的上一级
      ]
    end

    同时,更新您的Scenic应用监督树,确保您的viewport和driver进程具有指定的名称(默认分别为':main_viewport'和':scenic_driver'),以便'scenic_mcp'能够找到它们。您也可以通过配置文件自定义这些名称和端口。

  2. 构建TypeScript服务器: 进入'scenic_mcp_experimental'仓库的根目录,安装Node.js依赖并构建TypeScript代码。

    cd /path/to/scenic_mcp_experimental # 切换到仓库目录
    npm install
    npm run build

    这将在'dist/'目录中生成'index.js'文件,该文件将作为MCP服务器的启动入口。

服务器配置

您需要将MCP服务器的启动信息配置到您的MCP客户端(如Claude Desktop或Claude Code)中。这通常通过客户端的配置文件(例如Claude Desktop的'~/.claude.json')完成。

配置信息通常是JSON格式,包含以下关键参数:

  • 服务器名称 (server name):一个唯一的标识符,例如 'scenic-mcp'。MCP客户端将使用此名称来引用该服务器。
  • 类型 (type):设置为 'stdio',表示MCP客户端通过标准输入/输出与服务器通信。
  • 命令 (command):指向'scenic_mcp_experimental'仓库编译后的'dist/index.js'文件的完整路径。这是MCP服务器实际执行的启动脚本。例如:'/path/to/scenic_mcp_experimental/dist/index.js'。
  • 参数 (args):一个可选的字符串数组,用于传递给'command'的额外参数。通常可以留空。
  • 环境变量 (env):一个可选的键值对对象,用于为服务器进程设置环境变量。通常可以留空。

配置示例(无需修改,仅作说明): 例如,如果您使用的是Claude Code CLI,可以使用以下命令添加: 'claude mcp add scenic-mcp /path/to/scenic_mcp_experimental/dist/index.js' 或者在'~/.claude.json'中手动添加类似以下结构的内容(请替换'/path/to/your/project'和'/path/to/scenic_mcp_experimental'为实际路径):

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "scenic-mcp": {
          "type": "stdio",
          "command": "/path/to/scenic_mcp_experimental/dist/index.js",
          "args": [],
          "env": {}
        }
      }
    }
  }
}

完成配置后,启动您的Scenic应用('iex -S mix'),您将看到Scenic MCP服务器成功启动的消息。

基本使用方法

一旦MCP客户端与Scenic MCP服务器连接成功,AI助手就可以通过调用服务器提供的工具函数来与Scenic应用进行互动:

  • 连接与状态检查
    • 'connect_scenic':用于尝试连接到正在运行的Scenic应用程序,您可以在调用其他工具前指定端口进行连接。
    • 'get_scenic_status':检查当前的连接状态和Scenic应用服务器信息。
  • 键盘输入
    • 'send_keys':发送文本(例如“Hello, World!”),发送特殊按键(例如“回车”、“Esc”、“Tab”),或发送带修饰符的组合键(例如“Ctrl+S”、“Cmd+C”、“Ctrl+Shift+Z”)。
  • 鼠标控制
    • 'send_mouse_move':将鼠标光标移动到指定的X、Y坐标。
    • 'send_mouse_click':在指定的X、Y坐标处执行鼠标点击,可选择左键、右键或中键。
  • 视觉反馈
    • 'inspect_viewport':获取当前Scenic应用界面组件的文本描述,帮助AI助手理解界面结构、可点击元素及其位置。
    • 'take_screenshot':捕获当前Scenic应用界面的PNG格式屏幕截图,可选择保存到文件路径或以Base64编码格式返回图像数据。

AI助手会根据任务需求,智能地选择并调用这些工具来完成与Scenic应用的交互。

信息

分类

桌面与硬件