使用说明
詹金斯·麦克普
A. 模型上下文协议(MCP) 该服务器为AI助手提供对Jenkins CI/CD系统的完全访问权限。它使用TypeScript和Node.js构建,使Claude、Cursor和其他MCP兼容客户端能够通过自然语言查询、管理和控制Jenkins作业、构建、节点和队列。
目录
特性
- 23个MCP工具 --完全的Jenkins自动化:作业、构建、节点和队列
- 3种运输方式 —
stdio,sse,以及streamable-http针对不同的部署场景 - 只读模式 --仅限于受控环境的安全只读操作
- 按请求授权 --用于多用户/多租户设置的基于HTTP标头的Jenkins身份验证
- SSL配置 --切换自签名证书的SSL证书验证
- 会话单打 --在会话中重用Jenkins客户端连接以提高效率
- CSRF保护 --Jenkins安全的自动碎屑/令牌处理
- 文件夹支持 --完全支持嵌套的Jenkins文件夹和多分支管道
- TypeScript严格模式 --具有严格编译器检查的全类型代码库
用法
MCP客户端
将以下内容添加到MCP客户端配置文件中:
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": [
"jenkins-mcp",
"--jenkins-url",
"https://jenkins.example.com",
"--jenkins-username",
"your-username",
"--jenkins-password",
"your-api-token"
]
}
}
}
克劳德代码
claude mcp add jenkins -- npx jenkins-mcp \
--jenkins-url https://jenkins.example.com \
--jenkins-username your-username \
--jenkins-password your-api-token
光标
添加到光标MCP设置(.cursor/mcp.json):
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": [
"jenkins-mcp",
"--jenkins-url",
"https://jenkins.example.com",
"--jenkins-username",
"your-username",
"--jenkins-password",
"your-api-token"
]
}
}
}
只读模式
为了确保生产环境的安全,请使用 --read-only 要禁用所有写入操作,请执行以下操作:
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": [
"jenkins-mcp",
"--read-only",
"--jenkins-url",
"https://jenkins.example.com",
"--jenkins-username",
"your-username",
"--jenkins-password",
"your-api-token"
]
}
}
}
配置
Jenkins MCP可以通过CLI参数、环境变量或HTTP标头(用于HTTP传输)进行配置。
CLI选项
jenkins-mcp [options]
| 选项 | 描述 | 默认值 |
|---|---|---|
--jenkins-url |
Jenkins服务器URL | -- |
--jenkins-username |
Jenkins用户名 | -- |
--jenkins-password |
Jenkins密码或API令牌 | - |
--jenkins-timeout |
API请求超时(秒) | 5 |
--jenkins-verify-ssl / --no-jenkins-verify-ssl |
验证SSL证书 | true |
--jenkins-session-singleton / --no-jenkins-session-singleton |
在会话中重用Jenkins客户端 | true |
--read-only |
仅注册只读工具 | false |
--allow-full-console-output |
注册不安全的原始完整控制台输出工具 | false |
--transport |
运输方式: stdio |
sse |
--host |
HTTP传输主机 | 0.0.0.0 |
--port |
HTTP传输端口 | 9887 |
环境变量
Jenkins MCP从流程环境变量中读取配置。它不会自动加载 .env 文件本身。
如果你使用本地 .env 文件,在启动服务器之前加载它(例如: set -a; source .env; set +a),然后运行 jenkins-mcp.
示例 .env 值:
# Jenkins server URL
jenkins_url=https://jenkins.example.com/
# Jenkins basic auth
jenkins_username=your-username
jenkins_password=your-api-token
# Optional runtime settings
jenkins_timeout=5
jenkins_verify_ssl=true
jenkins_session_singleton=true
HTTP标头(仅限HTTP传输)
使用时 sse 或 streamable-http 传输,Jenkins凭据可以通过HTTP标头为每个请求提供。这支持多用户场景,其中不同的请求针对不同的Jenkins实例进行身份验证。
| 标题 | 描述 |
|---|---|
x-jenkins-url |
Jenkins服务器URL |
x-jenkins-username |
Jenkins用户名 |
x-jenkins-password |
Jenkins密码或API令牌 |
每个提供的标头都会覆盖该请求的相应环境变量。缺少的标头值会退回到环境配置。
可用工具
作业/项目工具
| 工具 | 描述 | 参数 | 只读 |
|---|---|---|---|
get_all_items |
从Jenkins获取所有作业和文件夹 | -- | 是 |
get_item |
按全名获取特定作业或文件夹 | fullname |
是的 |
get_item_config |
获取作业配置XML | fullname |
是的 |
set_item_config |
更新作业配置XML | fullname, config_xml |
没有 |
query_items |
使用正则表达式过滤器搜索项目 | class_pattern?, fullname_pattern?, color_pattern? |
是的 |
build_item |
触发作业构建 | fullname, build_type, params? |
没有 |
构建工具
| 工具 | 描述 | 参数 | 只读 |
|---|---|---|---|
get_build |
获取构建详细信息 | fullname, number? |
是的 |
get_build_console_tail |
获取构建控制台输出的最新尾部 | fullname, number?, max_bytes? |
是的 |
get_build_console_chunk |
按偏移量读取增量控制台输出 | fullname, start, number?, max_bytes? |
是的 |
search_build_console |
使用摘录增量搜索控制台输出 | fullname, query, number?, max_bytes?, ... |
是的 |
get_build_failure_excerpt |
通过增量扫描获取重点故障摘录和测试提示 | fullname, number?, max_bytes?, max_excerpts? |
是的 |
get_build_console_output |
获取原始完整控制台日志输出 | fullname, number? |
是的 |
get_build_test_report |
获取测试结果报告 | fullname, number? |
是的 |
get_build_scripts |
提取构建脚本(用于回放) | fullname, number? |
是的 |
get_running_builds |
获取当前正在运行的所有版本 | -- | 是 |
stop_build |
停止正在运行的构建 | fullname, number |
没有 |
对于大型原木,首选 get_build_console_tail -> search_build_console -> get_build_console_chunk.
get_build_console_output 默认情况下禁用,仅在以下情况下注册 --allow-full-console-output 已设置。
大型日志助手工具强制执行服务器端字节上限,即使调用者要求更多,搜索风格工具也会增量扫描日志,而不是获取 consoleText.
推荐故障排除流程
对于失败的构建,首选以下顺序:
get_build确认result,building,以及目标构建号。get_build_failure_excerpt获取集中的失败片段和失败的测试提示。search_build_console使用锚,例如Caused by:,ERROR,FAILED,或失败的测试名称。get_build_console_chunk继续阅读返回的nextStart当第一段摘录不够时进行偏移。get_build_console_output仅当明确需要原始完整日志导出时。
对于正在运行的构建,首选以下顺序:
get_build确认构建仍在运行。get_build_console_tail检查最新的输出窗口。search_build_console查看最近窗口中的已知错误锚点。get_build_console_chunk与最后nextStart值以保持轮询而不重新读取旧输出。
节点工具
| 工具 | 描述 | 参数 | 只读 |
|---|---|---|---|
get_all_nodes |
获取所有计算节点 | -- | 是 |
get_node |
获取具有执行者信息的特定节点 | name |
是的 |
get_node_config |
获取节点配置XML | name |
是的 |
set_node_config |
更新节点配置XML | name, config_xml |
没有 |
队列工具
| 工具 | 描述 | 参数 | 只读 |
|---|---|---|---|
get_all_queue_items |
获取队列中等待的所有项目 | -- | 是 |
get_queue_item |
按ID获取特定队列项 | id |
是的 |
cancel_queue_item |
取消排队的项目 | id |
没有 |
标记的工具 只读:否 仅在以下情况下可用
--read-only未设置。
运输方式
stdio(默认)
用于直接MCP客户端集成的标准输入/输出传输。这是Claude Desktop、Cursor和其他桌面MCP客户端的推荐模式。
jenkins-mcp --transport stdio \
--jenkins-url https://jenkins.example.com \
--jenkins-username user --jenkins-password token
SSE(服务器发送事件)
使用服务器发送事件的基于HTTP的传输。适用于基于web的客户端或远程访问场景。
jenkins-mcp --transport sse \
--host 127.0.0.1 --port 9887 \
--jenkins-url https://jenkins.example.com \
--jenkins-username user --jenkins-password token
- SSE端点:
GET /sse--建立SSE连接并返回会话 - 消息端点:
POST /message?sessionId=<id>--向会话发送消息
流式HTTP
基于会话的HTTP MCP传输 /mcp会话通过MCP初始化 initialize,然后与 mcp-session-id 在后续请求中。
jenkins-mcp --transport streamable-http \
--host 127.0.0.1 --port 9887 \
--jenkins-url https://jenkins.example.com \
--jenkins-username user --jenkins-password token
- MCP端点:
POST /mcp--处理所有MCP协议消息
建筑
┌─────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude, Cursor, etc.) │
└──────────────────┬──────────────────────────────┘
│ MCP Protocol
┌──────────────────▼──────────────────────────────┐
│ Transport Layer │
│ stdio │ SSE │ Streamable HTTP │
├──────────────────┬──────────────────────────────┤
│ MCP Server (mcp.ts) │
│ Tool registration & error handling │
├──────────────────┬──────────────────────────────┤
│ Tool Handlers │
│ item.ts │ build.ts │ node.ts │ queue.ts │
├──────────────────┬──────────────────────────────┤
│ Jenkins REST Client │
│ HTTP requests, auth, CSRF, timeout │
├──────────────────┬──────────────────────────────┤
│ Jenkins Server │
│ (REST API endpoint) │
└─────────────────────────────────────────────────┘
关键设计模式:
- 依赖注入 —
ToolRuntime接口支持可测试的工具处理程序 - 会话管理 --HTTP传输将会话映射到隔离的运行时上下文
- 按请求授权 --HTTP标头覆盖多租户使用的环境配置
- 自动CSRF --碎屑令牌被透明地获取和缓存
发展
脚本
| 命令 | 描述 |
|---|---|
pnpm dev |
以监视模式启动(更改时自动重新加载) |
pnpm build |
使用tsup构建生产包 |
pnpm test |
使用Vitest运行测试 |
pnpm test:watch |
在监视模式下运行测试 |
pnpm test:coverage |
使用覆盖率报告运行测试 |
pnpm check |
运行所有检查:格式、lint、类型检查、测试、构建 |
pnpm lint |
运行ESLint |
pnpm format |
使用Prettier格式化代码 |
pnpm commit |
与Commitizen进行交互式常规承诺 |
pnpm changeset |
创建发布变更集 |