终端多路复用器AI代理工具

zellij-mcp是一个MCP服务器,将Zellij终端多路复用器的操作作为工具暴露给AI编码代理,支持创建标签页、打开窗格、运行命令等操作,同时默认保持用户当前焦点。

  • by mustardamus
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 mustardamus/zellij-mcp

使用说明

细胞-MCP

一 主控程序 暴露的服务器 塞利 终端多路复用器操作作为AI编码代理的工具。创建选项卡、打开窗格、运行命令、读取终端输出,并在您的 $EDITOR --所有这些都来自AI助手。

工具大多以1:1的比例映射到Zellij CLI操作,但通过默认情况下保留用户的焦点来改进它们——当代理创建选项卡或运行命令时,它不会将您的视图从您正在处理的内容中拉出来。

用法

克劳德代码

claude mcp add zellij-mcp -- npx zellij-mcp

或在 .claude/settings.json:

{
  "mcpServers": {
    "zellij-mcp": {
      "command": "npx",
      "args": ["zellij-mcp"]
    }
  }
}

开源代码

在 opencode.json:

{
  "mcp": {
    "zellij-mcp": {
      "type": "local",
      "command": ["npx", "zellij-mcp"]
    }
  }
}

其他MCP客户端

zellij mcp使用stdio传输。为您的客户指出:

npx zellij-mcp

服务器会自动检测当前的Zellij会话。集 ZELLIJ_MCP_SESSION_NAME 以覆盖目标会话。

环境变量

ZELLIJ_MCP_SESSION_NAME

覆盖所有命令的目标Zellij会话名称。未设置时,服务器会通过Zellij自己的会话自动检测当前会话 ZELLIJ_SESSION_NAME 环境变量(在每个窗格中设置)。回落到 zellij-mcp 如果两者都不可用。

ZELLIJ_MCP_DELAY_MS

动作后延迟(毫秒)。每次Zellij操作后,服务器都会等待这么长时间,等待Zellij服务器处理该操作,然后再发送下一个命令。默认为 60。对于慢速环境(例如SSH远程),增加。

ZELLIJ_MCP_DUMP_DIR

由创建的临时屏幕转储文件的目录 read_pane 和 read_pane_full.默认为 /tmp。文件读取后会自动清理。

焦点保护

默认情况下,zellij mcp中有几个工具 保持用户当前的焦点 而不是切换到新创建的选项卡或窗格。这与原始的Zellij行为不同,在那里,像这样的行为 new-tab 或 new-pane 始终将焦点转移到新元素上。

其基本原理是:当AI代理为开发服务器创建背景选项卡或生成一个窗格来运行测试时,它不应该将用户的视图从他们正在进行的工作中拉出来。

受影响的工具

工具 单元格默认 单元格-mcp 默认 覆盖
new_tab 将焦点切换到新选项卡 焦点停留在当前选项卡上 switch_to: true
new_pane 将焦点切换到新窗格 焦点停留在当前窗格上 switch_to: true
run_command 将焦点切换到新窗格 焦点停留在当前窗格上 switch_to: true
rename_tab 仅在聚焦选项卡上操作 可以按名称定位任何选项卡 target: "tab-name"
close_tab 仅在聚焦选项卡上操作 可以按名称定位任何选项卡 target: "tab-name"

edit_file 是 不 焦点保持——它总是将焦点切换到编辑器窗格,因为用户需要与之交互。

运作原理

当焦点保持处于活动状态时,该工具:

  1. 呼叫 dump-layout 查找当前聚焦的选项卡
  2. 执行动作(这可能会作为副作用移动焦点)
  3. 呼叫 go-to-tab-name 将焦点恢复到原始选项卡

例子

这些是默认行为——代理将自动保持焦点:

“创建一个名为服务器的新选项卡”

要覆盖和切换焦点,请明确告诉代理:

“创建一个名为服务器的新选项卡并切换到它”

工具

会话

zellij_list_sessions

列出所有活动的Zellij会话。 文档

zellij list-sessions --short --no-formatting

