Terminal MCP Server

by weidwonder
Verified
# terminal-mcp-server This file contains information about the terminal-mcp-server project. ## 功能 该项目是一个 MCP Server,用于控制本地或其他主机。支持通过 stdio 和 SSE 两种方式连接。目前只提供 execute_command 功能,用于在本地或远程主机上执行命令。 ## 最新修改 2025-03-21(下午2点): * 更新了README.md和README_CN.md文件中的仓库克隆路径,从`yourusername`改为`weidwonder` * 删除了不再使用的`src/scripts/deploy.sh`脚本文件和`src/scripts`目录 2025-03-21(下午): * 修复了会话持久化功能的bug,确保在使用相同的session名称再次连接时,能够正确复用现有的终端,而不是创建新的连接或终端。 * 改进了会话检查逻辑,确保只有在会话真正有效时才复用它。 * 添加了更多的会话状态检查,确保在会话断开连接时能够正确重新建立连接。 * 为SSH连接添加了keepalive功能,每分钟发送一次keepalive包,减少连接断开的可能性。 * 改进了本地命令执行的会话管理,确保本地会话也能正确跟踪和清理。 * 添加了更多的日志记录,以便更好地跟踪会话的创建、复用和断开连接。 * 删除了不再使用的`ssh.ts`文件,避免代码混淆。 2025-03-21(上午): * 修改了 execute_command 功能,将 host 参数改为可选参数。如果不提供 host,则直接在本地终端执行命令。 * 添加了 username 参数,用于指定 SSH 连接的用户名(当指定 host 时必填)。 * 重构了代码,将 SSHManager 类重命名为 CommandExecutor,并添加了本地命令执行功能。 * 在工具描述中添加了关于系统类型判断的提示。 * 保留了会话持久化功能,无论是本地还是远程命令执行,都可以通过 session 参数指定会话名称,在 20 分钟内持久复用同一个终端。 * 简化了 MCP Server,只保留 execute_command 功能,移除了 get_system_info、list_processes 和 kill_process 功能。 * 更新了 @modelcontextprotocol/sdk 版本从 0.6.0 到 1.6.0。 * 添加了 SSE 服务器支持,可以通过 HTTP 远程连接到服务器。 * 添加了命令行参数支持,可以通过 --sse 选项启用 SSE 服务器。 * 添加了 .gitignore 文件,用于 GitHub 仓库。 * 添加了新的 npm 脚本:start 和 start:sse。 2025-03-09: * 增加了一个参数来指定主机。 * 将 SSH 连接改为持久会话。 * 增加了 SSH 连接超时自动关闭功能(20 分钟无活动自动关闭)。 * 增加了指定会话名称的功能。 * 为 execute_command 工具增加了 env 参数,允许用户手动指定环境变量。 ## 使用方法 ```bash npm start ``` 或者 ```bash node build/index.js ``` ## execute_command 工具 execute_command 工具用于在本地或远程主机上执行命令。它需要以下参数: * `command`:要执行的命令(必需) * `host`:要连接的主机(可选,如果不提供则在本地执行命令) * `username`:SSH连接的用户名(当指定host时必填) * `session`:会话名称,默认为 default(可选)。相同的session名称,在20分钟内是持久复用一个终端,这样在操作一些需要环境比如conda环境的时候,可以一直在环境中。 * `env`:环境变量,默认为空对象(可选) 示例(本地执行): ```json { "command": "ls -la", "session": "my-session", "env": { "NODE_ENV": "production" } } ``` 示例(远程执行): ```json { "host": "example.com", "username": "user", "command": "ls -la", "session": "my-session", "env": { "NODE_ENV": "production" } }