Token导航 LogoToken导航TokenDH.com
Interactive Shell MCP logo
开发工具未说明官方级别未说明来源级核验

Interactive Shell MCP

MCP Server

提供持久化终端会话的MCP服务器,支持TUI应用渲染、交互式提示导航和屏幕内容读取,适用于AI代理的交互式命令行操作。

工具数

9

提示词数

0

GitHub Stars

4

资源数

0
开发工具JavaScriptClaudeClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

lightos

提供方

lightos

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

交互式外壳MCP

![License: MIT](LICENSE) ](https://nodejs.org) ![MCP](https://modelcontextprotocol.io)

MCP服务器,用于支持TUI的交互式shell会话。为AI代理提供持久终端、交互式提示导航、渲染屏幕阅读和输出搜索。

演示

无MCP有MCP
Without MCPWith MCP
*“htop是交互式的,无法运行”**启动htop,读取屏幕,提取过程数据(2倍速度)*

为什么存在

大多数AI编码工具独立运行shell命令:每个命令都会启动一个新的shell,交互式提示是不可能的,TUI应用程序只会转储原始转义码。此MCP服务器通过虚拟终端仿真器提供持久的PTY会话(@xterm/headless)因此,代理可以维护shell状态,使用箭头键导航交互式提示,并将渲染的终端屏幕读取为干净的文本。

三种输出模式:

模式最适合你得到什么
流媒体常规命令(ls、git、npm)原始顺序输出,读取后清除
快照实时更新应用程序(顶部,htop)当前终端缓冲区尾部
屏幕TUI应用程序、提示、任何可视化内容渲染的2D文本网格(人类看到的)

快速开始

git clone https://github.com/lightos/interactive-shell-mcp.git
cd interactive-shell-mcp
npm install && npm run build
claude mcp add interactive-shell node dist/src/server.js

然后问克劳德: *“监视htop并告诉我哪些CPU使用最多”*

特性

  • 通过TUI应用程序读取渲染屏幕 @xterm/headless
  • waitForIdle 在所有阅读工具中(不再在睡眠中猜测)
  • 使用文本和正则表达式模式匹配进行屏幕搜索
  • 基于行/列坐标的矩形区域提取
  • Shell别名:bash、zsh、fish、sh、dash、ksh、powershell.exe、pwsh、cmd.exe
  • 空闲10分钟后自动清理,进程退出后60秒检测退出代码
  • 跨平台:Unix/Linux/macOS+Windows

用例

  • 交互式脚手架和迁移: npx create-next-app, drizzle-kit push, prisma migrate, npm init,或任何基于查询器/clack的CLI
  • 系统监控: htop, btop, top, iftop, duf 具有过程搜索和区域提取功能
  • DevOps TUI: lazydocker, lazygit, k9s, terraform console
  • 远程会话: ssh 进入服务器,包括通过SSH嵌套的TUI应用程序
  • 数据库CLIs: psql, mysql, redis-cli, mongosh 在交互模式下
  • 网络工具: netcat/ncat, nmap, airodump-ng, tcpdump
  • REPL和调试器: python, node, irb, gdb/lldb
  • 文本编辑器: vim, nano, emacs -nw

MCP配置

克劳德代码(CLI)

claude mcp add interactive-shell node /path/to/interactive-shell-mcp/dist/src/server.js

克劳德桌面

增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "interactive-shell": {
      "command": "node",
      "args": ["/path/to/interactive-shell-mcp/dist/src/server.js"]
    }
  }
}

VS代码/光标

添加到MCP设置(.vscode/mcp.json~/.cursor/mcp.json):

{
  "mcpServers": {
    "interactive-shell": {
      "command": "node",
      "args": ["/path/to/interactive-shell-mcp/dist/src/server.js"]
    }
  }
}

工具参考

start_shell_session

使用虚拟终端模拟器生成一个新的PTY shell。

参数类型必填说明
colsnumberno终端列(默认值:120,最大值:500)
rowsnumberno终端行(默认值:40,最大值:200)
shellstringno要使用的Shell(默认值: $SHELLbash)
cwdstringno工作目录(默认:服务器cwd)

退货 { sessionId, cols, rows }

send_shell_input

将输入写入PTY。默认情况下附加回车符。

