Jenkins MCP需求
AI工作流的灵活应变与运维流水线的严谨规范存在衔接问题,Jenkins与MCP的结合能打破数据孤岛,使AI的决策力与流水线的执行力实现无缝衔接,提升运维工作的智能化水平。
今天我们就来进行下Dify + Jenkins MCP实战,实现运维工作中自动化构建与任务管理,其主要功能如下:
检索构建:快速定位特定构建任务,查看详细日志和结果。
获取任务:呈现任务当前状态。
获取所有任务:展示所有任务历史记录,便于任务调度和资源分配。
触发构建:代码变更或满足条件时自动触发构建流程,提升开发部署效率。
Dify
Dify运用智能化流程自动化与数据管理技术,为企业提供AI解决方案,助力其优化业务流程、提高工作效率,实现数字化转型升级,适用于多行业场景。
核心功能
可视化工作流编排:采用零代码拖拽式界面,降低开发门槛,便于构建复杂 AI 流程。
强大模型兼容:可无缝集成 GPT 系列、Llama、Mistral 等数百种语言模型,能灵活适配业务需求。
智能 RAG 引擎:内置文档深度解析与检索增强系统,可精准溯源,降低 AI 幻觉,保障输出可靠性。
开放插件生态:兼容 50 +工具与 API 扩展,支持自定义插件开发,能打造多种功能场景。
一键云端部署:支持云托管与私有化部署双模式,可实现分钟级上线 AI 应用,保障数据主权。
开源社区驱动:全栈代码开放可定制,有活跃的开发者生态持续赋能。
工具依赖
插件市场:https://marketplace.dify.ai/?language=en-US&category=all&q=mcp
MCP SSE / StreamableHTTP
工具信息
名称:MCP SSE / StreamableHTTP
版本:0.2.1
作者:Junjie.M
类型:工具
安装次数:67520 次
Github 仓库:https://github.com/junjiem/dify-plugin-tools-mcp_sse
工具功能
通过HTTP with SSE或Streamable HTTP传输方式,使用MCP协议来发现和调用工具,且支持多个MCP服务配置。
Agent Strategies (Support MCP Tools)
工具信息
名称:Agent 策略(支持 MCP 工具)
版本:0.2.2
作者:Junjie.M
类型:agent-strategy
安装次数:75037 次
Github 仓库:https://github.com/junjiem/dify-plugin-agent-mcp_sse
工具功能
提供Function Calling 和 ReAct 的Agent策略集合,支持通过HTTP with SSE 或 Streamable HTTP传输方式使用MCP协议来发现和调用工具,且支持多个MCP服务的配置。
Jenkins
Jenkins 是开源 CI&CD 软件领导者,提供超过 1000 个插件来支持构建、部署、自动化,满足任何项目的需要。
核心功能
持续集成和持续交付:可作为简单的 CI 服务器,或成为任何项目的持续交付中心。
简易安装:基于 Java 的独立程序,可在 Windows、Mac OS X 和其他类 Unix 操作系统上运行。
配置简单:通过网页界面轻松设置和配置,含即时错误检查和内置帮助。
插件丰富:更新中心有 1000 多个插件,集成持续集成和持续交付工具链中几乎所有工具。
可扩展:通过插件架构扩展,可能性几乎无限。
分布式:可在多台机器上分配工作,加快构建、测试和部署。
插件依赖
MCP Server Plugin
1.插件信息
插件功能:实现了 Model Context Protocol(MCP)的服务器端组件,使 Jenkins 能作为 MCP 服务器,为 MCP 客户端(如 LLM 驱动的应用或 IDE)提供上下文、工具和功能。
基于版本:基于 MCP Java SDK 版本 0.11.0,该版本实现了 2025-03-26 版的 MCP 规范。
插件版本:0.37.v5d2d8c089e8b_,7 天前发布,需 Jenkins 2.479.3 及以上版本。
https://plugins.jenkins.io/mcp-server/
注意:Jenkins 升级过程可能会出现插件不兼容、系统环境不兼容(如JDK 11+)、用户权限丢失等风险,升级需谨慎!
2.核心特性
MCP 服务器实现:实现了 MCP 协议的服务器端功能。
Jenkins 集成:将 Jenkins 功能作为 MCP 工具和资源暴露。
可扩展架构:通过 McpServerExtension 接口轻松扩展 MCP 功能。
3.关键组件
Endpoint:MCP 通信的主要入口,处理传输连接和消息路由。
DefaultMcpServer:实现 McpServerExtension,提供与 Jenkins 作业和构建交互的默认工具。
McpToolWrapper:将 Java 方法包装为 MCP 工具,处理参数解析和结果格式化。
McpServerExtension:用于扩展 MCP 服务器功能的接口。
- 与Jenkins 交互的内置工具
作业管理
getJob按完整路径获取作业
getJobs获取分页作业列表
triggerBuild触发作业构建,支持参数化构建
构建信息
getBuild获取特定构建或最后一次构建
updateBuild更新构建显示名称和描述
getBuildLog获取构建日志
SCM 集成
getJobScm获取作业的 SCM 配置
getBuildScm获取特定构建的 SCM 配置
getBuildChangeSets获取特定构建的变更日志集
管理信息
whoAmI获取当前用户信息
本次实战我们主要会涉及到getJob、triggerBuild、getBuild、getBuildLog等几个经常使用的场景。
工作流编排
Jenkins侧配置
1.mcp-server插件
MCP Server插件在安装时会自动设置必要的端点和工具,无需额外配置。
插件有以下三种安装方式,如图:
注意:
插件安装完后需重启Jenkins
Jenkins 2.479及以上版本
2.MCP客户端连接方式
MCP客户端可以使用以下方式连接到服务器:
Streamable HTTP Endpoint: /mcp-server/mcp
SSE Endpoint: /mcp-server/sse
Message Endpoint: /mcp-server/message
在此我们使用Streamable HTTP,这是MCP的一项关键更新, 用于替代原先的HTTP+SSE作为默认传输方式 ,在解决原有方案中连接不可恢复、服务端长连接压力大等问题的同时,依然保留了 SSE 带来的流式响应优势。
注意:尽量使用mcp-server最新版本并关注官网文档更新,避免联调失败。例如在我们实践前官网版本及文档并未提及Streamable HTTP Endpoint,导致对接失败。
3.身份认证
MCP服务器插件需要与它所运行的Jenkins实例相同的凭据。
Jenkins API Token:从您的Jenkins用户账户生成一个API令牌,例如用户jenkins
Basic Authorization:在HTTP基本认证头中使用API令牌,例如token为1127985f036f5c3d228123d7dc8fd830dd3
注意:Basic Authorization 认证需要将“user:token”组合的字符串进行base64编码。
基础认证信息
jenkins:1127985f036f5c3d228123d7dc8fd830dd3
经base64编码
amVua2luczoxMTI3OTg1ZjAzNmY1YzNkMjI4MTIzZDdkYzhmZDgzMGRkMw==
经base64编码后的认证信息,最终会被Dify侧的mcp 服务配置及mcp sse 的 apikey认证授权使用,
原始认证格式,需替换jenkins-url为真实地址
{
“jenkins”: {
“transport”: “streamableHttp”,
“url”: “https://jenkins-url/mcp-server/mcp”,
“headers”: {
“Authorization”: “Basic “
}
}
}
填写base64编码后的认证信息,需替换jenkins-url为真实地址
{
“jenkins”: {
“transport”: “streamableHttp”,
“url”: “https://jenkins-url/mcp-server/mcp”,
“headers”: {
“Authorization”: “Basic amVua2luczoxMTI3OTg1ZjAzNmY1YzNkMjI4MTIzZDdkYzhmZDgzMGRkMw==”
}
}
}
Dify侧配置
1.安装插件
MCP SSE / StreamableHTTP
Agent Strategies (Support MCP Tools)
2.创建工作流
借助大模型的Function Calling 能力能够分析自然语言并将其转化为结构化指令,通过mcp_sse连接mcp-sever获取并调用mcp工具,从而执行最终的构建。
1.开始节点
开始节点我们提供了两个参数:
query,面向查询场景输入自然语言即可,例如:查询xxx任务;
APP_NAME,面向执行场景输入应用名触发发版/启停构建,例如:输入test则触发启停;
注意:根据应用名的发版/启停构建是我们自建的流水线,在此只作为实例进行演示,请根据实际场景进行调整。
2.条件分支节点
为保障Jenkins 构建的安全性,对于执行类场景我们还是希望通过严格的输入参数进行限定,而对于查询类场景通过自然语言识别即可。
3.Agent-查询节点
根据条件分支判断,Agent-查询节点使用的是query参数,mcp_sse 获取mcp-server的工具列表,然后判断调用getJob、getBuild、getBuildLog中相应需求的一个工具。
Agent节点主要补充以下信息
工具列表,使用mcp_sse工具,添加apikey认证授权;
MCP服务配置,填写mcp-server连接及认证;
指令,非必填项输入提示词;
查询,填写输入参数query;
4.LLM节点
LLM节点将agent节点的输出根据提示词进行整理,以增加可读性。
5.代码执行节点
对于参数化构建,在调用mcp-server前我们需要根据输入参数进行json格式化。
6.Agent-执行节点
根据条件分支判断,Agent-执行节点使用的是APP_NAME参数,mcp_sse 指定调用triggerBuild工具即可,保证最小化执行。
注意:不同流水线参数按实际情况自行拼装。
7.结束节点
根据查询、执行操作进行差异化输出:
查询操作,将LLM节点格式化后的构建信息进行输出;
执行操作,将Agent节点执行后的原始信息进行输出;
场景1:查询构建任务
场景2:查询构建任务日志
场景3:执行参数化构建
总结
MCP作为运维智能体不可或缺的能力,借助MCP将AI工作流整合到Jenkins的运维流水线中,能切实贴合运维日常工作需求。这种深度融合打破了AI工作流与运维流水线之间的数据壁垒和协同障碍,使AI的智能决策能力与流水线的高效执行能力形成有机整体,全面提升运维工作的智能化水平、运行效率和可靠性。
添加好友,邀你入群,运维人的圈子,每日精彩分享,更有小伙伴们的热议!
声明:来自木讷大叔爱运维,仅代表创作者观点。链接:https://eyangzhen.com/2292.html