背景:
前期买了阿里云服务器,同步配置了域名,做了备案,计划用于大模型相关研究时的后台服务器。
转念一想,服务器闲着也是闲着,搞个简单的知识分享网站也挺美的。于是乎一个由纯静态页面组成的网站就诞生了(只有一个页面)。
又转念一想,干脆用大模型来生成网页,每天定时更新首页,实现页面的动态更新(狗头捂脸)。
再一想,干脆写个MCP,实现自动生成网页自动部署,一句话实现网站更新,岂不是更美。
步骤:
1、先选择一个本地的MCP Client,因为我一直在用Trae,所以自然用的是Trae。
2、因为对python比较熟悉,所以选择基于python实现MCP server,核心代码如下:
class SSHConnector:
"""SSH连接工具类,用于连接服务器并上传文件"""
def __init__(self, host, port, username, password=None, key_file=None, logger=None):
self.host = host
self.port = port
self.username = username
self.password = password
self.key_file = key_file
self.logger = logger or logging.getLogger('mcp_server')
self.client = None
def connect(self):
"""建立SSH连接"""
try:
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
if self.key_file:
self.client.connect(
hostname=self.host,
port=self.port,
username=self.username,
key_filename=self.key_file
)
else:
self.client.connect(
hostname=self.host,
port=self.port,
username=self.username,
password=self.password
)
self.logger.info(f"成功连接到服务器: {self.host}:{self.port}")
return True
except Exception as e:
self.logger.error(f"连接服务器失败: {str(e)}")
return False
def upload_file(self, local_path, remote_path):
"""上传文件到服务器"""
if not self.client:
self.logger.error("未建立SSH连接")
return False
try:
sftp = self.client.open_sftp()
# 确保远程目录存在
remote_dir = os.path.dirname(remote_path)
if remote_dir:
# 检查目录是否存在,不存在则创建
try:
sftp.stat(remote_dir)
except FileNotFoundError:
self.logger.info(f"创建远程目录: {remote_dir}")
# 创建目录(注意:paramiko不直接支持递归创建目录)
self._create_remote_dir(remote_dir)
# 上传文件
sftp.put(local_path, remote_path)
sftp.close()
self.logger.info(f"文件上传成功: {local_path} -> {self.host}:{remote_path}")
return True
except Exception as e:
self.logger.error(f"文件上传失败: {str(e)}")
return False
def _create_remote_dir(self, remote_dir):
"""递归创建远程目录"""
dirs = remote_dir.split('/')
path = ''
for dir in dirs:
if dir:
path += '/' + dir
try:
self.client.exec_command(f'mkdir -p {path}')
except Exception:
pass
def disconnect(self):
"""关闭SSH连接"""
if self.client:
self.client.close()
self.logger.info(f"已断开与服务器的连接: {self.host}:{self.port}")
3、python使用方法:
python mcp_server.py --upload test.html
4、在Trea设置中,添加MCP server:右上角齿轮 -- MCP -- 输入MCP server
{ "mcpServers": { "upload": { "command": "python mcp_server.py", "args": [ "--upload", "file" ] } } }
5、这样就可以在Trea里实现对话生成网页,并自动上传到服务器啦
TODO:后续计划加入自动生成自动上传功能,一个能够自己生成网页并更新的简单网站就完成啦。
最后:想要完整代码的可以私信哦。