zellij_query_tab_names

获取当前会话中的所有选项卡名称。每行返回一个选项卡名称。 文档

zellij --session zellij-mcp action query-tab-names

zellij_dump_layout

转储会话的完整当前布局,以了解工作区结构,包括选项卡、窗格及其排列。 文档

zellij --session zellij-mcp action dump-layout

zellij_list_clients

列出连接到当前会话的所有客户端、它们的焦点窗格id以及它们正在运行的命令。 文档

zellij --session zellij-mcp action list-clients

标签页

zellij_go_to_tab

切换到会话中的命名选项卡。使用 zellij_query_tab_names 首先发现可用的选项卡名称。 文档

参数 必填 说明
name yes 要切换到的选项卡的名称(例如“编辑器”、“服务器”、“git”)。
zellij --session zellij-mcp action go-to-tab-name <name>

zellij_new_tab

在会话中创建一个具有可选名称和布局的新选项卡。默认情况下,焦点停留在当前选项卡上。 文档

参数 必填 说明
name no 新选项卡的名称。如果省略,Zellij将指定默认名称。
layout no 用于新选项卡的布局文件的路径
cwd no 新选项卡的工作目录
switch_to no 如果为true,将焦点切换到新选项卡。默认为false。
zellij --session zellij-mcp action new-tab [--name <name>] [--layout <layout>] [--cwd <cwd>]

zellij_rename_tab

重命名会话中的选项卡。如果 target 提供,重命名该特定选项卡而不改变焦点。如果省略,则重命名当前聚焦的选项卡。 文档

参数 必填 说明
name yes 选项卡的新名称
target no 要重命名的选项卡的当前名称。如果省略,则重命名焦点选项卡
zellij --session zellij-mcp action rename-tab <name>

zellij_close_tab

关闭会话中的选项卡。如果 target 如果提供,则关闭该特定选项卡并将焦点恢复到原始选项卡。如果省略,则关闭当前聚焦的选项卡。请谨慎使用——这是破坏性的,无法撤消。 文档

参数 必填 说明
target no 要关闭的选项卡的名称。如果省略,则关闭聚焦选项卡
zellij --session zellij-mcp action close-tab

终端I/O

zellij_write_to_pane

将按键发送到当前聚焦的窗格。这是原始按键注入——字符完全按照提供的方式键入。默认情况下,在执行字符后发送回车符(Enter键,char 13)。集 enter 到 false 只发送原始字符而不发送尾随的Enter。 文档

参数 必填 说明
chars 是 要在焦点窗格中键入的字符。
enter no 如果为true(默认),则在字符后发送回车符(char 13)。设置为false可跳过后面的Enter键。
zellij --session zellij-mcp action write-chars <chars>
zellij --session zellij-mcp action write 13        # sent automatically unless enter=false

zellij_read_pane

捕获当前聚焦窗格的可见终端输出。写入临时文件 ZELLIJ_MCP_DUMP_DIR (默认为 /tmp),阅读它,然后清理。 文档

zellij --session zellij-mcp action dump-screen <path>

zellij_read_pane_full

捕获当前聚焦窗格的完整滚动缓冲区。同 read_pane 但包括所有滚动出屏幕的历史记录。对于长时间运行的流程,输出可能非常大。 文档

zellij --session zellij-mcp action dump-screen --full <path>

zellij_run_command

在新的Zellij窗格中运行命令。始终创建新窗格--不在当前聚焦的窗格中运行。默认情况下,焦点停留在当前窗格上。 文档

参数 必填 说明
command yes 命令及其参数作为数组(例如。 ["npm", "test"]).
floating 否 如果为true,请在浮动窗格而不是平铺窗格中运行。
name no 新窗格的可选名称。
close_on_exit 否 如果为true,则命令完成时窗格会自动关闭。
cwd no 命令的工作目录。
switch_to 否 如果为true,请将焦点移动到新的命令窗格。默认为false。
zellij --session zellij-mcp run [--floating] [--name <name>] [--close-on-exit] [--cwd <cwd>] -- <command...>

