远程服务器管理工具

一个基于MCP协议的服务器工具,支持通过SSH执行远程命令和管理Google Cloud Platform实例,为Cursor IDE提供远程基础设施的无缝集成。

  • by rpavez
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 rpavez/ssh-mcp

使用说明

MCP远程服务器

一种模型上下文协议(MCP)服务器,使Cursor IDE能够在远程服务器上执行SSH命令并管理Google Cloud Platform(GCE)实例。此服务器提供了Cursor和远程基础架构之间的无缝集成。

特性

  • 🔐 SSH命令执行:通过SSH在远程服务器上运行命令
  • ☁️ GCE实例管理:启动和停止Google云计算引擎实例
  • 🔄 连接池:重用SSH连接以提高性能
  • 📝 SSH配置集成:使用您现有的 ~/.ssh/config 用于主机配置
  • 🚀 MCP协议:完全支持模型上下文协议v2025-06-18

先决条件

  • 已安装Node.js 16+
  • 配置到远程服务器的SSH访问
  • 谷歌云平台凭据(用于GCE功能)
  • 已安装游标IDE

安装

  1. 克隆或导航到存储库:

    cd mcp-remote
    
  2. 安装依赖项:

    npm install
    
  3. 启动MCP服务器:

    node src/index.js
    

    服务器将于启动 http://localhost:3000 默认情况下。

配置

1.SSH配置

首先,您需要在中配置SSH连接 ~/.ssh/config。服务器始终使用主机别名 dev 无论您在提示中指定什么。

创建或编辑 ~/.ssh/config:

Host dev
    HostName your-server.example.com
    User your-username
    Port 22
    IdentityFile ~/.ssh/id_rsa
    # Optional: Add additional SSH options
    # ServerAliveInterval 60
    # ServerAliveCountMax 3
    # StrictHostKeyChecking no
    # UserKnownHostsFile ~/.ssh/known_hosts

AWS EC2示例:

Host dev
    HostName ec2-12-34-56-78.compute-1.amazonaws.com
    User ubuntu
    Port 22
    IdentityFile ~/.ssh/my-aws-key.pem

Google Cloud示例:

Host dev
    HostName 34.123.45.67
    User root
    Port 22
    IdentityFile ~/.ssh/gcp-key.pem

重要提示:

  • 主机别名 必须 被命名 dev (全部小写)
  • 服务器将 总是 连接到 dev 无论您在提示中指定了哪个主机
  • 确保您的SSH密钥具有适当的权限: chmod 600 ~/.ssh/id_rsa

2.光标MCP配置

通过编辑配置Cursor以连接到MCP服务器 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "local-mcp": {
      "name": "Local MCP",
      "url": "http://localhost:3000",
      "description": "Runs SSH commands and manages GCE instances",
      "apiKeyHeader": "x-api-key",
      "apiKeyValue": "8BOe6KshR5Eq0otTSjSGMEf5P1edKcq"
    }
  }
}

