Alacritty MCP 服务器
用于控制Alacrity终端实例的模型上下文协议(MCP)服务器。
用例
此MCP服务器使Claude能够以强大的方式与终端应用程序交互:
🔍 上下文阅读和应用程序监控
- 阅读Neovim上下文 -提取当前文件、光标位置、LSP诊断、打开缓冲区和vim模式
- LSP集成 -从语言服务器访问错误消息、警告和代码智能
- 监控构建过程 -实时查看编译输出和测试结果
- 调试应用程序状态 -检查运行过程和系统信息
- 跟踪日志文件 -监控应用程序日志和系统事件
🧪 交互式测试与开发
- 测试TUI应用程序 -验证Claude构建的交互式终端界面
- 运行开发工作流 -执行构建脚本、测试和部署命令
- 交互式调试 -逐步执行代码并检查变量
- 原型验证 -快速测试CLI工具和基于终端的应用程序
🚀 自动化与编排
- 多终端工作流程 -协调复杂的开发环境
- 并行任务执行 -跨终端同时运行多个进程
- 环境设置 -自动化开发环境配置
- CI/CD集成 -执行和监控构建管道
📊 系统管理
- 服务器监控 -跟踪系统资源和流程运行状况
- 远程任务执行 -跨多个会话运行管理命令
- 日志聚合 -收集和分析各种系统组件的输出
特性
- 列出实例:发现所有正在运行的Alacritty终端实例
- 生成实例:使用自定义配置创建新的Alacritty终端
- 发送密钥:向特定终端实例发送键盘命令
- 截图:以文本或视觉截图的形式捕获终端内容
- Neovim上下文:从Neovim实例中提取全面的编辑上下文
需求
- 锈蚀1.70+
- 敏捷终端仿真器
- X11环境(Linux)
- 系统实用程序:
xdotool,xclip,imagemagick(截图)
安装
cargo build --release用法
服务器通过JSON-RPC在stdin/stdout上进行通信:
./target/release/alacritty-mcpMCP工具
list_instances
列出所有正在运行的Alacrity实例。
参数: 无
退货: AlacrittyInstance对象数组,包含PID、窗口ID、标题和命令等详细信息。
spawn_instance
创建新的Alacritty终端实例。
参数:
command(可选):在终端中运行的命令args(可选):命令的参数working_directory(可选):终端的工作目录title(可选):终端窗口的标题
退货: 新创建实例的详细信息。
send_keys
将键盘输入发送到特定的Alacritty实例。
参数:
instance_id(必填):目标实例的IDkeys(必填):要发送的密钥(xdotool格式,例如“ctrl+c”、“Return”、“Hello”)
退货: 确认已发送密钥。
屏幕截图_立场
从Alacritty实例中捕获内容。
参数:
instance_id(必填):目标实例的IDformat(可选):'text'表示终端文本内容,'image'表示视觉截图(默认值:'text\])
退货: 所请求格式的屏幕截图内容。
get_neovim_text
从Alacritty终端中运行的Neovim实例中提取全面的上下文。
参数:
instance_id(必填):运行Neovim的Alacritty实例的IDinclude_diagnostics(可选):包括LSP诊断(默认值:true)include_buffers(可选):包括打开的缓冲区列表(默认值:true)context_lines(可选):光标周围要包含的行数(默认值:5)
退货: 结构化的Neovim上下文包括:
- 当前文件和光标位置
- LSP诊断(错误、警告、提示)
- 打开缓冲区及其状态
- Vim模式和工作目录
- 活动LSP客户端及其状态
- 周围的代码上下文
JSON-RPC调用示例
初始化
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "claude",
"version": "1.0.0"
}
},
"id": 1
}生成实例
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "spawn_instance",
"arguments": {
"title": "Development Terminal",
"working_directory": "/home/user/project",
"command": "bash"
}
},
"id": 2
}发送密钥
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "send_keys",
"arguments": {
"instance_id": "uuid-here",
"keys": "ls -la Return"
}
},
"id": 3
}获取Neovim上下文
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_neovim_context",
"arguments": {
"instance_id": "uuid-here",
"include_diagnostics": true,
"include_buffers": true,
"context_lines": 10
}
},
"id": 4
}示例响应:
{
"jsonrpc": "2.0",
"result": {
"content": [
{
"text": "Neovim context for instance uuid-here:\n{\n \"instance_info\": {\n \"pid\": 12345,\n \"socket_path\": \"/tmp/nvim.12345.0\",\n \"version\": \"NVIM v0.11.2\",\n \"config_path\": \"/home/user/.config/nvim\"\n },\n \"current_buffer\": {\n \"file_path\": \"/home/user/project/src/main.rs\",\n \"file_type\": \"rust\",\n \"is_modified\": true,\n \"line_count\": 150,\n \"surrounding_context\": {\n \"lines_before\": [\"fn main() {\", \" let config = Config::new();\"],\n \"current_line\": \" let result = process_data(config);\",\n \"lines_after\": [\" println!(\\\"Result: {:?}\\\", result);\", \"}\"]\n }\n },\n \"diagnostics\": [\n {\n \"file_path\": \"/home/user/project/src/main.rs\",\n \"line\": 42,\n \"column\": 15,\n \"severity\": \"Error\",\n \"message\": \"cannot find function `process_data` in this scope\",\n \"source\": \"rust-analyzer\"\n }\n ],\n \"cursor_position\": {\n \"line\": 42,\n \"column\": 28,\n \"line_content\": \" let result = process_data(config);\"\n },\n \"vim_mode\": \"n\",\n \"lsp_status\": {\n \"active_clients\": [\n {\n \"name\": \"rust-analyzer\",\n \"file_types\": [\"rust\"],\n \"status\": \"active\"\n }\n ],\n \"diagnostics_count\": {\n \"errors\": 1,\n \"warnings\": 0,\n \"info\": 0,\n \"hints\": 2\n }\n }\n}",
"type": "text"
}
]
},
"error": null,
"id": 4
}测试
该项目包括全面的测试覆盖范围:
单元测试
测试核心功能和数据结构:
cargo test --test unit_tests集成测试
测试MCP协议合规性和错误处理:
cargo test --test integration_tests功能测试
测试真实的Alacrity交互(需要安装X11和Alacrity):
cargo test --test functional_tests功能测试包括:
- ✅ 真正的终端产卵 -实际打开Alacrity窗口
- ✅ 生命周期管理 -生成多个终端并跟踪它们
- ✅ 自定义命令 -使用特定命令启动终端
- ✅ 流程清理 -正确的终端终止
- ⚠️ 密钥发送 -需要
xdotool(如果不可用,则跳过) - ⚠️ 截图 -需要
xclip(如果不可用,则跳过)
Neovim集成测试
测试Neovim上下文提取(需要安装Neovim):
cargo test --test neovim_integration_testsNeo的测试包括:
- ✅ Neovim检测 -在终端中识别Neovim实例
- ✅ 上下文提取 -提取编辑状态和诊断
- ✅ 真正的Neovim产卵 -启动并与Neovim沟通
- ✅ 模式识别 -检测Neovim UI元素
- ✅ LSP集成 -访问语言服务器诊断
运行所有测试
cargo test测试结果: 总共29次测试
- 11个单元测试✅
- 8集成测试✅
- 5功能测试✅
- 5 Neovim集成测试✅
注意:一些功能测试需要X11环境和系统工具,在无头CI环境中可能会被跳过。
建筑
AlacrittyManager:管理终端实例的核心逻辑McpServer:JSON-RPC服务器实现NeovimContextExtractor:Neovim特定上下文提取和LSP集成types:数据结构和类型定义
局限性
- 目前仅支持X11(不支持Wayland)
- 高级功能需要外部系统实用程序
- 终端文本提取依赖于剪贴板操作