窗格

zellij_new_pane

在当前聚焦的选项卡中打开一个新窗格。默认情况下,打开一个平铺窗格。默认情况下,焦点停留在当前窗格上。 文档

参数 必填 说明
floating 否 如果为真,请打开浮动窗格而不是平铺窗格。
name no 新窗格的可选名称。
direction no 相对于聚焦窗格放置新平铺窗格的方向(下、右、上、左)。因浮动窗格而忽略。
cwd no 新窗格的工作目录。
command no 在新窗格中运行的可选命令和参数(例如。 ["npm", "test"]).
switch_to 否 如果为真,请将焦点移动到新窗格。默认为false。
zellij --session zellij-mcp action new-pane [--floating] [--name <name>] [--direction <direction>] [--cwd <cwd>] [-- <command...>]

zellij_close_pane

关闭当前聚焦的窗格。窗格中运行的任何进程都将被终止。焦点移动到相邻窗格。小心使用——这是破坏性的,无法撤销。 文档

zellij --session zellij-mcp action close-pane

zellij_focus_pane

将焦点沿给定方向移动到相邻窗格。仅在平铺窗格之间移动焦点。如果指定方向上没有窗格,则焦点不会改变。 文档

参数 必填 说明
direction 是 移动焦点的方向(上、下、左、右)。
zellij --session zellij-mcp action move-focus <direction>

zellij_toggle_floating_panes

显示或隐藏当前焦点选项卡中的所有浮动窗格。这是一个切换——调用两次会返回到原始状态。 文档

zellij --session zellij-mcp action toggle-floating-panes

zellij_toggle_fullscreen

在当前聚焦的窗格上切换全屏模式。激活后,窗格会展开以填充整个选项卡区域。再次调用它可以恢复原始布局。焦点仍集中在同一窗格上。 文档

zellij --session zellij-mcp action toggle-fullscreen

zellij_rename_pane

重命名当前聚焦的窗格。名称出现在窗格框架/边框中。焦点不会改变。 文档

参数 必填 说明
name yes 当前聚焦窗格的新名称。
zellij --session zellij-mcp action rename-pane <name>

zellij_resize_pane

沿给定方向调整当前聚焦窗格的大小。窗格沿指定方向生长,收缩相邻窗格。仅适用于瓷砖窗格。焦点不会改变。 文档

参数 必填 说明
direction yes 窗格的生长方向(上、下、左、右)。
zellij --session zellij-mcp action resize <direction>

编辑

zellij_edit_file

在用户的 $EDITOR (例如Helix、Vim、Nano)在新的Zellij窗格中。焦点移动到新创建的编辑器窗格。当用户退出编辑器时,窗格会自动关闭。这将打开文件供人类用户交互式编辑——它不会返回文件内容。 文档

参数 必填 说明
file yes 要打开的文件的路径。可以是绝对的,也可以是相对于会话工作目录的。
floating 否 如果为true,请在浮动窗格而不是平铺窗格中打开编辑器。
line_number no 打开文件时要跳转到的行号(1索引)。
direction no 相对于聚焦窗格放置新平铺窗格的方向(下、右、上、左)。因浮动窗格而忽略。
cwd no 编辑器窗格的工作目录。当文件路径是相对路径时很有用。
zellij --session zellij-mcp action edit <file> [--floating] [--line-number <n>] [--direction <direction>] [--cwd <cwd>]

发展

先决条件

  • 包子 -JavaScript运行时和包管理器
  • 开源代码 -开发布局的AI编码代理
  • 螺旋 -开发布局的终端文本编辑器
  • 懒鬼 -开发布局的终端Git UI

设置

git clone https://github.com/mustardamus/zellij-mcp.git
cd zellij-mcp
bun install
bun run setup # downloads the latest Zellij binary for the current architecture

使用四个选项卡(代理、编辑器、服务器和git)启动Zellij会话:

bun run dev:zellij

或者独立运行MCP服务器(带监视模式):

bun run dev