mcpField
T
terminal-mcp

terminal-mcp

本地服务
github.com/mkpvishnu开发工具1210 周前更新

关于 terminal-mcp

terminal-mcp 是面向需要持久交互式终端会话的 AI Agent 的 MCP 服务。它通过 PTY 支持 SSH、REPL、数据库命令行、TUI 应用和长时间运行的进程,并提供会话控制与命令安全检查。

主要功能

  1. 01持久化 PTY 会话
  2. 02交互式 SSH、REPL 和数据库命令行
  3. 03TUI 屏幕快照与差异
  4. 04按模式等待输出
  5. 05危险命令确认机制

适用场景

  1. 01在 SSH 会话中连续执行命令
  2. 02在 Python REPL 中交互操作
  3. 03通过数据库命令行检查和查询
  4. 04监控构建或操作 TUI 应用

MCP 相关

它向 MCP 客户端提供九种工具,用于创建、交互、读取、调整大小、列出和关闭终端会话,以及执行一次性命令。MCP 客户端可通过这些工具控制持久终端会话。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mkpvishnu-terminal": {
"command": "uvx",
"args": [
"terminal-mcp"
],
"env": {
"TERMINAL_MCP_MAX_SESSIONS": "<TERMINAL_MCP_MAX_SESSIONS>",
"TERMINAL_MCP_IDLE_TIMEOUT": "<TERMINAL_MCP_IDLE_TIMEOUT>"
}
}
}
}
启动命令uvx terminal-mcp
需要配置的环境变量
TERMINAL_MCP_MAX_SESSIONSMaximum concurrent sessions
TERMINAL_MCP_IDLE_TIMEOUTSeconds before auto-close (default 1800)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiterminal-mcp0.3.1

工具

7

收录的工具列表 · 更新于 2 周前

参数类型必填说明
colsinteger否终端宽度(列数)
rowsinteger否终端高度(行数)
labelstring否会话的易读标签
commandstring是要运行的 Shell 命令(例如 'bash'、'python3'、'ssh user@host')
idle_timeoutinteger否空闲会话自动关闭前的秒数
enable_snapshotboolean否启用用于快照读取的 pyte 屏幕缓冲区
scrollback_linesinteger否要保留的回滚历史行数(需要 enable_snapshot)

详细介绍

terminal-mcp 横幅

为你的 AI 配备真正的终端。持久会话。交互式程序。毫无限制。

PyPI Python 3.10+ 许可证:MIT CI CodeQL

在 VS Code 中安装 在 VS Code Insiders 中安装 在 Cursor 中安装 在 Claude Desktop 中安装

terminal-mcp 演示


问题所在

每款 AI 编码工具都会遇到同一个瓶颈:无法真正访问终端。

Claude Code 的 Bash 工具、GitHub Copilot 和 Codex 都在隔离的子进程中运行命令。每条命令都会重新启动,状态无法延续。这意味着:

  • 无法建立 SSH 会话 - 不能连接远程服务并运行多条命令
  • 无法使用 REPL - 不能交互式使用 Python、Node 或 Ruby 解释器
  • 无法使用数据库 CLI - 不能维持 psql、mysql 或 redis-cli 连接
  • 无法使用 TUI 应用 - 不能用方向键操作 htop、vim 或 fzf
  • 无法运行长时间进程 - 不能监控构建、查看日志或运行开发服务

解决方案

terminal-mcp 为 AI Agent 提供真正的终端。持久的 PTY 会话可在多次工具调用之间持续存在。发送命令、读取输出、按下按键、操作 TUI——就像人在终端前操作一样。

uvx terminal-mcp

只需一条命令。兼容 Claude Code、Claude Desktop、VS Code、Cursor 和 Windsurf。


快速开始

1. 安装(30 秒)
# No install needed - run directly
uvx terminal-mcp

# Or install globally
pip install terminal-mcp
2. 连接到你的 AI 客户端
Claude Code

添加到 ~/.claude.json 或项目的 .mcp.json:

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
Claude Desktop

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
VS Code / Cursor

点击上方的一键安装徽章,或添加到 .vscode/mcp.json:

{
  "servers": {
    "terminal-mcp": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
Windsurf

添加到 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"]
    }
  }
}
3. 验证
session_exec  exec="echo hello from terminal-mcp"

可以用它做什么?

通过 SSH 登录远程服务
session_create   command="ssh [email protected]"   label="prod"
session_interact session_id="a1b2c3d4"  input="df -h"  wait_for="\$"
session_interact session_id="a1b2c3d4"  input="docker ps"  wait_for="\$"
session_close    session_id="a1b2c3d4"
运行交互式 REPL
session_create   command="python3"  label="python"
session_interact session_id="e5f6g7h8"  input="import pandas as pd"  wait_for=">>>"
session_interact session_id="e5f6g7h8"  input="df = pd.read_csv('data.csv')"  wait_for=">>>"
session_interact session_id="e5f6g7h8"  input="df.describe()"  wait_for=">>>"
session_close    session_id="e5f6g7h8"
查询数据库
session_create   command="psql -U admin mydb"  label="db"
session_interact session_id="x1y2z3w4"  input="SELECT count(*) FROM users;"  wait_for="row"
session_interact session_id="x1y2z3w4"  input="\dt"  wait_for="#"
session_close    session_id="x1y2z3w4"
操作 TUI 应用
session_create   command="htop"  label="monitor"
session_read     session_id="a1b2c3d4"
# Auto-detects TUI, returns screen snapshot

