SSH MCP Server
使用说明(Markdown 格式)
-
项目简介
- 该项目是一个基于 MCP(Model Context Protocol)的服务端实现,专注于对远程服务器的上下文管理与功能调用,包括建立 SSH 连接、执行命令、进行 SFTP 操作以及服务器/凭证的管理。通过 MCP 标准的 JSON-RPC 接口,LLM 客户端可以统一读取工具定义、调用工具以及获取/渲染提示模板等能力,方便在对话中安全地获得远程上下文信息以及执行能力。
-
主要功能点
- MCP 服务端实现:实现对 MCP 客户端的工具列表读取和工具调用的处理,返回标准化的 JSON-RPC 响应。
- SSH 连接管理与会话:维护连接池、自动重连、按需复用连接、支持多服务器场景下的目标锁定与安全切换。
- 命令执行与 SFTP:提供执行命令、sudo、批量执行、交互式 shell、以及 SFTP 的列目录、上传、下载、创建目录、删除等操作。
- 服务器与凭证存储:本地服务器配置、凭证(密码/私钥)存储,支持基于 Keychain/加密文件的凭证管理。
- 安全特性:目标锁定、确认令牌、危险命令检测与提示、审计日志以及环境标签,帮助 AI 在多服务器场景下避免误操作。
- 审计日志与日志查询:对操作进行日志记录、脱敏处理,提供按服务器、操作、级别等条件的查询能力。
-
安装步骤
- 克隆或获取源码后,安装依赖并编译:
- 安装依赖并构建:在项目根目录执行 npm install,然后执行 npm run build。
- 直接运行(开发阶段):
- 使用 npm 或 npx 启动,服务器将通过标准的 MCP 通道接受客户端请求,默认将输出到标准错误/日志中,便于调试。
- 运行前置条件(可选):
- 若需要凭证加密存储,确保系统具备 Keychain/凭证管理能力,或允许在本地创建加密文件存储。
- 克隆或获取源码后,安装依赖并编译:
-
服务器配置
- MCP 客户端需要知道如何启动并连接到该 MCP 服务器。配置信息以 JSON 形式描述,用于指明服务器名称、启动命令及参数等,以便 MCP 客户端在需要时能够自动启动并连接到服务端。以下为符合该仓库实现的说明性描述(非具体代码):
- server name:ssh-mcp-server
- command:npx
- args:包含启动该 MCP 服务器的包名及必要参数,例如 -y 与启动包的名称
- env(可选):日志级别、数据目录等环境变量,用于控制输出和数据存储位置
- 说明:MCP 客户端配置仅用于描述如何启动并连接到服务器。具体的客户端配置如账号、证书、凭据等由服务端的凭证存储与工具调用逻辑处理,客户端本身通常不需要了解内部实现细节。
- MCP 客户端需要知道如何启动并连接到该 MCP 服务器。配置信息以 JSON 形式描述,用于指明服务器名称、启动命令及参数等,以便 MCP 客户端在需要时能够自动启动并连接到服务端。以下为符合该仓库实现的说明性描述(非具体代码):
-
基本使用方法
- 启动服务器后,MCP 客户端应通过 JSON-RPC 调用读取工具定义、发起工具调用以实现如下场景:
- 读取工具定义:获取可用的工具列表(如 connect、exec、sftp 等)。
- 调用工具:通过名称和参数调用工具,例如建立 SSH 连接、执行远程命令、进行 SFTP 操作等。若遇到需要确认的危险操作,服务器会返回需要的确认令牌,客户端需再次调用以完成确认。
- 使用多服务器环境时,注意遵循目标锁定和确认流程,确保对不同主机的操作不会混淆。
- 启动服务器后,MCP 客户端应通过 JSON-RPC 调用读取工具定义、发起工具调用以实现如下场景: