WindTerm-like terminal emulator with AI-powered configuration discovery and SSH management
Project description
Linux SSH MCP - WindTerm-like Terminal Emulator
🚀 WindTerm风格的终端模拟器,集成AI助手
一个功能类似WindTerm的终端模拟器,通过Model Context Protocol (MCP)与AI助手集成,提供多标签页SSH会话管理、交互式终端、会话持久化和脚本自动化功能。
核心功能
🖥️ 终端模拟器
- 多标签页管理: 类似浏览器的多标签页SSH会话管理
- 交互式终端: 真实的PTY模拟,支持完整的终端交互体验
- 终端协议支持: 支持ANSI/VT100/xterm-256color协议
- 实时输出流: 流式传输终端输出,支持增量更新
🤖 AI助手集成
- 自然语言控制: 通过AI助手使用自然语言控制终端操作
- 丰富的MCP工具: 提供完整的终端管理工具集
- 智能命令执行: AI助手可以理解并执行复杂的终端命令序列
💾 会话管理
- 会话持久化: 保存和恢复完整的终端工作区
- 自动断线重连: 支持断线重连和会话状态自动恢复
- 多工作区支持: 可以保存不同的服务器组合配置
⚡ 高级功能
- 脚本自动化: 支持脚本执行和自动化任务
- 性能监控: 实时连接状态和性能指标监控
- 安全设计: 多种认证方式,安全凭证管理
系统要求
- Python 3.9+
- Linux/macOS/Windows (支持跨平台PTY操作)
- SSH 服务器访问权限
快速开始
安装
# 从PyPI安装
pip install linux-ssh-mcp
# Claude Code配置
claude mcp add linux-ssh-mcp python -m linux_ssh_mcp.cli_v2
服务器配置
配置文件会自动创建在 ~/.ssh-mcp/servers.json,或手动创建:
{
"version": "1.0",
"servers": {
"server-01": {
"id": "server-01",
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "your_password"
}
}
}
配置文件搜索路径 (按优先级)
SSH_MCP_CONFIG_PATH环境变量指定的路径~/.ssh-mcp/servers.json(用户主目录)- 平台特定配置目录:
- Windows:
%APPDATA%/ssh-mcp/servers.json - Linux/Mac:
~/.config/ssh-mcp/servers.json
- Windows:
- 当前工作目录
./servers.json - 项目根目录
servers.json(开发环境)
AI助手命令示例
终端会话管理
- "创建一个新的终端标签页连接到 web-server-01"
- "切换到名为 production 的终端标签页"
- "关闭 database-server 的终端会话"
- "调整当前终端窗口大小为 120x40"
交互式终端操作
- "在当前终端输入 'ls -la' 并回车"
- "在 web-server 终端中执行 'sudo systemctl status nginx'"
- "获取 database-server 终端的最新输出"
- "查看当前终端的命令历史"
多终端管理
- "在所有服务器上批量检查磁盘空间"
- "同时查看三个不同服务器的系统负载"
- "保存当前所有终端会话为 '日常巡检' 工作区"
- "恢复昨天的 '开发调试' 工作区"
命令行工具
启动 MCP 服务器
# 启动 MCP 服务器
linux-ssh-mcp server
# 或使用 Python 模块
python -m linux_ssh_mcp.mcp_server_v2
初始化配置
# 创建示例配置文件
linux-ssh-mcp init
测试连接
# 测试终端连接
linux-ssh-mcp test localhost username
# 指定端口和密码
linux-ssh-mcp test 192.168.1.100 admin --password your_password --port 22
调试模式
# 启用调试日志
linux-ssh-mcp server --debug
Python API
from linux_ssh_mcp import SSHManager, ServerConfig
# 创建管理器
ssh_manager = SSHManager(use_pooling=True)
# 添加服务器
config = ServerConfig(
id="web-server-01",
host="192.168.1.100",
port=22,
username="admin",
password="password",
timeout=30
)
ssh_manager.add_server(config)
# 执行命令
result = await ssh_manager.execute_command("web-server-01", "uptime")
print(f"输出: {result.stdout}")
安全特性
- 多种认证方式: 密码、SSH密钥
- 连接安全: SSL/TLS加密
- 访问控制: 支持IP白名单
- 审计日志: 完整的操作记录
性能特点
- 连接管理: <100ms建立连接(池化),<500ms(新建)
- 命令执行: 简单命令平均<1秒
- 批量操作: 支持并发执行
- 资源占用: 基础
50MB,每连接1MB
测试
# 运行测试套件
python -m pytest tests/
许可证
MIT License
支持
- 问题反馈: GitHub Issues
- 讨论: GitHub Discussions
Built with ❤️ for the Linux SSH management community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file linux_ssh_mcp-2.1.0.tar.gz.
File metadata
- Download URL: linux_ssh_mcp-2.1.0.tar.gz
- Upload date:
- Size: 47.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f53040aab16607e9010e682236c5bb4b4108ecd77329846db0b592a07be0f75d
|
|
| MD5 |
d10de93c7820c7fb0e44f9bd943aed07
|
|
| BLAKE2b-256 |
03d8e611c9ab52b89283331b766e495cb96f985608412f3d95c109ebed8a8853
|
File details
Details for the file linux_ssh_mcp-2.1.0-py3-none-any.whl.
File metadata
- Download URL: linux_ssh_mcp-2.1.0-py3-none-any.whl
- Upload date:
- Size: 48.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19496f22ebc08ac909b787c015150e22853928bacace720b6865288fe3ec7f00
|
|
| MD5 |
5277843289bf6893eddf5c3f4ad51bdc
|
|
| BLAKE2b-256 |
d6b05228b765edd88902ceb21f12d96dd5315ba1a34ef962652ab243fc0d78e2
|