参数类型必填说明
sessionIdstringyes会话ID
inputstringyes要发送的文本。原始模式: \x1b[A (向上), \x1b[B (向下), \r (输入)
rawbooleanno发送时不附加CR。解析转义序列。(默认值:false)

read_shell_output

读取PTY的输出。三种模式:流媒体(默认)、快照、屏幕。

参数类型必填说明
sessionIdstringyes会话ID
modestring"streaming", "snapshot",或 "screen"
waitForIdlenumberno读取前等待N毫秒的静默(最大值:5000毫秒)
maxBytesnumberno流模式的最大字节数(默认值:100KB)
snapshotSizenumberno快照缓冲区大小(默认值:50KB)
rowsnumberno屏幕模式:起始行(从0开始)
rowEndnumberno屏幕模式:结束行(独占)
includeEmptybooleanno屏幕模式:包括尾随空行(默认值:true)
trimWhitespacebooleanno屏幕模式:每行修剪尾随空格(默认值:false)

屏幕模式返回元数据中的光标位置、终端尺寸和备用缓冲区状态。

get_screen_region

从屏幕的矩形区域提取文本。

参数类型必填说明
sessionIdstringyes会话ID
startRownumberyes起始行(从0开始,包括0)
startColnumberyes起始列(从0开始,包括0)
endRownumberyes结束行(不包括)
endColnumberyes结束列(不包括)
trimWhitespacebooleanno修剪每行尾随空格(默认值:false)
waitForIdlenumberno读取前等待N毫秒的静默(最大值:5000毫秒)

get_screen_cursor

获取光标位置和当前行文本。

参数类型必填说明
sessionIdstringyes会话ID
waitForIdlenumberno读取前等待N毫秒的静默(最大值:5000毫秒)

退货 { cursor: { x, y }, currentLine, isAlternateBuffer }

search_screen

在终端屏幕上搜索文本或正则表达式。最多返回50场比赛。

参数类型必填说明
sessionIdstringyes会话ID
patternstringyes文本或正则表达式模式
regexbooleanno将模式视为正则表达式(默认值:false)
waitForIdlenumberno读取前等待N毫秒的静默(最大值:5000毫秒)

退货 { results: [{ row, col, text }], count }

list_sessions

列出所有具有元数据的活动会话。没有参数。

退货 { sessions: [{ sessionId, shell, cols, rows, isAlternateBuffer, idleSeconds }] }

resize_shell

调整活动会话的终端大小。

参数类型必填说明
sessionIdstringyes会话ID
colsnumberyes新列(1-500)
rowsnumberyes新行(1-200)

end_shell_session

关闭PTY并清理资源。

参数类型必填说明
sessionIdstringyes会话ID

用法示例

这些显示了构建集成的开发人员的MCP工具调用模式。最终用户只是自然地与他们的AI代理交谈。

阅读TUI应用程序

await send_shell_input(sessionId, "htop");
const { output, metadata } = await read_shell_output(sessionId, {
  mode: "screen",
  waitForIdle: 500
});
// output: rendered htop as clean text (CPU bars, process table, etc.)
// metadata.isAlternateBuffer: true (htop uses alternate screen)

// Extract just the process list (rows 6-30)
const processes = await get_screen_region(sessionId, {
  startRow: 6, startCol: 0, endRow: 30, endCol: 120,
  trimWhitespace: true
});

导航交互式提示

// Send arrow keys and enter in raw mode
await send_shell_input(sessionId, "\\x1b[B", { raw: true });  // down arrow
await send_shell_input(sessionId, " ", { raw: true });         // space to select
await send_shell_input(sessionId, "\\r", { raw: true });       // enter to confirm

// Read what the prompt looks like now
const screen = await read_shell_output(sessionId, {
  mode: "screen", waitForIdle: 300
});

等待命令输出

await send_shell_input(sessionId, "npm install");
const output = await read_shell_output(sessionId, {
  waitForIdle: 1000  // wait for 1s of silence
});

搜索内容

// Find all error lines
const errors = await search_screen(sessionId, {
  pattern: "error|Error|ERROR",
  regex: true,
  waitForIdle: 500
});
// [{ row: 12, col: 0, text: "Error" }, ...]

会话行为

  • 自动清理:空闲时间超过10分钟的会话将自动处理
  • 出口检测:当shell退出时,工具返回 "Session exited with code N" 持续60秒,而不是一般的无效ID错误
  • 贝壳合金:只能生成已知的shell(bash、zsh、fish、sh、dash、ksh、powershell.exe、pwsh、cmd.exe)。未知值将恢复为平台默认值。

许可证

麻省理工学院

目录标签

目录标签

开发工具JavaScriptClaude终端模拟本地部署AI代理工具命令行交互TUI支持

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明sessionlocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP