终端会话控制服务器

HT MCP Server是一个用于与无头终端会话交互的模型上下文协议服务器,允许AI助手通过HT接口编程控制和交互终端应用程序。

  • by memextech
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 memextech/headless-terminal-mcp

使用说明

HT MCP服务器

用于与HT(无头终端)会话交互的模型上下文协议(MCP)服务器。这允许AI助手通过HT接口以编程方式控制终端应用程序并与之交互。

HT是什么?

高温 是Andy Konwinski的一个项目,是这个项目背后的真正魔力。它使用VT100风格的终端接口封装任何二进制文件,并允许通过JSON命令进行编程访问。此MCP服务器为AI助手创建HT会话、发送命令和捕获终端输出提供了一个干净的界面。

先决条件

安装

# Clone and setup
git clone <this-repo>
cd ht-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

用法

运行MCP服务器

# Start the MCP server
npm start

# Or run in development mode
npm run dev

可用工具

服务器提供以下MCP工具:

ht_create_session

创建新的HT会话。

  • 参数:
    • command (可选):命令参数数组(默认值: ["bash"])
  • 退货:用于其他工具的会话ID

ht_send_keys

向HT会话发送密钥。

  • 参数:
    • sessionId:HT会话ID
    • keys:要发送的键/文本数组(支持“Enter”、“Down”、“^c”等特殊键)

ht_take_snapshot

拍摄当前终端状态的快照。

  • 参数:
    • sessionId:HT会话ID
  • 退货:当前终端内容为文本

ht_execute_command

执行命令并返回输出(便利方法)。

  • 参数:
    • sessionId:HT会话ID
    • command:要执行的命令
  • 退货:命令执行后的终端输出

ht_list_sessions

列出所有活动的HT会话。

  • 退货:包含元数据的活动会话列表

ht_close_session

关闭HT会话并清理资源。

  • 参数:
    • sessionId:要关闭的HT会话ID

工作流示例

以下是人工智能助手如何使用这些工具进行自动化 npm create vite:

// 1. Create a new HT session
const session = await ht_create_session({});

// 2. Navigate to a working directory
await ht_execute_command({
    sessionId: session.sessionId,
    command: "cd /tmp && mkdir vite-test && cd vite-test"
});

// 3. Start npm create vite
await ht_send_keys({
    sessionId: session.sessionId,
    keys: ["npm create vite@latest my-app"]
});
await ht_send_keys({
    sessionId: session.sessionId,
    keys: ["Enter"]
});

// 4. Wait and check what prompts appeared
const snapshot = await ht_take_snapshot({
    sessionId: session.sessionId
});

// 5. Respond to prompts based on snapshot content
if (snapshot.snapshot.includes("framework")) {
    await ht_send_keys({
        sessionId: session.sessionId,
        keys: ["Enter"]  // Select default framework
    });
}

// 6. Continue responding to prompts...
await ht_send_keys({
    sessionId: session.sessionId,
    keys: ["Down"]  // Navigate to TypeScript variant
});
await ht_send_keys({
    sessionId: session.sessionId,
    keys: ["Enter"]  // Select TypeScript
});

// 7. Verify the project was created
const result = await ht_execute_command({
    sessionId: session.sessionId,
    command: "ls -la"
});

// 8. Clean up
await ht_close_session({
    sessionId: session.sessionId
});

主要特点

  • 会话管理:创建和管理多个HT会话
  • 交互式命令:处理交互式CLI工具,如 npm create, git等等。
  • 终端快照:捕获终端状态以了解发生了什么
  • 特殊密钥支持:发送箭头键、Ctrl组合、Enter等。
  • 错误处理:强大的错误处理和会话清理

与AI助手集成

此MCP服务器使AI助手能够:

  • 自动化复杂的交互式CLI工作流
  • 通过拍摄快照调试终端应用程序
  • 处理需要用户输入的多步骤流程
  • 使用任何具有交互式提示的CLI工具

发展

# Build
npm run build

# Development mode with hot reload
npm run dev

# Lint
npm run lint

# Clean build artifacts
npm run clean

故障排除

  1. 未找到HT:确保HT已安装并位于PATH中
  2. 会话超时:增加慢速命令的超时值
  3. 非JSON输出:该服务会自动过滤掉非JSON行
  4. 流程清理:服务器关闭时会自动清理会话

许可证

国际协调委员会