MCP 實踐-用 AI 對話觸發(fā) Jenkins 打包App

背景

每次打包都要打開瀏覽器、進 Jenkins、找到對應(yīng) Job、填參數(shù)、點構(gòu)建……重復(fù)了無數(shù)次。能不能直接說一句"幫我打個 iOS 包"就完事?

現(xiàn)在AI已經(jīng)非常通用,今天我用 MCP(Model Context Protocol) 搞了一下。


思路

Jenkins 提供了"觸發(fā)遠程構(gòu)建"功能,只要一個帶 token 的 HTTP POST 請求就能觸發(fā)打包。而 MCP 讓 AI 具備調(diào)用自定義工具的能力。兩者結(jié)合,AI 就能代替我操作 Jenkins。

整個鏈路:

用戶對話 → AI 理解意圖 → 調(diào)用 MCP tool → POST Jenkins API → 觸發(fā)打包

實現(xiàn)

這里MCP服務(wù)用Python實現(xiàn)。

新建了一個 trigger_build MCP 工具,核心邏輯很簡單:


@mcp.tool()
async def trigger_build(
    platform: str,
    parameters: dict[str, str] | None = None,
) -> dict[str, object]:
    """觸發(fā) Jenkins 打包構(gòu)建任務(wù)。

    調(diào)用前必須向用戶確認以下幾項:
    1. 平臺:iOS(platform="ios")還是安卓(platform="android")
    2. 分支
    3. 環(huán)境
    4. 描述:本次構(gòu)建的備注說明

    iOS 參數(shù)(Job: iOS_M1_Package_Job):
        branchName   - 分支,如 develop、release/1.0.0、feature/xxx
        configuration - 環(huán)境,可選 Debug / Release / AdHoc
        UPDATENOTE   - 描述

    Android 參數(shù)(Job: assemble):
        BRANCH_NAME - 分支,如 master、develop、feature/xxx
        BUILD_TYPE  - 環(huán)境,可選 xzdzDebug / xzdzProfile / xzdzRelease
        APP_INFO    - 描述

    Args:
        platform: 必填,平臺類型,ios 或 android
        parameters: 可選,構(gòu)建參數(shù)鍵值對
    """
    try:
        return await trigger_jenkins_build(platform, parameters) # 觸發(fā)jenkins構(gòu)建請求
    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"網(wǎng)絡(luò)請求異常: {e}"}

敏感信息全部放 .env,不進代碼庫:

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 各自的參數(shù)名,這樣 AI 知道該問什么、傳什么:

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

啟動MCP服務(wù),推薦使用 npx @modelcontextprotocol/inspector調(diào)試

測試獲取tools是否成功,啟動調(diào)試工具后 將服務(wù)鏈接輸入到 URL窗口(TransportType協(xié)議一定要寫對,我這里用的 StreamableHTTP),點擊底部 Connect,會列出我們MCP的所有工具。


image.png

添加MCP

將MCP服務(wù)配置到自己的AI工具,我這里直接配置到VSCode演示:

創(chuàng)建 .vscode/mcp.json 文件,并配置MCP服務(wù)

{
  "servers": {
    "app-publish-mcp": {
      "type": "http",
      "url": "http://localhost:18901/mcp"
    }
  }
}

效果

在VSCode的AI插件聊天窗口對話:


image.png

這個時候,AI會根據(jù)你的語義拆分意圖,并命中對應(yīng)的 MCP 工具,如果缺少必要參數(shù),AI也會繼續(xù)追問,可以看到構(gòu)建觸發(fā)成功的回復(fù)。

這時候我們打開jenkins看到打包開始。


image.png

總結(jié)

整個工具代碼量極少,但從此以后打包只需要一句話。MCP 的價值不在于"能做多復(fù)雜的事",而在于把已有的工具和 AI 對話連起來,消除那些每天重復(fù)的操作摩擦。
所以這里思路可以拓展到我們很多工作場景,比如App發(fā)布、打包、后臺一些重復(fù)性的操作等,都可以使用MCP的方式提效。
同樣也可以將自己的MCP配置到自己 Claude、Cursor、龍蝦、釘釘 等聊天工具中使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容