返回市场
终端-MCP服务器

终端-MCP服务器

作者:ptbsare3 星标更新:2025-06-08

项目介绍

终端MCP服务器

简体中文

终端MCP服务器是一个模型上下文协议(MCP)服务器,旨在促进远程和本地命令执行,并具有强大的SSH功能。它允许您的AI模型或其他应用程序通过SSH或本地安全地在远程主机上执行命令,提供了一种与各种系统交互的强大方式。

特点

  • 安全的SSH命令执行:使用SSH在远程服务器上安全地执行命令,支持SSH别名配置文件解析。自动解析您的~/.ssh/config文件以获取连接详情如HostName、User、IdentityFile、Passphrase和Port,简化SSH管理。
  • 本地命令执行:直接在运行MCP服务器的本地机器上运行命令。
  • 会话管理与超时:维护持久的SSH会话,并设置可配置的超时时间,以便高效执行命令和管理资源。
  • 环境变量支持:将环境变量传递给远程和本地命令。
  • 本地命令默认目录:配置一个DEFAULT_DIR环境变量来指定本地命令执行的起始目录。

功能

  • 远程命令执行:通过SSH连接到远程主机并执行指定的命令。
  • 本地命令执行:在本地机器上执行命令。
  • SSH配置解析:读取并解释~/.ssh/config以简化连接设置。
  • 连接池:复用现有的SSH连接以减少开销。
  • 错误处理与重试:实现连接尝试的重试机制和健壮的错误报告。

使用

安装

  1. 克隆仓库
    git clone https://github.com/ptbsare/terminal-mcp-server.git
    cd terminal-mcp-server
    
  2. 安装依赖项
    npm install
    
  3. 构建项目
    npm run build
    

运行服务器

启动MCP服务器:

npm start

服务器将监听传入的MCP请求。

SSH配置

确保您的SSH配置(~/.ssh/config)正确设置您希望连接的主机。服务器将自动解析此文件。

示例~/.ssh/config

Host my_remote_server
  HostName your_remote_server_ip_or_hostname
  User your_username
  IdentityFile ~/.ssh/id_rsa
  Port 22
  # Passphrase your_passphrase (取消注释并设置如果您的密钥是加密的)

与Claude(或其他AI模型)集成

要将此MCP服务器与Claude集成,需要配置Claude以连接到本地的MCP服务器。

  1. 启动终端MCP服务器,如上所述。

  2. 配置Claude:在您的Claude环境中,通常添加一个指向此MCP服务器的工具定义。具体的配置步骤取决于您使用的Claude界面或API。

    要为Claude配置MCP服务器,通常创建一个JSON文件(例如mcp_server.json),其结构如下:

    {
      "mcpServers": {
        "terminal-mcp-server": {
          "command": "npm",
          "args": [
            "--prefix",
            "/path/to/terminal-mcp-server",
            "run",
            "start"
          ]
        }
      }
    }
    

    此服务器提供了一个工具:execute_command

    工具:execute_command

    • 描述:通过SSH在远程主机上执行shell命令,或者在本地执行。
    • 参数
      • command(字符串,必需):要执行的shell命令。
      • host(字符串,可选):从您的~/.ssh/config中指定的SSH主机别名,用于执行命令。如果没有提供,则命令将在本地执行。
      • env(对象,可选):为命令执行设置的环境变量。键和值应为字符串。

    将此JSON内容保存为mcp_server.json(或任何其他名称),并将其提供给Claude的MCP配置。提供此配置的确切方法取决于您的Claude环境(例如,通过特定UI、API调用或配置文件)。

本地命令默认目录

您可以在启动terminal-mcp-server之前设置环境变量DEFAULT_DIR,以指定本地命令执行的默认工作目录。

示例:

DEFAULT_DIR="/workdir" npm start

这将使所有通过MCP服务器执行的本地命令都从/workdir开始,除非明确覆盖。