乐于分享
好东西不私藏

用 MCP + Jenkins 打造 AI 自动发布助手

用 MCP + Jenkins 打造 AI 自动发布助手

用 MCP + Jenkins 打造 AI 自动发布助手

前言

最近 MCP(Model Context Protocol)越来越火。

很多开发者讨论 MCP 时,关注点往往是:

  • • AI 能不能访问数据库?
  • • AI 能不能调用企业内部系统?
  • • AI 能不能连接知识库?

但对于大多数研发团队来说,MCP 最有价值的场景其实并不复杂:

把每天重复执行的工作流,变成 AI 可以调用的能力。

例如:

  • • 打包客户端
  • • 编译服务端
  • • 部署测试环境
  • • 发布预发布环境
  • • 回滚线上版本
  • • 查询构建日志

这些工作几乎每天都在发生。

而 Jenkins 本身已经具备完整的自动化能力,我们缺少的只是:

一座连接 AI 与 Jenkins 的桥梁。

MCP 正好可以承担这个角色。


MCP + Jenkins 的整体架构

整个系统结构非常简单:

Claude / ChatGPT / Gemini / Cursor                │                ▼           MCP Server                │         Jenkins REST API                │     Build / Deploy / Rollback

在这种模式下,研发人员不再需要:

  • • 登录 Jenkins
  • • 找到对应 Job
  • • 选择参数
  • • 点击 Build

而是直接告诉 AI:

帮我把最新代码部署到测试环境

或者:

回滚生产环境到昨天的稳定版本

AI 会自动调用 MCP Tool,完成整个流程。


为什么值得做?

以一个 50 人规模的游戏研发团队为例。

每天可能发生:

操作
次数
客户端打包
20+
服务端构建
30+
测试环境部署
10+
查询构建状态
50+
查看失败日志
30+

这些工作本身没有技术含量。

但会占用大量时间。

如果能够让 AI 自动处理:

开发人员    ↓一句自然语言    ↓AI Agent    ↓MCP Tool    ↓Jenkins

就能显著降低日常运维成本。


MCP Tool 应该如何设计?

很多团队的第一反应是:

把 Jenkins API 全部暴露出去。

其实并不推荐。

更好的方式是:

将业务语义封装成工具。


Tool 1:查询项目

listProjects()

返回:

[  "game-client",  "game-server",  "payment-service"]

Tool 2:触发构建

buildProject({  project: "game-server",  branch: "develop"})

AI 可以理解:

构建 develop 分支服务端

无需用户了解 Jenkins Job。


Tool 3:查询构建状态

getBuildStatus({  project: "game-server",  buildNumber: 123})

返回:

{  "status": "SUCCESS"}

Tool 4:部署环境

deploy({  project: "game-server",  buildNumber: 123,  env: "test"})

Tool 5:回滚

rollback({  project: "game-server",  buildNumber: 120,  env: "prod"})

核心代码实现

下面给出一个基于 FastMCP 的简单代码实现。


安装依赖

npm install fastmcp axios zod

MCP Server 初始化

import { FastMCP } from "fastmcp";const server = new FastMCP({  name: "jenkins-mcp",  version: "1.0.0"});

Jenkins API 封装

import axios from "axios";const client = axios.create({  baseURL: process.env.JENKINS_URL,  auth: {    username: process.env.JENKINS_USER!,    password: process.env.JENKINS_TOKEN!  }});

构建 Tool

import { z } from "zod";server.addTool({  name: "build_project",  parameters: z.object({    project: z.string(),    branch: z.string()  }),  execute: async ({ project, branch }) => {    await client.post(      `/job/${project}/buildWithParameters`,      null,      {        params: {          branch        }      }    );    return {      success: true,      message: `${project} 已开始构建`    };  }});

查询构建状态

server.addTool({  name: "build_status",  parameters: z.object({    project: z.string(),    buildNumber: z.number()  }),  execute: async ({ project, buildNumber }) => {    const { data } = await client.get(      `/job/${project}/${buildNumber}/api/json`    );    return {      building: data.building,      result: data.result    };  }});

获取日志

server.addTool({  name: "build_log",  parameters: z.object({    project: z.string(),    buildNumber: z.number()  }),  execute: async ({ project, buildNumber }) => {    const { data } = await client.get(      `/job/${project}/${buildNumber}/consoleText`    );    return data.slice(-5000);  }});

更高级的玩法

如果只是简单封装 Jenkins API,其实价值有限。

真正有价值的是:

MCP 帮用户隐藏 Jenkins 的复杂性。


场景一:部署最新成功版本

用户:

把测试服更新到最新稳定版本

AI 调用:

deployLatestSuccess({  project: "game-server",  env: "test"})

内部流程:

查询构建历史        ↓找到最近成功版本        ↓触发部署        ↓返回结果

用户完全无需知道:

  • • Build Number
  • • Jenkins Job
  • • Pipeline 参数

场景二:分析构建失败

用户:

刚才为什么打包失败?

MCP:

获取日志      ↓交给 LLM 分析      ↓生成总结

返回:

构建失败原因:1. Addressables 打包失败2. 缺失资源:   Assets/UI/Login.prefab建议:重新执行资源构建后再次打包。

这比让开发人员自己翻几千行日志高效得多。


场景三:自动发布流程

未来甚至可以把整个发版流程串起来:

发布 1.3.5 版本        │        ▼检查 Git Tag        │        ▼触发 Jenkins Build        │        ▼等待完成        │        ▼部署预发布环境        │        ▼执行自动化测试        │        ▼生成 Release Notes        │        ▼通知飞书群

研发人员只需一句话:

发布 1.3.5 到预发布环境

剩余步骤全部自动完成。


研发团队的最佳实践

对于研发团队,建议将 MCP 作为统一自动化入口。

除了 Jenkins,还可以继续扩展:

  • • GitLab
  • • Gitea
  • • 飞书
  • • 企业微信
  • • Jira
  • • Tapd
  • • 禅道

最终形成:

研发人员    │    ▼ AI Agent    │    ▼ MCP Server    │ ┌──┼───────────┐ ▼  ▼           ▼GitLab Jenkins Kubernetes ▼      ▼         ▼代码   构建      部署

这样 AI 不再只是一个聊天机器人。

而是真正成为研发团队的自动化操作入口。


结语

MCP 的真正价值,并不在于构建一个“无所不能”的超级智能体。

它最大的价值在于:

将企业内部已经存在的能力,封装成 AI 可以理解和调用的工具。

对于研发团队来说:

  • • Jenkins 负责执行
  • • MCP 负责连接
  • • 大模型负责理解用户意图

三者结合后,很多原本需要人工点击、切换页面、填写参数的工作,都可以被一句自然语言取代。

当团队积累越来越多的 MCP Tool 后,最终形成的将不是一个简单的聊天机器人,而是一个真正能够参与研发流程的 AI 工程助手。

补充

截止发稿时间,Jenkins已经推出了官方MCP插件,官方MCP插件的功能更加全面和完善,建议直接使用。本文的目的是通过按步骤实现一个MCP服务,让读者对如何从零构建MCP服务有一个初步的认识。

相关学习资料