article
README
🚀 Scenic MCP - 用于Scenic应用程序的输入控制
Scenic MCP 是一个模型上下文协议 (MCP) 服务器,它能够将外部键盘和鼠标输入注入到 Scenic GUI 应用程序中。
🚀 快速开始
Scenic MCP 作为一个 MCP 服务器,为 Scenic GUI 应用程序提供了外部键盘和鼠标输入注入的能力,你可以按以下步骤进行操作。
✨ 主要特性
- 键盘输入:向 Scenic 应用程序发送文本和特殊按键。
- 鼠标控制:移动鼠标光标并在特定坐标处点击。
- MCP 集成:可与任何兼容 MCP 的客户端(如 Claude Desktop 等)协同工作。
- 实时通信:基于 TCP 的连接,实现低延迟输入。
- Scenic 兼容性:采用适当的 Scenic ViewPort 输入路由。
📦 安装指南
- 添加到你的 Scenic 应用程序的
mix.exs文件中:
defp deps do
[
{:scenic_mcp, path: "../scenic_mcp"}
]
end
- 添加到你的应用程序的监管树中: 实际上,你可能不需要这样做...
- 安装 Node.js 依赖项:
cd scenic_mcp
npm install
💻 使用示例
基础用法
MCP 工具
服务器提供了以下 MCP 工具:
connect_scenic:测试与 Scenic 应用程序的连接。get_scenic_status:检查服务器状态和可用命令。send_keys:向 Scenic 应用程序发送键盘输入。- 参数:
text(字符串):要输入的文本(每个字符作为单独的按键按下发送)。key(字符串):特殊按键名称(enter、escape、tab、backspace、delete、up、down、left、right、home、end、page_up、page_down、f1 - f12)。modifiers(数组):修饰键(ctrl、shift、alt、cmd、meta)。
- 参数:
send_mouse_move:将鼠标光标移动到特定坐标。- 参数:
x(数字):X 坐标。y(数字):Y 坐标。
- 参数:
send_mouse_click:在特定坐标处点击鼠标。- 参数:
x(数字):X 坐标。y(数字):Y 坐标。button(字符串):鼠标按钮(left、right、middle) - 默认值:left。
- 参数:
代码示例
发送文本:
{
"action": "send_keys",
"text": "hello world"
}
发送特殊按键:
{
"action": "send_keys",
"key": "enter"
}
发送带修饰键的按键:
{
"action": "send_keys",
"key": "c",
"modifiers": ["ctrl"]
}
移动鼠标:
{
"action": "send_mouse_move",
"x": 100,
"y": 200
}
点击鼠标:
{
"action": "send_mouse_click",
"x": 150,
"y": 250,
"button": "left"
}
🔧 技术细节
架构
MCP Client (Claude Desktop)
↓
TypeScript MCP Server (scenic_mcp)
↓ (TCP port 9999)
Elixir GenServer Bridge
↓ (Scenic.ViewPort.Input.send/2)
Scenic ViewPort
↓
Your Scenic Application
开发
启动 Elixir 服务器:
cd your_scenic_app
mix run --no-halt
测试 MCP 服务器:
cd scenic_mcp
node src/index.ts
要求
- Elixir/OTP 24+
- Node.js 18+
- Scenic 0.11+
📄 许可证
本项目采用 MIT 许可证。
微信扫一扫