Token导航 LogoToken导航TokenDH.com
MCP Sftp Service logo
运维云端未说明官方级别未说明来源级核验

MCP Sftp Service

MCP Server

MCP SFTP服务是一个集成在Claude Code中的安全SFTP部署解决方案,支持多种认证方式和安全凭证管理,适用于项目文件的自动化部署和监控。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
TypeScriptClaude云端部署Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

tgeorge06

提供方

tgeorge06

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

MCP SFTP服务

一种MCP(模型上下文协议)服务器,直接在Claude Code中提供安全的SFTP部署功能。此服务支持通过系统密钥链集成进行安全凭据管理,支持交互式身份验证的按需连接,以及包括密码、SSH密钥和键盘交互式身份验证(2FA/电话批准)在内的多种身份验证方法。

特性

  • 单一项目重点:每个MCP实例管理一个项目(在项目目录中运行)
  • 按需连接:使用 /sftp:connect 需要部署或监视文件时使用命令
  • 交互式身份验证支持:完全支持2FA、电话审批和其他键盘交互式身份验证
  • 安全凭证存储:

- 用于存储凭据的AES-256-GCM加密 - 系统钥匙链集成(macOS、Linux、Windows) - 环境变量回退 - 交互式身份验证不需要明文密码

  • 多种身份验证方法:

- 密码验证(存储密钥链) - SSH公钥身份验证(兼容SSH代理) - 键盘交互式身份验证(2FA、电话批准等)

  • 文件监视:使用Chokidar自动上传/删除更改的文件
  • 连接管理:使用指数回退自动重试
  • 智能忽略模式:可配置文件忽略模式
  • MCP集成:与Claude Code无缝集成

安装

  1. 克隆存储库:
git clone https://github.com/tgeorge06/mcp-sftp-service.git
cd mcp-sftp-service
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

快速开始

1.为您的项目进行配置

在您的项目目录中,使用Claude Code的 /sftp:setup 命令:

/sftp:setup

A. .sftp/config.json 将创建包含您的服务器详细信息的文件。

2.连接到SFTP服务器

当您准备部署或监视文件时,请使用:

/sftp:connect

这建立了连接。对于交互式身份验证(2FA/电话批准),在此步骤中会提示您批准。

3.部署或监视

连接后,您可以:

部署您的项目:

/sftp:deploy

注意变化:

/sftp:watch start

停止观看:

/sftp:watch stop

凭证设置

了解钥匙串密钥格式

MCP服务器使用您的 项目目录名称 (非完整路径)作为钥匙链钥匙的一部分:

  • 格式: mcp-sftp-service-sftp-password-{projectName}
  • 示例:对于项目 /Users/name/projects/my-app,关键是 mcp-sftp-service-sftp-password-my-app
  • 这使得密钥可以在不同的机器和路径上便携
  • 所有凭据都安全地存储在您的操作系统密钥链中(无加密文件)

密码验证

将SFTP密码直接存储在操作系统钥匙链中:

macOS:

# Run from your project directory
security add-generic-password \
  -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")" \
  -s "mcp-sftp-service" \
  -w "your-sftp-password" \
  -U

Linux:

# Run from your project directory
# Install if needed: sudo apt install libsecret-tools
echo -n "your-sftp-password" | secret-tool store --label="SFTP Password" \
  service mcp-sftp-service \
  key "sftp-password-$(basename "$(pwd)")"

窗户:

# Run from your project directory in PowerShell
$projectName = Split-Path -Leaf (Get-Location)
$password = "your-sftp-password"
cmdkey /generic:"mcp-sftp-service-sftp-password-$projectName" /user:"mcp-sftp-service" /pass:"$password"

SSH密钥认证

  • 确保SSH代理正在运行: eval $(ssh-agent -s)
  • 添加您的密钥: ssh-add ~/.ssh/id_rsa
  • SSH密钥 ~/.ssh/ 自动检测

交互式身份验证(2FA/电话批准)

对于需要电话批准或2FA的服务器,请将您的SFTP密码直接存储在钥匙链中:

macOS:

