Skip to content

Hale2000/Coding_agent-mcp_deploy

Repository files navigation

Spring Boot Jar 包自动部署工具

项目背景

在云服务器部署 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 权限的用户
  • 网络连接(用于安装依赖)

安装方法

1. 克隆项目

git clone <项目地址>
cd mcp_deploy

2. 安装依赖

使用 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:数据库相关配置

使用方法

启动 MCP 服务器

python main.py

调用部署工具

1. 连接服务器

from fastmcp import FastMCP

mcp = FastMCP()
mcp.connect()

# 调用 ssh_connect 工具
result = mcp.ssh_connect()
print(result)

2. 完整部署流程

# 调用 full_deploy 工具
result = mcp.full_deploy()
print(result)

3. 单独调用工具

检查 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 工具时,会执行以下步骤:

  1. SSH 连接:连接到目标服务器
  2. 检查 Java:检查 Java 是否安装,如未安装则自动安装
  3. 检查数据库:如果配置了使用 MySQL 或 MariaDB,检查是否安装,如未安装则自动安装
  4. 检查 Redis:如果配置了使用 Redis,检查是否安装,如未安装则自动安装
  5. 检查 Nginx:如果配置了使用 Nginx,检查是否安装,如未安装则自动安装并配置反向代理
  6. 检查端口:检查应用端口是否被占用,如被占用则杀掉相关进程
  7. 部署应用:上传 Jar 包,配置系统服务并启动
  8. 日志分析:分析应用启动日志,检测常见错误
  9. 测试应用:测试应用是否正常启动
  10. 测试 Nginx:测试 Nginx 反向代理是否正常工作

常见问题排查

1. SSH 连接失败

  • 检查服务器 IP、端口、用户名和密码是否正确
  • 检查服务器防火墙是否允许 SSH 连接
  • 检查网络连接是否正常

2. Java 安装失败

  • 检查服务器网络连接是否正常
  • 检查指定的 Java 版本是否可用

3. Nginx 502 Bad Gateway 错误

  • 检查 Spring Boot 应用是否正常启动
  • 检查 Nginx 配置文件是否正确
  • 检查应用端口是否正确配置

4. 应用启动失败

  • 检查应用日志,查看具体错误信息
  • 检查数据库连接是否正确
  • 检查 Redis 连接是否正确
  • 检查端口是否被占用

注意事项

  1. 安全问题:配置文件中包含服务器密码等敏感信息,请妥善保管
  2. 权限问题:确保服务器用户具有 sudo 权限
  3. 网络问题:确保服务器可以访问外部网络,用于安装依赖
  4. Python 版本:在 Windows 上推荐使用 Python 3.12 或 3.13,避免 Python 3.14 的兼容性问题
  5. 端口冲突:确保配置的端口未被其他服务占用

示例

配置示例

{
    "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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages