1. 为什么要把 Jenkins 构建状态接进 AI 助手
Jenkins 用久了都会遇到同一个尴尬:构建结果散在网页里,想看某次流水线到底哪一步挂了,得先登录、点进 Job、翻 Console Output,再一行行找报错。如果同时维护十几个 Job,每天光切页面就能耗掉不少时间。mcp-server 这个 Jenkins 插件的价值,就是把这些操作从「人点网页」变成「AI 助手调工具」——你在支持 MCP 的客户端里说一句「帮我看看 order-service 最近一次构建为什么失败」,AI 就会去调 Jenkins 暴露出来的工具,把状态和日志拿回来。
MCP 全称 Model Context Protocol,你可以把它理解成 AI 助手和外部系统之间的「USB 接口标准」。Jenkins 侧装一个 mcp-server 插件,它就把 Jenkins 的构建查询、任务触发、参数化构建这些能力封装成一个个 tool;AI 客户端侧配置一个 MCP server 地址,就能发现并调用这些 tool。中间靠 HTTP Basic Auth 认证,密码用的是 Jenkins API Token 而不是登录密码,这一点后面会重点讲。
这套链路适合谁?一是天天盯流水线的开发或运维,想把「查构建」这件事塞进日常对话流;二是做 AI Agent 的工程师,需要一个真实可调用的 CI 系统当工具后端;三是团队里想给非 Jenkins 熟手降低操作门槛的人。最小可用链路其实不长:Jenkins 装插件、生成 API Token、在 AI 客户端写一段 MCP 配置、发一次查询验证。下面按这个顺序拆开讲,每一步都给可复制的内容。
需要先说明的是,mcp-server 插件本身只负责「暴露能力」,它不替代 Jenkins 的调度和权限体系。你原来怎么配 Job、怎么分权限,接进来之后还是那套。AI 助手只是换了个入口去调这些已有能力,所以鉴权链路必须走通,否则 AI 拿不到任何数据。
2. TaoToken 前置准备与 MCP 接入定位
在动手配 Jenkins 之前,先把 AI 侧的「大脑」准备好。AI 助手要能理解你的自然语言、决定调哪个 tool、再把 Jenkins 返回的 JSON 组织成人话,这背后需要一个稳定的模型服务。我这边用的是 TaoToken 的 API 来驱动对话和工具调用,它的接口兼容主流协议,配置起来不用改代码,改个 Base URL 和 Key 就行。
TaoToken 在这里的角色是「模型能力提供方」,不是 Jenkins 的代理,也不碰你的构建数据。你的 Jenkins 凭据、API Token 始终只在你自己的 MCP 配置和 Jenkins 服务之间流转。这一点要分清楚:模型负责理解和编排,Jenkins 插件负责执行,两者通过 MCP 协议对接。
具体要准备三样东西。第一是 TaoToken 的 API Key,去控制台生成,地址是 https://taotoken.net/api-keys ,这个 Key 填到 AI 客户端的模型配置里。第二是接入文档,不同客户端的配置字段不一样,文档在 https://taotoken.net/doc ,遇到字段对不上时翻一下最省事。第三是模型 ID,工具调用对模型能力有要求,选支持 function calling 的模型,具体型号在模型对话页能看到,https://taotoken.net/models 可以先试跑一轮确认能正常返回工具调用结构。
如果你只是想让 AI 帮忙查构建、偶尔触发一下,用按量的 API Key 就够了。但如果你打算把 Jenkins 操作嵌进长期的编码或 Agent 工作流,比如让 AI 在改完代码后自动触发构建并盯结果,那更适合用 Coding Plan,额度模型对持续调用更友好,入口在 https://taotoken.net/coding-plan 。我实测下来,查询类操作调用频率不高,按量完全够;真正吃额度的是让 AI 反复轮询构建状态直到完成,这种场景再考虑套餐。
还有一点,MCP 客户端本身要支持「自定义 MCP server」。Cursor、Claude Desktop、Cline 这类工具都支持在配置文件里加 MCP server 条目。如果你的客户端只支持 SSE 端点,Jenkins 插件也提供了 SSE 方式,配置形态不同但认证逻辑一样。先把模型侧跑通,再去接 Jenkins,出问题时能快速判断是模型侧还是 Jenkins 侧。
3. 可复制的 mcp-server 配置片段与 Jenkins 凭据设置
这一节是核心,配置写错一个字都连不上。先做 Jenkins 侧。登录 Jenkins,进「系统管理」→「插件管理」→「可选插件」,搜索 mcp-server 安装,装完重启。重启后在「系统管理」里能看到 MCP Server 相关配置项,确认插件已启用。
接着生成 API Token。点右上角你的用户名 →「设置」→「API Token」→「添加新 Token」,起个名字比如ai-mcp,生成后立刻复制,页面刷新就看不到了。这个 Token 就是后面 Basic Auth 的密码,用户名用你的 Jenkins 用户名。注意:绝对不要用登录密码,插件只认 API Token。
然后确认 MCP 端点地址。插件默认把 MCP 服务挂在 Jenkins 根路径下,形如http://你的jenkins地址:端口/mcp-server/mcp,具体路径以插件页面显示为准。如果是 HTTPS 就换成 https。这个地址加上认证头,就是 AI 客户端要配的全部。
下面给一份 Cursor / Claude Desktop 通用的 MCP 配置片段,放到客户端的 MCP 配置文件里(Cursor 是~/.cursor/mcp.json,Claude Desktop 是claude_desktop_config.json):
{ "mcpServers": { "jenkins": { "url": "http://jenkins.example.com:8080/mcp-server/mcp", "headers": { "Authorization": "Basic BASE64_OF_user:api_token" } } } }这里的Authorization值不是明文写user:token,而是要把用户名:API Token这串做 Base64 编码。Linux/macOS 下可以这样生成:
printf 'your_jenkins_user:your_api_token' | base64把输出整串替换掉上面的BASE64_OF_user:api_token。Windows PowerShell 用:
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("your_jenkins_user:your_api_token"))如果你的客户端走 SSE,配置形态换成端点 URL 加认证头,类似:
{ "mcpServers": { "jenkins": { "type": "sse", "url": "http://jenkins.example.com:8080/mcp-server/sse", "headers": { "Authorization": "Basic BASE64_OF_user:api_token" } } } }三件套对照记牢:Base URL是 Jenkins 的 MCP 端点,Key是 Base64 后的用户名:API Token,Model ID是你在 TaoToken 侧选的模型。这三样任何一样错,都会在验证阶段报错,下一节会逐个对。
配置完保存,重启 AI 客户端。客户端启动时会去拉 MCP server 的 tool 列表,如果认证通过,你就能在工具面板里看到 Jenkins 相关的工具,比如查询构建、触发构建之类。看不到工具,八成是认证或地址问题,别急着怀疑插件。
4. 验证一次构建查询请求
配置写完必须验证,不然你不知道链路通没通。最直接的方式是在 AI 客户端里发一句自然语言,让它去查一个真实存在的 Job。比如:
帮我查一下 demo-pipeline 这个 Job 最近一次构建的状态和结果
AI 收到后会做几件事:识别意图 → 选择 Jenkins 的查询工具 → 带上参数发起 MCP 调用 → 拿到 JSON → 组织成回答。如果一切正常,你会看到类似「最近一次构建 #42,状态 SUCCESS,耗时 1 分 20 秒」这样的回复。
如果客户端有工具调用日志,打开看请求细节。一次成功的 MCP 调用,请求头里应该带着你配的Authorization,响应是结构化的构建信息。你也可以先用 curl 直接打 MCP 端点,排除客户端因素:
curl -u "your_jenkins_user:your_api_token" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -X POST "http://jenkins.example.com:8080/mcp-server/mcp" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'这条命令做的是「列出所有可用工具」,返回里应该能看到 Jenkins 暴露的 tool 名称和参数 schema。能列出工具,说明认证和端点都对;列不出来,看返回的 HTTP 状态码,401 就是认证问题,404 就是路径写错。
再进一步,直接调一次查询工具,确认能拿到真实构建数据:
curl -u "your_jenkins_user:your_api_token" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -X POST "http://jenkins.example.com:8080/mcp-server/mcp" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_build_status","arguments":{"jobName":"demo-pipeline"}}}'工具名和参数以你实际tools/list返回的为准,不同版本插件命名可能略有差异。返回里能看到构建号、结果、时间戳这些字段,就说明最小可用链路彻底跑通了。这时候再回到 AI 客户端发自然语言,体验会顺很多,因为底层已经验证过。
验证阶段建议先用一个构建历史简单的 Job,别拿参数巨多、并发跑的流水线试,减少干扰变量。跑通之后再换成你真正关心的 Job。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
接 MCP 最容易卡在几个固定报错上,我按遇到频率排一下。
401 Unauthorized:认证没过。九成是这三个原因之一——用了登录密码而不是 API Token;Base64 编码时用户名或 Token 带多余空格;Token 生成后没复制对(比如复制了显示用的掩码)。排查方法:重新生成 Token,用printf命令重新编码,确认Authorization头是Basic加一串 Base64,中间一个空格。curl 测试时用-u user:token让 curl 自己编码,能快速区分是编码问题还是 Token 问题。
local proxy failed / connection refused:客户端连不上 MCP 端点。检查 Jenkins 地址和端口是否从你当前网络可达,防火墙有没有放行,Jenkins 是不是只监听了 localhost。如果 Jenkins 在内网,你的 AI 客户端也得能访问这个内网地址。另外确认端点路径拼对了,/mcp-server/mcp和/mcp-server/sse是两种模式,别混用。
reading choices / 模型返回结构解析失败:这个多半出在模型侧,不是 Jenkins 侧。表现是 AI 收到了工具返回,但组织回答时报错,或者干脆没触发工具调用。原因通常是选的模型不支持 function calling,或者 TaoToken 侧的模型 ID 填错。回到 https://taotoken.net/models 确认模型能力,换成明确支持工具调用的型号。如果客户端日志里能看到工具调用请求发出去了、Jenkins 也返回了,但 AI 解析不了,那就是模型编排能力问题,换模型即可。
OAuth 相关报错:有些客户端默认按 OAuth 流程去连 MCP server,但 Jenkins 插件用的是 Basic Auth,不走 OAuth。如果客户端配置里没有显式指定认证方式,它可能尝试 OAuth 发现流程然后失败。解决办法是在 MCP 配置里明确写headers带Authorization,别留空让客户端自己猜。看到OAuth discovery failed或invalid_client这类字样,基本就是这个原因。
排查顺序建议固定:先 curl 打端点确认 Jenkins 侧通不通,再看客户端日志确认请求发没发出去,最后看模型侧确认能不能解析工具结果。三段分开定位,比一上来就乱改配置高效得多。每改一处配置就重启客户端,MCP 配置一般不支持热加载。
6. 把 Jenkins 接进 AI 工作流的下一步
最小链路跑通后,可以往两个方向扩。一是加工具,插件支持通过实现McpServerExtension接口扩展自定义工具,你可以把团队特有的构建操作封装进去,让 AI 能调。二是把查询和触发串成工作流,比如让 AI 在代码改完后自动触发参数化构建,再轮询状态直到结束,把结果贴回对话。这种持续轮询的场景,用 Coding Plan 的额度模型会比按量更省心,入口还是 https://taotoken.net/coding-plan 。
配置和 Key 的管理集中在控制台 https://taotoken.net/api-keys ,接入字段有疑问翻文档 https://taotoken.net/doc ,想先验证模型能不能正确调工具就去模型对话页 https://taotoken.net/models 试一轮。把这几步走完,Jenkins 的构建状态就真正暴露给你的 AI 助手了,后面无非是按需加工具、调权限、扩 Job 范围。