# Run from your project directory
security add-generic-password \
  -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")" \
  -s "mcp-sftp-service" \
  -w "your-sftp-password" \
  -U

Linux:

# Run from your project directory
echo -n "your-sftp-password" | secret-tool store --label="SFTP Password" \
  service mcp-sftp-service \
  key "sftp-password-$(basename "$(pwd)")"

窗户:

# Run from your project directory in PowerShell
$projectName = Split-Path -Leaf (Get-Location)
$password = "your-sftp-password"
cmdkey /generic:"mcp-sftp-service-sftp-password-$projectName" /user:"mcp-sftp-service" /pass:"$password"

当你奔跑时 /sftp:connect:

  1. MCP服务器自动发送您的密码(来自钥匙链)
  2. 自动选择推送身份验证(选项1)
  3. 自动发送推送请求(按Enter键)
  4. 您在手机上批准
  5. 连接完成

运作原理:就像VSCode SFTP扩展程序一样,将密码存储在钥匙串中,自动响应提示,等待电话批准。

配置

项目配置文件

地点: .sftp/config.json

{
  "server": {
    "host": "dev.example.com",
    "port": 22,
    "username": "deploy_user",
    "authType": "password",
    "readyTimeout": 60000,
    "keepaliveInterval": 10000
  },
  "paths": {
    "local": "./dist",
    "remote": "/var/www/html",
    "ignore": [
      "node_modules/**",
      ".git/**",
      "*.log",
      ".env*"
    ]
  },
  "watch": {
    "enabled": false,
    "debounce": 1000,
    "depth": 10
  },
  "connection": {
    "maxRetries": 3,
    "retryDelay": 500,
    "timeout": 30000,
    "keepaliveInterval": 10000
  }
}

使用克劳德代码注册

将MCP服务器添加到 ~/.config/claude-code/mcp-config.json:

{
  "mcpServers": {
    "sftp": {
      "command": "node",
      "args": ["/path/to/mcp-sftp-service/dist/index.js"],
      "env": {
        "SFTP_LOG_LEVEL": "info"
      }
    }
  }
}

可用命令

工具(用于克劳德代码)

  • sftp_setup -为当前项目配置SFTP
  • sftp_deploy -将文件部署到SFTP服务器(具有可选的文件过滤和强制模式)
  • sftp_watch_start -开始查看文件以进行自动上传
  • sftp_watch_stop -停止查看文件
  • sftp_test_connection -检查连接状态
  • sftp_status -显示连接和观察者状态

Slash命令(面向用户)

  • /sftp:deploy -部署当前项目(部署与配置匹配的所有文件)
  • /sftp:watch start -开始监视文件更改和自动上传
  • /sftp:watch stop -停止文件监视
  • /sftp:setup -配置项目
  • /sftp:status -检查状态

部署

手动部署

使用 /sftp:deploy 部署项目的命令:

# Deploy all files in configured local path to remote server
/sftp:deploy

# Deploy specific files with force overwrite
/sftp:deploy --files file1.js file2.js --force

它是如何工作的:

  1. 命令检查是否已建立SFTP连接(从启动预批准开始)
  2. 阅读 .sftp/config.json 用于本地和远程路径
  3. 尊重 .sftp/config.json 忽略模式
  4. 通过流媒体上传文件以提高效率
  5. 根据需要创建远程目录(模式0755)
  6. 返回包含成功/失败计数的详细结果

文件更改时自动上传

使用 /sftp:watch start 要启用自动上传:

# Start file watcher
/sftp:watch start

# Stop file watcher
/sftp:watch stop

它是如何工作的:

  1. 在配置的本地路径上启动Chokidar文件监视器
  2. Debozes文件更改(可通过以下方式配置 watch.debounce)
  3. 文件添加/更改:将文件上传到远程服务器
  4. 文件删除时:从远程服务器删除文件
  5. 尊重忽略配置中的模式
  6. 需要活动的SFTP连接

配置:

{
  "watch": {
    "enabled": false,        // Auto-start watcher on MCP startup
    "debounce": 1000,        // Milliseconds to wait after file change
    "depth": 10              // Max directory depth to watch
  }
}

部署结果

这两种部署方法都提供了详细的反馈:

