在云服务器部署 Spring Boot 应用时,通常需要手动完成以下步骤:
- 连接服务器
- 检查和安装 Java 环境
- 安装和配置 Nginx 反向代理
- 检查和安装数据库(MySQL/MariaDB)
- 检查和安装 Redis
- 上传和部署 Jar 包
- 配置系统服务
- 启动应用并检查日志
这些步骤繁琐且容易出错,特别是在多环境部署时。本工具旨在简化这一过程,通过 MCP(FastMCP)框架将各个功能模块化,实现一键式自动化部署。
- SSH 连接管理:支持密码和密钥认证,自动处理连接和断开
- Java 环境管理:检查 Java 是否安装,自动安装指定版本
- Nginx 管理:检查 Nginx 是否安装,自动安装和配置反向代理
- 数据库管理:支持 MySQL 和 MariaDB 的检查、安装和配置
- Redis 管理:检查 Redis 是否安装,自动安装指定版本
- Jar 包部署:分析 Jar 包信息,上传到服务器,配置系统服务并启动
- 日志分析:自动分析应用启动日志,检测常见错误
- 完整部署流程:一键执行所有部署步骤,确保应用正常运行
- 模块化设计:每个功能都定义为独立的 MCP 工具,支持动态组合调用
- 配置管理:所有配置信息从
config.json读取,支持配置回写 - 跨平台支持:兼容 Linux 服务器,支持 Windows 开发环境
- Python 3.14 兼容:解决 Python 3.14 在 Windows 上的
asyncio导入问题 - 安全认证:支持密码和 SSH 密钥认证
- Python 3.12+(Windows 上推荐使用 Python 3.12 或 3.13,避免 Python 3.14 的兼容性问题)
- pip 或 uv 包管理器
- 网络连接(用于安装依赖)
- Linux 系统(支持 Ubuntu、Debian、CentOS、RHEL、Fedora、Rocky、AlmaLinux)
- SSH 服务开启
- 具有 sudo 权限的用户
- 网络连接(用于安装依赖)
git clone <项目地址>
cd mcp_deploy使用 uv(推荐):
uv install或使用 pip:
pip install -r requirements.txt项目使用 config.json 文件存储所有配置信息,包括:
{
"ServerConfig": {
"host": "服务器IP地址",
"port": 22,
"user": "用户名",
"password": "密码",
"private_key_path": "SSH密钥路径",
"cloud_provider": "云服务商"
},
"DeployConfig": {
"jar_path": "本地Jar包路径",
"app_name": "应用名称",
"server_port": 8080,
"nginx_port": 80,
"domain": "域名",
"deploy_path": "/tmp/deploy",
"java_version": "21",
"use_redis": false,
"use_mysql": false,
"use_mariadb": false,
"use_nginx": true
},
"DatabaseConfig": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "",
"database": "",
"db_type": "mysql",
"mysql_version": "8.0",
"mariadb_version": "10.11",
"redis_version": "7.0",
"redis_port": 6379
}
}- ServerConfig:服务器连接配置
- DeployConfig:部署相关配置
- DatabaseConfig:数据库相关配置
python main.pyfrom fastmcp import FastMCP
mcp = FastMCP()
mcp.connect()
# 调用 ssh_connect 工具
result = mcp.ssh_connect()
print(result)# 调用 full_deploy 工具
result = mcp.full_deploy()
print(result)检查 Java:
result = mcp.check_java()
print(result)安装 Java:
result = mcp.install_java(version="21")
print(result)配置 Nginx:
result = mcp.configure_nginx(
app_name="myapp",
backend_port=8080,
domain="example.com",
frontend_port=80
)
print(result)部署 Jar 包:
result = mcp.deploy_jar(
jar_path="/path/to/myapp.jar",
app_name="myapp"
)
print(result)当调用 full_deploy 工具时,会执行以下步骤:
- SSH 连接:连接到目标服务器
- 检查 Java:检查 Java 是否安装,如未安装则自动安装
- 检查数据库:如果配置了使用 MySQL 或 MariaDB,检查是否安装,如未安装则自动安装
- 检查 Redis:如果配置了使用 Redis,检查是否安装,如未安装则自动安装
- 检查 Nginx:如果配置了使用 Nginx,检查是否安装,如未安装则自动安装并配置反向代理
- 检查端口:检查应用端口是否被占用,如被占用则杀掉相关进程
- 部署应用:上传 Jar 包,配置系统服务并启动
- 日志分析:分析应用启动日志,检测常见错误
- 测试应用:测试应用是否正常启动
- 测试 Nginx:测试 Nginx 反向代理是否正常工作
- 检查服务器 IP、端口、用户名和密码是否正确
- 检查服务器防火墙是否允许 SSH 连接
- 检查网络连接是否正常
- 检查服务器网络连接是否正常
- 检查指定的 Java 版本是否可用
- 检查 Spring Boot 应用是否正常启动
- 检查 Nginx 配置文件是否正确
- 检查应用端口是否正确配置
- 检查应用日志,查看具体错误信息
- 检查数据库连接是否正确
- 检查 Redis 连接是否正确
- 检查端口是否被占用
- 安全问题:配置文件中包含服务器密码等敏感信息,请妥善保管
- 权限问题:确保服务器用户具有 sudo 权限
- 网络问题:确保服务器可以访问外部网络,用于安装依赖
- Python 版本:在 Windows 上推荐使用 Python 3.12 或 3.13,避免 Python 3.14 的兼容性问题
- 端口冲突:确保配置的端口未被其他服务占用
{
"ServerConfig": {
"host": "82.157.47.206",
"port": 22,
"user": "admin",
"password": "your_password",
"private_key_path": null,
"cloud_provider": "tencent"
},
"DeployConfig": {
"jar_path": "D:\\Workspace\\embodied\\backend\\target\\embodied-ai-platform-1.0.0.jar",
"app_name": "embodied_ai",
"server_port": 7070,
"nginx_port": 80,
"domain": null,
"deploy_path": "/tmp/deploy",
"java_version": "21",
"use_redis": true,
"use_mysql": false,
"use_mariadb": true,
"use_nginx": true
},
"DatabaseConfig": {
"host": "localhost",
"port": 3306,
"user": "root",
"password": "your_db_password",
"database": "embodied_ai",
"db_type": "mariadb",
"mysql_version": "8.0",
"mariadb_version": "10.11",
"redis_version": "7.0",
"redis_port": 6379
}
}from fastmcp import FastMCP
mcp = FastMCP()
mcp.connect()
# 执行完整部署流程
result = mcp.full_deploy()
# 打印部署结果
print("部署结果:", result["success"])
print("访问地址:", result["access_url"])
print("健康检查地址:", result["api_health_url"])
# 打印部署步骤
for step_name, step_result in result["steps"]:
print(f"{step_name}: {'成功' if step_result['success'] else '失败'}")
if not step_result['success']:
print(f" 错误信息: {step_result.get('message', '')}")本工具通过模块化设计和自动化流程,大大简化了 Spring Boot 应用的部署过程,提高了部署效率和可靠性。无论是开发环境还是生产环境,都可以使用本工具快速部署和管理 Spring Boot 应用。
版本:1.0.0 作者:MCP Team 更新时间:2026-02-26