背景
每次打包都要打開瀏覽器、進 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 知道該問什么、傳什么:
-
iOS:
branchName/configuration(Debug/Release/AdHoc)/UPDATENOTE -
Android:
BRANCH_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的所有工具。

添加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插件聊天窗口對話:

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

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