Jenkins自动化服务

Jenkins MCP Server是一个封装Jenkins REST API的本地服务,用于自动化构建和发布流程。

  • by HuaByteBender
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Hobo-clh/jenkins-mcp

使用说明

# Jenkins MCP Server

Table of Contents

English

Overview

A local MCP server that wraps Jenkins REST APIs for release automation.

Features

  • List jobs: jenkins_list_jobs
  • Trigger build: jenkins_build
  • Get build result: jenkins_get_build
  • Wait until completion: jenkins_wait_build
  • Read console log: jenkins_get_console

Requirements

  • Python 3.9+
  • Python packages: mcp, httpx
  • Jenkins API token account (Build + Read permissions on target jobs)

Environment Variables

Copy .env.example and set values:

  • JENKINS_URL: Jenkins base URL, for example https://jenkins.company.com
  • JENKINS_USER: Jenkins username
  • JENKINS_TOKEN: Jenkins API token
  • JENKINS_VERIFY_SSL: true/false, default true
  • JENKINS_JOB_WHITELIST: comma-separated job whitelist, * means all
  • JENKINS_REQUEST_TIMEOUT: request timeout in seconds, default 30
  • JENKINS_DEFAULT_BRANCH: default branch injected when no branch parameter is passed, for example origin/develop
  • JENKINS_DEFAULT_BRANCH_PARAM: branch parameter name, default branch

Run Locally

$env:JENKINS_URL = "https://jenkins.company.com"
$env:JENKINS_USER = "robot_release"
$env:JENKINS_TOKEN = "***"
$env:JENKINS_JOB_WHITELIST = "release-test,folder1/release-job"
$env:JENKINS_DEFAULT_BRANCH = "origin/develop"
python tools/jenkins-mcp/server.py

Register In Codex (~/.codex/config.toml)

[mcp_servers.jenkins-mcp]
command = "python"
args = ["C:/Users/HP/mmt/finance/tools/jenkins-mcp/server.py"]

[mcp_servers.jenkins-mcp.env]
JENKINS_URL = "https://jenkins.company.com"
JENKINS_USER = "robot_release"
JENKINS_TOKEN = "your_token"
JENKINS_VERIFY_SSL = "true"
JENKINS_JOB_WHITELIST = "release-test,folder1/release-job"
JENKINS_REQUEST_TIMEOUT = "30"
JENKINS_DEFAULT_BRANCH = "origin/develop"

Typical One-Click Release Flow

  1. Call jenkins_build(job_name="release-test", parameters={"branch":"main","env":"test"})
  2. Use returned build_number (or queue_id)
  3. Call jenkins_wait_build(...)
  4. If failed, call jenkins_get_console(...)

Security Recommendations

  • Use a dedicated Jenkins robot account
  • Restrict permissions to required jobs only
  • Keep JENKINS_JOB_WHITELIST enabled in MCP
  • Store token only in environment variables or secrets

中文

概述

这是一个本地 MCP 服务,封装 Jenkins REST API,用于发布自动化与构建编排。

功能

  • 列出任务:jenkins_list_jobs
  • 触发构建:jenkins_build
  • 查询构建结果:jenkins_get_build
  • 等待构建完成:jenkins_wait_build
  • 读取控制台日志:jenkins_get_console

依赖

  • Python 3.9+
  • Python 包:mcp、httpx
  • Jenkins API Token 账号(对目标任务至少有 Build + Read 权限)

快速开始

  1. 复制 .env.example,填写 Jenkins 地址、用户名和 Token。
  2. 建议配置 JENKINS_JOB_WHITELIST 只允许需要的任务。
  3. 建议配置 JENKINS_DEFAULT_BRANCH=origin/develop 作为默认编译分支。
  4. 启动服务:python tools/jenkins-mcp/server.py。
  5. 在 Codex 的 ~/.codex/config.toml 注册该 MCP 服务。

环境变量

  • JENKINS_URL:Jenkins 地址,例如 https://jenkins.company.com
  • JENKINS_USER:Jenkins 用户名
  • JENKINS_TOKEN:Jenkins API Token
  • JENKINS_VERIFY_SSL:true/false,默认 true
  • JENKINS_JOB_WHITELIST:可访问 job 白名单(逗号分隔),* 表示全部
  • JENKINS_REQUEST_TIMEOUT:请求超时秒数,默认 30
  • JENKINS_DEFAULT_BRANCH:未传 branch 参数时自动注入的默认分支,例如 origin/develop
  • JENKINS_DEFAULT_BRANCH_PARAM:分支参数名,默认 branch

本地运行示例

$env:JENKINS_URL = "https://jenkins.company.com"
$env:JENKINS_USER = "robot_release"
$env:JENKINS_TOKEN = "***"
$env:JENKINS_JOB_WHITELIST = "release-test,folder1/release-job"
$env:JENKINS_DEFAULT_BRANCH = "origin/develop"
python tools/jenkins-mcp/server.py

Codex 配置示例

[mcp_servers.jenkins-mcp]
command = "python"
args = ["C:/Users/HP/mmt/finance/tools/jenkins-mcp/server.py"]

[mcp_servers.jenkins-mcp.env]
JENKINS_URL = "https://jenkins.company.com"
JENKINS_USER = "robot_release"
JENKINS_TOKEN = "your_token"
JENKINS_VERIFY_SSL = "true"
JENKINS_JOB_WHITELIST = "release-test,folder1/release-job"
JENKINS_REQUEST_TIMEOUT = "30"
JENKINS_DEFAULT_BRANCH = "origin/develop"

典型一键发布流程

  1. 调用 jenkins_build(job_name="release-test", parameters={"branch":"main","env":"test"})
  2. 使用返回的 build_number(或 queue_id)
  3. 调用 jenkins_wait_build(...)
  4. 如失败,调用 jenkins_get_console(...) 排查

安全建议

  • 使用专用 Jenkins 机器人账号
  • 仅授予必要任务权限
  • 建议始终开启 JENKINS_JOB_WHITELIST
  • Token 仅存放在环境变量或密钥系统中