使用说明
主持人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核心中使用。这
treeJenkins 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-token
HTTP传输
要使用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 |
|
--timeout |
JENKINS_TIMEOUT |
30000 |
HTTP请求超时(毫秒) | |
--max-retries |
JENKINS_MAX_RETRIES |
3 |
瞬时错误的最大重试次数(429/5xx) | |
--retry-delay |
JENKINS_RETRY_DELAY |
1000 |
指数退避的基延迟(毫秒) | |
--transport |
MCP_TRANSPORT |
stdio |
运输类型(stdio |
|
--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
许可证
麻省理工学院