MCP 实践-用 AI 对话触发 Jenkins 打包App

背景

每次打包都要打开浏览器、进 Jenkins、找到对应 Job、填参数、点构建......重复了无数次。能不能直接说一句"帮我打个 iOS 包"就完事?

现在AI已经非常通用,今天我用 MCP(Model Context Protocol) 搞了一下。


思路

Jenkins 提供了"触发远程构建"功能,只要一个带 token 的 HTTP POST 请求就能触发打包。而 MCP 让 AI 具备调用自定义工具的能力。两者结合,AI 就能代替我操作 Jenkins。

整个链路:

sh 复制代码
用户对话 → AI 理解意图 → 调用 MCP tool → POST Jenkins API → 触发打包

实现

这里MCP服务用Python实现。

新建了一个 trigger_build MCP 工具,核心逻辑很简单:

python 复制代码
@mcp.tool()
async def trigger_build(
    platform: str,
    parameters: dict[str, str] | None = None,
) -> dict[str, object]:
    """触发 Jenkins 打包构建任务。

    调用前必须向用户确认以下几项:
    1. 平台:iOS(platform="ios")还是安卓(platform="android")
    2. 分支
    3. 环境
    4. 描述:本次构建的备注说明

    iOS 参数(Job: iOS_M1_Package_Job):
        branchName   - 分支,如 develop、release/1.0.0、feature/xxx
        configuration - 环境,可选 Debug / Release / AdHoc
        UPDATENOTE   - 描述

    Android 参数(Job: assemble):
        BRANCH_NAME - 分支,如 master、develop、feature/xxx
        BUILD_TYPE  - 环境,可选 xzdzDebug / xzdzProfile / xzdzRelease
        APP_INFO    - 描述

    Args:
        platform: 必填,平台类型,ios 或 android
        parameters: 可选,构建参数键值对
    """
    try:
        return await trigger_jenkins_build(platform, parameters) # 触发jenkins构建请求
    except httpx.HTTPStatusError as e:
        return {"success": False, "error": f"Jenkins 请求失败: {e.response.status_code} {e.response.text}"}
    except httpx.RequestError as e:
        return {"success": False, "error": f"网络请求异常: {e}"}

敏感信息全部放 .env,不进代码库:

dotenv 复制代码
JENKINS_URL=http://jenkins.xxxxxx.com:8000
JENKINS_USER=xxxxxxx
JENKINS_API_TOKEN=xxxxx
JENKINS_IOS_TOKEN=xxxxx
JENKINS_ANDROID_TOKEN=xxxxx

工具的 docstring 写清楚了 iOS 和 Android 各自的参数名,这样 AI 知道该问什么、传什么:

  • iOSbranchName / configuration(Debug/Release/AdHoc)/ UPDATENOTE
  • AndroidBRANCH_NAME / BUILD_TYPE(xzdzDebug/xzdzProfile/xzdzRelease)/ APP_INFO

启动MCP服务,推荐使用 npx @modelcontextprotocol/inspector调试

inspector为开源调试工具

测试获取tools是否成功,启动调试工具后 将服务链接输入到 URL窗口(TransportType协议一定要写对,我这里用的 StreamableHTTP),点击底部 Connect,会列出我们MCP的所有工具。

添加MCP

将MCP服务配置到自己的AI工具,我这里直接配置到VSCode演示:

创建 .vscode/mcp.json 文件,并配置MCP服务

js 复制代码
{
  "servers": {
    "app-publish-mcp": {
      "type": "http",
      "url": "http://localhost:18901/mcp"
    }
  }
}

效果

在VSCode的AI插件聊天窗口对话:

这个时候,AI会根据你的语义拆分意图,并命中对应的 MCP 工具,如果缺少必要参数,AI也会继续追问,可以看到构建触发成功的回复。

这时候我们打开jenkins看到打包开始。

总结

整个工具代码量极少,但从此以后打包只需要一句话。MCP 的价值不在于"能做多复杂的事",而在于把已有的工具和 AI 对话连起来,消除那些每天重复的操作摩擦。

所以这里思路可以拓展到我们很多工作场景,比如App发布、打包、后台一些重复性的操作等,都可以使用MCP的方式提效。

同样也可以将自己的MCP配置到自己 Claude、Cursor、龙虾、钉钉 等聊天工具中使用。

相关推荐
Warson_L6 小时前
独立开发推荐安装的skills
ai编程
threerocks7 小时前
一用一个不吱声的视频解析 Skill,你值得拥有
aigc·ai编程
吴佳浩8 小时前
AI 工程师知识地图:模型格式、框架、部署工具一次讲明白
人工智能·aigc·ai编程
青木_JS10 小时前
Headroom 是怎么给 Codex 省 Token 的:策略、效果与一次历史恢复记录
ai编程
MomentYY10 小时前
Temperature:AI 的“脑洞旋钮”
前端·llm·ai编程
Java陈序员10 小时前
企业级!一个基于 Java 开发的开源 AI 应用开发平台!
spring boot·agent·mcp
小九九的爸爸11 小时前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
AlbertZein11 小时前
别只盯着最强模型了,Agent 场景更该看这类 Flash 档模型
aigc·openai·ai编程
ZzT11 小时前
公司用 AI 筛简历,他写了个 AI 帮你挑公司
面试·aigc·ai编程
妙码生花11 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十四):眨眼小人登录页制作
前端·javascript·ai编程