session_send     session_id="a1b2c3d4"  key="F6"
session_read     session_id="a1b2c3d4"  mode="diff"
# Returns only changed lines - saves tokens

session_send     session_id="a1b2c3d4"  key="F10"
session_close    session_id="a1b2c3d4"
监控长时间运行的构建
session_create   command="bash"  label="build"
session_send     session_id="a1b2c3d4"  input="npm run build"
session_wait_for session_id="a1b2c3d4"  pattern="Build complete|ERROR"  timeout=120
运行一次性命令
session_exec  exec="git log --oneline -10"
session_exec  exec="docker compose ps"  timeout=10

功能一览

功能说明
持久会话真正的 PTY 会话,可在多次工具调用之间保持运行
一次调用中发送并读取session_interact 可将大模型往返次数减半
基于模式读取wait_for 会阻塞,直到匹配正则表达式,无需猜测超时时间
自动检测 TUI检测 htop、vim 等,并自动切换到屏幕快照模式
输出差异模式仅返回发生变化的屏幕行,最大限度减少 token
特殊按键方向键、Tab、F1-F12、Home/End、Page Up/Down
控制字符Ctrl-C、Ctrl-D、Ctrl-Z、Ctrl-L、telnet 转义
危险命令拦截拦截 rm -rf、DROP TABLE、curl|sh,需要确认
OSC 133 Shell 集成自动检测命令边界和退出码
智能截断提供四种策略,防止上下文溢出
机密输入发送密码时不记录日志
动态调整大小使用 SIGWINCH 即时调整终端大小
空闲清理自动关闭空闲会话
跨平台支持 Linux、macOS 和 Windows

工具参考

terminal-mcp 提供 9 个 MCP 工具。完整详情请参阅 docs/tools.md。

工具用途
session_create启动持久终端会话
session_send发送文本、按键或控制字符
session_read读取输出(流式、快照、自动、差异模式)
session_interact在一次调用中发送并读取
session_wait_for等待输出中出现正则表达式模式
session_exec执行一次性命令
session_close正常关闭会话
session_resize调整终端尺寸
session_list列出活动会话

架构

flowchart LR
    Client[AI Client] -->|MCP JSON-RPC| Server[terminal-mcp]
    Server --> SM[Session Manager]
    SM --> S1[PTY 1: bash]
    SM --> S2[PTY 2: python3]
    SM --> S3[PTY 3: ssh user@host]
    S1 & S2 & S3 -.->|PTY output| Reader[Reader Thread]
    Reader -.->|buffer| Server

每个会话都由 pexpect.spawn(Windows 上为 PopenSpawn)通过真正的 PTY 支持。完整的架构详情请参阅 docs/architecture.md。


配置

所有设置都可通过 TERMINAL_MCP_* 环境变量进行配置。完整参考请参阅 docs/configuration.md。

设置环境变量默认值
最大会话数TERMINAL_MCP_MAX_SESSIONS10
空闲超时TERMINAL_MCP_IDLE_TIMEOUT1800(30 分钟)
安全拦截TERMINAL_MCP_SAFETY_GATEon
缓冲区上限TERMINAL_MCP_MAX_BUFFER_BYTES1000000(1MB)
截断方式TERMINAL_MCP_TRUNCATION_MODEtail

使用自定义设置的示例:

{
  "mcpServers": {
    "terminal": {
      "command": "uvx",
      "args": ["terminal-mcp"],
      "env": {
        "TERMINAL_MCP_MAX_SESSIONS": "20",
        "TERMINAL_MCP_IDLE_TIMEOUT": "3600",
        "TERMINAL_MCP_TRUNCATION_MODE": "head_tail"
      }
    }
  }
}

文档

文档说明
工具参考全部 9 个 MCP 工具的完整 API
架构terminal-mcp 的底层工作原理
配置所有设置和环境变量
安全与防护危险命令检测和安全拦截
用例与示例实际应用示例和模式
更新日志版本历史和发布说明
贡献如何参与贡献

Supported Clients

ClientStatusInstall
Claude Code (CLI)Supported~/.claude.json or .mcp.json
Claude DesktopSupportedOne-click install
VS Code (Copilot Chat)SupportedOne-click install or .vscode/mcp.json
CursorSupportedOne-click install or Settings
WindsurfSupported~/.codeium/windsurf/mcp_config.json

Running Tests

pip install -e ".[dev]"
pytest tests/ -v

Contributing

Contributions welcome! See docs/contributing.md for guidelines.

License

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。