✅ Deployment completed successfully

Files deployed: 24
Files failed: 0
Duration: 3.45s

Destination: dev.example.com:/var/www/html

或者如果有错误:

⚠️  Deployment completed with errors

Files deployed: 23
Files failed: 1
Duration: 3.45s

Destination: dev.example.com:/var/www/html

Errors:
  • config/.env: Permission denied

凭据管理

运作原理

  1. 启动时:

- MCP服务器负载 .sftp/config.json - 等待 /sftp:connect 命令

  1. 当你连接时:

- 直接从操作系统钥匙链读取密码 - 建立SFTP连接 - 缓存经过身份验证的会话

  1. 部署期间:

- 使用已建立的连接 - 无需密码提示 - 为整个Claude Code会话缓存会话

  1. 安全:

- 直接存储在操作系统密钥链中的凭据(macOS密钥链、Linux密钥服务、Windows凭据管理器) - 无加密文件或明文密码 - MCP关闭时自动清除凭据

按操作系统列出的存储选项

macOS-苹果钥匙链:

# Store SFTP password (run from project directory)
security add-generic-password \
  -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")" \
  -s "mcp-sftp-service" \
  -w "your-password" \
  -U

# View stored credentials
security find-generic-password -s "mcp-sftp-service" -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")"

# Delete credential
security delete-generic-password -s "mcp-sftp-service" -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")"

Linux-特勤局(通过 secret-tool):

# Install if needed
sudo apt install libsecret-tools

# Store SFTP password (run from project directory)
echo -n "your-password" | secret-tool store --label="SFTP Password" \
  service mcp-sftp-service \
  key "sftp-password-$(basename "$(pwd)")"

# Retrieve stored credential
secret-tool lookup service mcp-sftp-service key "sftp-password-$(basename "$(pwd)")"

# Delete credential
secret-tool clear service mcp-sftp-service key "sftp-password-$(basename "$(pwd)")"

Windows-凭据管理器:

# Store SFTP password (run from project directory in PowerShell)
$projectName = Split-Path -Leaf (Get-Location)
$password = Read-Host "Enter SFTP password" -AsSecureString
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password)
$plainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
cmdkey /generic:"mcp-sftp-service-sftp-password-$projectName" /user:"mcp-sftp-service" /pass:"$plainPassword"

# Or with plain password (less secure):
cmdkey /generic:"mcp-sftp-service-sftp-password-$projectName" /user:"mcp-sftp-service" /pass:"your-password"

# View stored credentials
cmdkey /list | Select-String "mcp-sftp-service"

# Delete credential
cmdkey /delete:"mcp-sftp-service-sftp-password-$projectName"

回退-环境变量:

# For development or CI/CD only - not recommended for production
export SFTP_PASSWORD="your-sftp-password"

钥匙链集成

macOS-苹果钥匙扣

凭据会自动存储在 苹果钥匙扣:

# View all MCP SFTP credentials
security find-generic-password -s "mcp-sftp-service"

# View specific credential (run from project directory)
security find-generic-password -s "mcp-sftp-service" \
  -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")" -w

# Delete credential
security delete-generic-password -s "mcp-sftp-service" \
  -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")"

Linux-特勤局

凭据存储在 特勤局 (要求 libsecret-tools):

# Install required tools
sudo apt install libsecret-tools

# View all MCP SFTP credentials
secret-tool search service mcp-sftp-service

# Retrieve specific credential (run from project directory)
secret-tool lookup service mcp-sftp-service key "sftp-password-$(basename "$(pwd)")"

# Delete credential
secret-tool clear service mcp-sftp-service key "sftp-password-$(basename "$(pwd)")"

Windows-凭据管理器

凭据存储在 Windows凭据管理器:

通过GUI:

  1. 打开设置→ 凭据管理器
  2. 查找以开头的条目 mcp-sftp-service-sftp-password-
  3. 单击查看或删除凭据

通过PowerShell:

# View all stored credentials
cmdkey /list | Select-String "mcp-sftp-service"

# Delete specific credential (run from project directory)
$projectName = Split-Path -Leaf (Get-Location)
cmdkey /delete:"mcp-sftp-service-sftp-password-$projectName"