配置字段:

  • name:在游标中显示MCP服务器的名称
  • url:MCP服务器运行的URL(默认值: http://localhost:3000)
  • description:服务器功能的描述
  • apiKeyHeader:API身份验证的标头名称(当前可选)
  • apiKeyValue:用于身份验证的API密钥值(当前可选)

修改后 mcp.json:

  1. 保存文件
  2. 重新启动游标IDE
  3. MCP服务器应出现在Cursor的工具列表中

3.环境变量(可选)

您可以设置环境变量来自定义行为:

# SSH Configuration (optional - defaults to ~/.ssh/id_rsa)
export SSH_USERNAME=your-username
export SSH_PRIVATE_KEY_PATH=~/.ssh/custom_key

# Server Configuration
export PORT=3000

# GCP Configuration (for GCE features)
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/gcp-credentials.json

用法

启动服务器

# Start the server
node src/index.js

# Or with custom port
PORT=8080 node src/index.js

服务器将输出:

MCP server running on http://localhost:3000
Ready to accept MCP connections from Cursor

在Cursor IDE中使用

配置后,您可以直接在Cursor中使用MCP工具:

  1. 运行SSH命令:

    • 询问Cursor:“检查server1.example.com上的磁盘使用情况”
    • 服务器将自动连接到 dev 并执行该命令
    • 示例:“运行 df -h 在我的远程服务器上”
  2. 管理GCE实例:

    • 询问Cursor:“在项目my-project中启动实例my-vm,区域us-central1-a”
    • 询问Cursor:“在项目my-project中停止实例my-vm,区域us-central1-a”

可用工具

  1. 运行命令

    • 在远程服务器上执行SSH命令
    • 始终连接到 dev 从 ~/.ssh/config
    • 参数:
      • host:忽略(总是使用 dev)
      • cmdKey:要执行的命令(例如。, df -h, ls -la)
  2. start_instance

    • 启动GCE实例
    • 参数:
      • project:GCP项目ID
      • zone:GCE区(例如。, us-central1-a)
      • instance:实例名称
  3. 停止立场

    • 停止GCE实例
    • 参数:
      • project:GCP项目ID
      • zone:GCE区
      • instance:实例名称

建筑

连接池

服务器维护一个SSH连接池以提高性能:

  • 跨多个命令重用连接
  • 使用keepalive设置保持连接活动
  • 连接错误时自动清理

SSH配置集成

服务器从读取连接详细信息 ~/.ssh/config:

  • 主机名、端口、用户名和身份文件
  • 支持所有标准SSH配置选项
  • 手柄 ~ 文件路径的扩展
  • 支持多个IdentityFile条目(使用第一个)

故障排除

服务器无法启动

  1. 检查端口是否已在使用中:

    lsof -i :3000
    
  2. 检查Node.js版本:

    node --version  # Should be 16+
    

游标无法连接

  1. 验证服务器是否正在运行:

    curl http://localhost:3000
    
  2. 检查 ~/.cursor/mcp.json 语法:

    • 确保JSON有效
    • 验证URL是否与您的服务器匹配
  3. 重新启动游标IDE 修改后 mcp.json

SSH连接问题

  1. 手动测试SSH连接:

    ssh dev
    
  2. 验证SSH配置:

    ssh -F ~/.ssh/config dev
    
  3. 检查SSH密钥权限:

    ls -la ~/.ssh/id_rsa
    chmod 600 ~/.ssh/id_rsa
    
  4. 验证主机别名是否存在:

    grep -A 5 "^Host dev" ~/.ssh/config
    

命令未执行

  1. 检查服务器日志 用于错误消息
  2. 验证 dev 主机配置正确 在 ~/.ssh/config
  3. 检查SSH密钥是否具有访问权限 到远程服务器

发展

项目结构

mcp-remote/
├── src/
│   ├── index.js          # Main MCP server
│   ├── ssh.js            # SSH connection handling
│   └── gcp.js            # GCP instance management
├── package.json
├── README.md
└── .gitignore

添加新工具

要添加新的MCP工具:

  1. 将工具定义添加到 tools 数组in src/index.js
  2. 在中添加处理程序 tools/call 案件
  3. 在相应模块中实现功能

测试

# Test SSH connection
node -e "const {runRemoteCommand} = require('./src/ssh'); runRemoteCommand({host: 'dev', command: 'echo test'}).then(r => console.log(r));"

# Test MCP server
curl -X POST http://localhost:3000 \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-06-18"},"id":1}'

安全考虑

  • 服务器运行在 localhost:3000 默认情况下(不暴露于网络)
  • 从以下位置读取SSH凭据 ~/.ssh/config (标准SSH安全)
  • API密钥身份验证可用,但当前是可选的
  • 考虑对敏感数据使用环境变量

许可证

[在此处添加您的许可证]

贡献

欢迎投稿!请随时提交拉取请求。

支持

对于问题和疑问:

  • 检查故障排除部分
  • 查看服务器日志中的错误消息
  • 确保SSH配置正确

备注:服务器始终连接到 dev SSH配置中的主机别名,而不管您在提示中指定的主机是什么。确保 dev 已在中正确配置 ~/.ssh/config.