主持人mcp詹金斯
Jenkins的本地MCP(模型上下文协议)服务器,用于复制 Jenkins MCP服务器插件 通过HTTP调用Jenkins REST API。
Jenkins实例上不需要安装插件。
为什么?
Jenkins服务器上必须安装官方的Jenkins MCP服务器插件。如果您没有安装插件的管理员权限, host-mcp-jenkins 为您提供了在本地运行的17个相同的MCP工具,使用您的个人API令牌调用Jenkins REST API。
兼容性
| Jenkins版本 | 状态 |
|---|---|
| LTS 2.462.x+ | ✅ 完全支持 |
| LTS 2.426.x✅ 完全支持 | |
| LTS 2.401.x✅ 完全支持 | |
| LTS 2.361.x✅ 完全支持 | |
| 每周(最新) | ✅ 完全支持 |
最低版本: 詹金斯2.164+。自最早的2.x版本以来,该服务器使用的所有REST API端点都可以在Jenkins核心中使用。这 tree Jenkins 1.464中引入了查询参数(用于响应字段过滤)。插件依赖关系
大多数工具(17个工具中有11个)只使用Jenkins核心REST API,不需要任何插件。一些工具类别取决于特定的插件:
| 工具 | 必需插件 | 最小插件版本 | 注释 |
|---|---|---|---|
getJobScm, getBuildScm, findJobsWithScmUrl | Git插件 | 2.0+ | 通过Git插件操作暴露SCM数据 |
getTestResults | JUnit插件 | 1.0+ | 自1.577以来与Jenkins捆绑在一起 |
getFlakyFailures | JUnit插件 | 1.33+ | 需要缺陷检测支持 |
注: Git插件安装在约96%的Jenkins控制器上。JUnit插件的安装率约为97%,自1.577版本以来,默认情况下已与Jenkins捆绑在一起。如果这些插件不存在,相应的工具将返回空结果或404错误。
API端点矩阵
每个工具都映射到一个或多个Jenkins REST API端点。所有JSON端点都支持 tree 字段过滤参数。
| 工具 | 方法 | REST端点 | 依赖关系 | |
|---|---|---|---|---|
getJob | 得到 | /job/{name}/api/json | 核心 | |
getJobs | 得到 | /api/json | 核心 | |
getBuild | 得到 | `/job/{name}/{build\ | lastBuild}/api/json` | 核心 |
triggerBuild | 职位 | /job/{name}/build, /job/{name}/buildWithParameters | 核心 | |
updateBuild | 职位 | /job/{name}/{build}/submitDescription, configSubmit | 核心 | |
whoAmI | 得到 | /me/api/json | 核心 | |
getStatus | 得到 | /api/json, /computer/api/json, /queue/api/json | 核心 | |
getQueueItem | 得到 | /queue/item/{id}/api/json | 核心 | |
getBuildLog | 得到 | /job/{name}/{build}/consoleText | 核心 | |
getProgressiveBuildLog | 得到 | /job/{name}/{build}/logText/progressiveText | 核心 | |
searchBuildLog | 得到 | /job/{name}/{build}/consoleText | 核心 | |
getJobScm | 得到 | /job/{name}/api/json | Git插件 | |
getBuildScm | 得到 | /job/{name}/{build}/api/json | Git插件 | |
getBuildChangeSets | 得到 | /job/{name}/{build}/api/json | 核心 | |
findJobsWithScmUrl | 得到 | /api/json (递归三级树) | Git插件 | |
getTestResults | 得到 | /job/{name}/{build}/testReport/api/json | JUnit插件 | |
getFlakyFailures | 得到 | /job/{name}/{build}/testReport/api/json | JUnit插件≥1.33 |
快速开始
npx @mister-good-deal/host-mcp-jenkins \
--jenkins-url https://jenkins.example.com \
--jenkins-user your-username \
--jenkins-token your-api-tokenHTTP传输
要使用Streamable HTTP传输而不是stdio启动服务器,请执行以下操作:
npx @mister-good-deal/host-mcp-jenkins \
--jenkins-url https://jenkins.example.com \
--jenkins-user your-username \
--jenkins-token your-api-token \
--transport http \
--port 3000这暴露了:
- 健康检查:
GET /health→{"status":"ok"} - MCP端点:
/mcp(流式HTTP) - 平滑关闭 上
SIGINT/SIGTERM
配置
所有选项都支持CLI参数和环境变量(CLI优先):
| CLI参数 | 环境变量 | 必需 | 默认值 | 描述 | |||
|---|---|---|---|---|---|---|---|
--jenkins-url | JENKINS_URL | ✅ | — | Jenkins基本URL | |||
--jenkins-user | JENKINS_USER | ✅ | — | Jenkins用户名 | |||
--jenkins-token | JENKINS_API_TOKEN | ✅ | — | Jenkins API令牌 | |||
--insecure | JENKINS_INSECURE=true | false | 跳过TLS证书验证 | ||||
--log-level | LOG_LEVEL | info | debug | info | warn | error | |
--timeout | JENKINS_TIMEOUT | 30000 | HTTP请求超时(毫秒) | ||||
--max-retries | JENKINS_MAX_RETRIES | 3 | 瞬时错误的最大重试次数(429/5xx) | ||||
--retry-delay | JENKINS_RETRY_DELAY | 1000 | 指数退避的基延迟(毫秒) | ||||
--transport | MCP_TRANSPORT | stdio | 运输类型(stdio | http) | |||
--port | MCP_PORT | 3000 | HTTP服务器端口(仅限 --transport http) |
获取Jenkins API令牌
- 登录Jenkins
- 点击您的用户名(右上角)→ 配置
- 在...之下 API代币,单击 添加新令牌
- 命名并单击 生成 --复制令牌值
MCP客户端配置
克劳德桌面
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": ["-y", "@mister-good-deal/host-mcp-jenkins"],
"env": {
"JENKINS_URL": "https://jenkins.example.com",
"JENKINS_USER": "your-username",
"JENKINS_API_TOKEN": "your-api-token"
}
}
}
}VS代码
增添 .vscode/mcp.json:
{
"servers": {
"jenkins": {
"command": "npx",
"args": ["-y", "@mister-good-deal/host-mcp-jenkins"],
"env": {
"JENKINS_URL": "https://jenkins.example.com",
"JENKINS_USER": "your-username",
"JENKINS_API_TOKEN": "your-api-token"
}
}
}
}光标
添加到MCP服务器配置中:
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": ["-y", "@mister-good-deal/host-mcp-jenkins", "--jenkins-url", "https://jenkins.example.com", "--jenkins-user", "your-username", "--jenkins-token", "your-api-token"]
}
}
}贡献者须知: 如果您在此工作区内运行MCP服务器(其中package.json宣布"packageManager": "pnpm@...")以及npx失败与host-mcp-jenkins: not found,使用pnpm dlx相反。这是因为corepack拦截npx从pnpm管理的项目运行时。
HTTP传输(远程)
当服务器运行时 --transport http,MCP客户端可以通过HTTP URL连接,而无需启动子进程:
克劳德桌面/VS代码/光标:
{
"mcpServers": {
"jenkins": {
"url": "http://localhost:3000/mcp"
}
}
}Docker使用
HTTP传输使运行在Docker容器内的AI代理能够连接到MCP服务器,而不需要MCP网关。
在主机上运行MCP服务器
在主机上使用HTTP传输启动服务器:
npx @mister-good-deal/host-mcp-jenkins \
--jenkins-url https://jenkins.example.com \
--jenkins-user your-username \
--jenkins-token your-api-token \
--transport http \
--port 3000从Docker容器内部,连接到 http://host.docker.internal:3000/mcp.
Docker编写示例
services:
ai-agent:
image: your-ai-agent:latest
environment:
MCP_SERVER_URL: "http://host.docker.internal:3000/mcp"
extra_hosts:
- "host.docker.internal:host-gateway"注: 这extra_hosts在Linux上需要映射。在macOS和Windows上,Docker桌面解决了host.docker.internal自动。
可用工具(17)
与完全对等 Jenkins MCP服务器插件,加上额外功能:
核心(8)
| 工具 | 说明 |
|---|---|
getJob | 按完整路径获得Jenkins工作 |
getJobs | 获取按名称排序的Jenkins作业分页列表 |
getBuild | 获取Jenkins作业的特定版本或最后一个版本 |
triggerBuild | 触发Jenkins作业的构建(支持参数) |
updateBuild | 更新构建显示名称和/或描述 |
whoAmI | 获取当前已验证用户的信息 |
getStatus | 检查Jenkins实例的运行状况和准备状态 |
getQueueItem | 通过其ID获取队列项目详细信息 |
构建日志(3)
| 工具 | 说明 |
|---|---|
getBuildLog | 检索构建的分页日志行 |
getProgressiveBuildLog | 通过Jenkins渐进文本API增量检索构建日志 |
searchBuildLog | 搜索与模式(字符串或正则表达式)匹配的日志行 |
供应链管理(4)
| 工具 | 说明 |
|---|---|
getJobScm | 检索Jenkins作业的SCM配置 |
getBuildScm | 检索Jenkins构建的SCM配置 |
getBuildChangeSets | 检索Jenkins构建的更改日志集 |
findJobsWithScmUrl | 查找使用指定git SCM URL的作业 |
测试结果(2)
| 工具 | 说明 |
|---|---|
getTestResults | 检索构建的测试结果(可选仅失败) |
getFlakyFailures | 检索构建的片状测试失败 |
与Jenkins MCP服务器插件的比较
| 功能 | Jenkins插件 | 主机mcp Jenkins |
|---|---|---|
| 安装 | 需要Jenkins管理员 | 无-在本地运行 |
| 传输 | SSE、可流式HTTP、无状态 | stdio(默认)、可流化HTTP |
| 身份验证 | Jenkins内置 | 基于HTTP Basic的API令牌 |
| 工具 | 16 | 17(完全奇偶校验+渐进日志) |
| 响应格式 | ToolResponse 信封 | 相同 ToolResponse 信封 |
tree 参数 | 通过内部API | 转发到REST API |
发展
# Install dependencies
pnpm install
# Build
pnpm run build
# Run in development mode
pnpm run dev -- --jenkins-url https://jenkins.example.com --jenkins-user admin --jenkins-token TOKEN
# Lint
pnpm run lint
# Unit tests
pnpm test
# Integration tests (requires Docker)
pnpm run test:integration许可证
麻省理工学院