SSH代理集成

对于SSH密钥身份验证:

  1. 确保SSH代理正在运行:
   eval $(ssh-agent -s)
   ssh-add ~/.ssh/id_rsa
  1. 在中配置身份验证 .sftp/config.json:
   {
     "server": {
       "authType": "publickey"
     }
   }
  1. SSH密钥 ~/.ssh/ 被自动发现

交互式身份验证(2FA/电话批准)

对于需要电话批准或2FA的服务器:

  1. 在中配置 .sftp/config.json:
   {
     "server": {
       "authType": "keyboard-interactive"
     }
   }
  1. 启动时,MCP服务器将:

- 显示“正在手机上等待批准…” - 给你60秒的时间来批准 - 批准后缓存会话

  1. 后续部署 使用缓存的会话(无需重新批准)

环境变量

凭据存储

  • SFTP_PASSWORD -SFTP密码(如果不在密钥链中,则回退)

日志记录

  • SFTP_LOG_LEVEL -日志级别(调试、信息、警告、错误)
  • SFTP_LOG_DIR -日志文件目录
  • SFTP_LOG_TO_FILE -启用文件日志记录(true/false)

示例

export SFTP_LOG_LEVEL=debug
export SFTP_PASSWORD="my-sftp-password"  # Only if not using keychain
claude code  # Start Claude Code, MCP will use these values

安全最佳实践

  1. 始终使用系统钥匙链 对于密码,永远不要长期使用环境变量
  2. 对于CI/CD,使用环境变量和短期凭据
  3. SSH密钥 尽可能比密码更安全
  4. 轮换凭据 定期
  5. 使用 .sftp/ 微笑。 防止配置文件的意外提交
  6. 无加密文件 -仅存储在操作系统密钥链中的所有凭据

故障排除

启动时连接失败

检查日志:

SFTP_LOG_LEVEL=debug node dist/index.js

验证配置:

  • 主机和端口正确
  • 用户名正确
  • 凭证存储在钥匙链中

“未找到SFTP密码”

MCP服务器使用您的 项目目录名称。从项目目录运行:

macOS:

security add-generic-password \
  -a "mcp-sftp-service-sftp-password-$(basename "$(pwd)")" \
  -s "mcp-sftp-service" -w "your-password" -U

Linux:

echo -n "your-password" | secret-tool store --label="SFTP Password" \
  service mcp-sftp-service key "sftp-password-$(basename "$(pwd)")"

窗户:

$projectName = Split-Path -Leaf (Get-Location)
cmdkey /generic:"mcp-sftp-service-sftp-password-$projectName" /user:"mcp-sftp-service" /pass:"your-password"

备选方案: 设置环境变量(不建议用于生产):

export SFTP_PASSWORD="your-sftp-password"

SSH代理不可用

对于SSH密钥认证:

# Start SSH agent
eval $(ssh-agent -s)

# Add your key
ssh-add ~/.ssh/id_rsa

# Verify
ssh-add -l

电话审批超时

对于交互式身份验证:

  • 确保您在启动后60秒内批准
  • 检查网络连接
  • 验证服务器设置

发展

建筑

npm run build

在发展中奔跑

npm run dev

类型检查

npm run type-check

代码检查

npm run lint

项目结构

mcp-sftp-service/
├── src/
│   ├── index.ts              # Entry point
│   ├── server.ts             # MCP server
│   ├── tools/                # Tool implementations
│   ├── sftp/                 # SFTP client & transfer
│   ├── crypto/               # Encryption/decryption
│   ├── config/               # Configuration management
│   ├── utils/                # Utilities (logger, keychain, SSH agent)
│   └── types/                # TypeScript types
├── dist/                     # Compiled output
└── package.json

许可证

MIT许可证-有关详细信息,请参阅许可证文件

支持

对于问题、疑问或功能请求,请在GitHub上打开问题: https://github.com/tgeorge06/mcp-sftp-service/issues

目录标签

目录标签

TypeScriptClaude云端部署安全文件传输本地部署自动化部署凭证管理SFTP服务项目部署

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP