Trae最佳编程实践,写一个sftp MCP ,把Trae每一次请求都压榨的干干净净(玩转100个MCP系列第四弹)

大家好呀,我是程序员夏叶,深度AI编程使用者,专注于分享AI编程方面的使用技巧、经验以及前沿资讯,有兴趣的可以关注我的公众号,一起学习,共同进步。

本文是我的玩转100个MCP系列第四弹,使用Trae+sftp MCP,实现Trae的最佳编程实践,一个完整的闭环流程像下面这样:

  • 修改代码
  • 上传服务器(调用SFTP MCP)
  • 写测试程序测试后台服务接口
  • 从服务器获取错误日志(调用SFTP MCP)
  • 修改代码,继续整个流程

以上步骤都是Trae自己在1次问答里面完成的,基本上放在那里,我去干别的事,它自己就把我接口都调通了,基本上每一次请求都能把Trae压榨的干干净净,绝不浪费每一次请求,就是每次需要点一下继续比较麻烦。

先看一下效果:

怎么说呢,效果真的很炸裂,我这个后端服务里面26个接口,Trae就是这样给我调通的。

一、sftp MCP产生背景

这个MCP起源其实是被Trae闹的,这里不得不吐槽一下Trae对项目的规则的遵循还有待加强哦,因为某些原因,我是把后端服务放到云服务器上去运行的,最开始我是手动上传文件,然后在服务器上复制报错下来发给Trae让它修复的,但是每次它改完以后就要在本地启服务,我在项目规则里面加了3条规则:

Trae完全当耳旁风了,搞得我很头大,每次都要手动停止请求,咋说它都不听,整个叛逆了,后来我就想到是不是可以整一个这样的MCP,让它可以自己上传文件,读取错误日志,然后自己修复这样子。

说干就干,我用Trae写了这个sftp MCP,然后自定义一个智能体,这下它就完全遵循我的指令了,再也不瞎整了。

二、sftp MCP功能介绍

SFTP MCP服务器是一个基于模型上下文协议(MCP)构建的强大工具,它通过标准输入/输出(stdio)与客户端进行安全通信,提供了一系列与SFTP和远程服务器交互的功能。其核心特性包括:

  • 安全传输 :采用stdio作为传输方式,所有通信都在本地进行,避免了网络端口暴露,提升了安全性。
  • 目录同步 (sync_directory) :能够将本地目录完整地同步到远程SFTP服务器。此功能支持.gitignore风格的忽略规则,可以排除不需要同步的文件和目录(如日志文件、依赖目录等)。
  • 单文件上传 (upload_file):支持上传单个文件到远程服务器,并能根据配置自动推断远程路径,简化了操作。
  • 远程文件读取 (read_remote_file):可以读取并返回远程服务器上指定文件的内容,并支持指定文件编码。
  • 远程命令执行 (execute_remote_command):通过SSH在远程服务器上执行任意Shell命令,并返回命令的输出、错误和退出码,非常适合自动化运维任务。
  • 远程目录列表 (list_remote_directory):能够列出远程服务器上指定目录的内容,并返回详细的文件信息(如文件名、大小、权限等)。

三、sftp MCP安装和配置

3.1 python和uv的安装

因为这个MCP是基于python,所以首先需要自行安装python环境和uv命令,具体安装方式请参考下面这篇文章:

体验了一波Trae中智能体+MCP功能,真的太顶了(附保姆级MCP配置教程)

3.2 sftp MCP下载

sftp MCP的git地址如下: github.com/XiaYeAI/sft...

将项目克隆到本地,然后在终端进入到sftp-mcp-server目录,比如我的是E:\GIT_CODE\mcp\sftp-mcp-server,进入该目录下,执行如下命令:

bash 复制代码
uv sync

这个命令会安装项目依赖。

3.3 在Trae中配置sftp MCP

打开Trae IDE的AI侧栏,点击设置->MCP->手动添加。

在打开的输入框中输入如下配置:

bash 复制代码
{
  "mcpServers": {
    "sftp-server": {
      "command": "uv",
       "args": ["--directory", "/path/to/your/project", "run", "python", "src/main.py"],
      "env": {
         "TARGET_HOST": "your-sftp-server.com",
         "TARGET_USERNAME": "your-username",
         "TARGET_PASSWORD": "your-password",
         "LOCAL_PATH": "/path/to/local/directory",
         "REMOTE_PATH": "/path/to/remote/directory",
         "IGNORE_PATTERNS": "["*.log", "node_modules/", ".git/"]"
       }
    }
  }
}

重要说明:

  • /path/to/your/project 替换为您的项目根目录的绝对路径
  • env中环境变量说明如下:
变量 描述 默认值
TARGET_HOST 服务器主机名或 IP 地址 必需
TARGET_USERNAME 用户名 必需
TARGET_PASSWORD 密码 必需
LOCAL_PATH 本地目录路径 必需
REMOTE_PATH 远程目录路径 必需
IGNORE_PATTERNS 要忽略的文件模式 []

然后点击确认 ,mcp界面出现绿色的勾说明配置成功了。

四、sftp MCP使用场景

SFTP MCP服务器的强大功能使其适用于多种开发和运维场景。

场景一:Web开发与持续部署

问题:您正在本地开发一个Web应用,并需要频繁地将代码同步到开发或预演服务器上进行测试。

解决方案

  1. 配置服务器 :在.env文件中配置好您的开发服务器SFTP信息和本地/远程代码路径。
  2. 一键同步 :在MCP客户端中,直接调用sync_directory工具。服务器会自动同步所有变更的文件,并根据IGNORE_PATTERNS忽略掉node_modules等无需上传的目录。
  3. 远程重启服务 :代码同步完成后,调用execute_remote_command工具在服务器上执行重启命令(如 systemctl restart nginxpm2 reload my-app),使变更生效。

场景二:远程服务器运维与管理

问题:您需要管理一台远程服务器,包括上传配置文件、查看日志、执行维护脚本等。

解决方案

  1. 上传配置文件 :使用upload_file工具,将本地修改好的配置文件(如nginx.conf)精确地上传到服务器的指定位置。
  2. 查看日志 :使用read_remote_file工具,直接在您的IDE中查看远程服务器上的日志文件内容,无需通过SSH客户端登录服务器。
  3. 执行维护脚本 :通过execute_remote_command工具运行服务器上的备份脚本、清理脚本或任何其他维护任务,并立即获取执行结果。

场景三:数据分析与文件处理

问题:您需要将本地生成的数据集上传到远程计算服务器进行处理,并在处理完成后下载结果。

解决方案

  1. 上传数据集 :使用upload_file将大型数据文件(如CSV或JSON文件)上传到服务器。
  2. 启动处理任务 :调用execute_remote_command在服务器上运行数据处理脚本(如一个Python或R脚本)。
  3. 监控与获取结果 :您可以编写一个轮询逻辑,定期使用list_remote_directory检查输出目录,或使用read_remote_file查看一个状态文件。当任务完成后,再使用read_remote_file获取最终的结果文件内容。

以上这些都是可能的场景,在Trae中使用,最好是自定义一个智能体,明确告知智能体你的处理流程,比如我的提示词是这样:

bash 复制代码
注意:严格执行项目规则中的约束。
注意:不要写开发文档,现在项目中文档太多了。
你是一个资深的测试开发工程师,你擅长开发代码以后,自己进行测试,然后我们现在有一个项目,需要先使用测试程序跑通api,代码在本地生成,但是运行是在服务器,一个正常的工作流是这样:
1.你写测试程序测试后端api是否可以正常调用
2.如果返回报错,需要你通过sftp-server工具从服务器取日志文件下来读取错误,日志文件路径:/xxx/xxx/xxxx
3.根据错误你修改后端代码,然后调用sftp-server自动上传代码,代码本地路径:E:\GIT_CODE\xxxxx,上传服务器路径:/opt/xxxxx,上传后不需要你重启程序,后台程序会保持热更新
4.然后你继续调用测试api的程序进行测试
5.循环以上过程,直到项目所有api接口都可以调通

然后就出现了本文最开始的场景,每一次的请求都能压榨的干干净净,比较烦的一点是还需要点击继续,要是不用我点继续就好了。

当然啦,以上场景可能更适合从0到1的项目,如果是公司项目,那还是要谨慎一点,还是要自己确认一下每次的改动。

话说以前我还想学习一下怎么写mcp来着,这次写突然发现,用Trae写一个mcp也太简单了,我只是描述了一下我的需求,它自己找到mcp的最新文档,根据文档就写出了这么一个mcp,搞得我完全没有欲望去学了。

好了,今天就说到这里了,如果对你有所启发,麻烦动动你宝贵的小手点个赞,谢谢!

相关推荐
竹苓1 小时前
Agent 工具箱:一步步搭建你的第一个 MCP 服务
agent·mcp
星际码仔2 小时前
Trae SOLO全方位测评:离真正的“AI原生IDE”还有多远?
ai编程·cursor·trae
聚客AI4 小时前
🤖Cherry Studio+ MCP实现文件自由操控的奥秘
人工智能·llm·mcp
机器之心5 小时前
昨晚,业内首个「Context Engineer」来了,TRAE推出SOLO模式
trae
Goboy6 小时前
TRAE SOLO 模式发布:首位「Context Engineer」正式出道,AI主导开发时代来了!
trae
qiyue777 小时前
AI编程专栏(六)-前端必用MCP推荐
前端·ai编程·mcp
枣把儿8 小时前
Vibe Coding 一天内完成图片编辑工具( Trae 又行了?
前端·trae
大模型真好玩10 小时前
深入浅出LangChain AI Agent智能体开发教程(三)—LangChain核心概念“链”
人工智能·python·mcp
cpp加油站11 小时前
Trae2.0上新:SOLO模式初体验,相比IDE模式大幅增强
ai编程·trae·solo