Jenkins MCP Server 是一款企业级的 MCP(模型上下文协议)服务器,可实现与 Jenkins CI/CD 的无缝集成。它允许像 Claude 这样的 AI 助手通过全面且适用于生产环境的 API 与 Jenkins 进行交互。
# 全局安装
npm install -g @ashwinighuge/jenkins-mcp-server
# 或者直接使用 npx
npx @ashwinighuge/jenkins-mcp-server --help
将以下内容添加到 claude_desktop_config.json 文件中:
{
"mcpServers": {
"jenkins": {
"command": "jenkins-mcp",
"env": {
"JENKINS_URL": "http://your-jenkins-server:8080",
"JENKINS_USER": "your-username",
"JENKINS_API_TOKEN": "your-api-token"
}
}
}
}
# 全局安装,以便在系统范围内使用
npm install -g @ashwinighuge/jenkins-mcp-server
# 验证安装
jenkins-mcp --help
# 克隆仓库
git clone https://github.com/AshwiniGhuge3012/jenkins-mcp-server
cd jenkins-mcp-server
# 安装 Node.js 依赖
npm install
# 安装 Python 依赖
pip install -r requirements.txt # 或者使用 uv pip install
# 本地运行
node bin/jenkins-mcp.js --help
在工作目录中创建一个 .env 文件:
# 必需的 Jenkins 配置
JENKINS_URL="http://your-jenkins-server:8080"
JENKINS_USER="your-username"
JENKINS_API_TOKEN="your-api-token"
# 可选:服务器配置
MCP_PORT=8010
MCP_HOST=0.0.0.0
# 可选:重试配置
JENKINS_MAX_RETRIES=3
JENKINS_RETRY_BASE_DELAY=1.0
JENKINS_RETRY_MAX_DELAY=60.0
JENKINS_RETRY_BACKOFF_MULTIPLIER=2.0
# 可选:性能缓存配置
JENKINS_CACHE_STATIC_TTL=3600 # 1 小时
JENKINS_CACHE_SEMI_STATIC_TTL=300 # 5 分钟
JENKINS_CACHE_DYNAMIC_TTL=30 # 30 秒
JENKINS_CACHE_SHORT_TTL=10 # 10 秒
JENKINS_CACHE_STATIC_SIZE=1000 # 最大缓存项数
JENKINS_CACHE_SEMI_STATIC_SIZE=500
JENKINS_CACHE_DYNAMIC_SIZE=200
JENKINS_CACHE_PERMANENT_SIZE=2000
JENKINS_CACHE_SHORT_SIZE=100
# STDIO 模式(默认,适用于 Claude Desktop)
jenkins-mcp
# HTTP 模式(适用于 MCP 网关)
jenkins-mcp --transport streamable-http --port 8010
# 自定义主机和端口
jenkins-mcp --transport streamable-http --host localhost --port 9000
# 显示帮助信息
jenkins-mcp --help
| 模式 | 使用场景 | 命令 |
|---|---|---|
| STDIO | Claude Desktop、直接的 MCP 客户端 | jenkins-mcp |
| HTTP | MCP 网关、Web 集成 | jenkins-mcp --transport streamable-http |
# 使用 npx(无需全局安装)
npx @ashwinighuge/jenkins-mcp-server
# 使用环境变量
JENKINS_URL=http://localhost:8080 JENKINS_USER=admin JENKINS_API_TOKEN=abc123 jenkins-mcp
# 自定义配置的 HTTP 模式
jenkins-mcp --transport streamable-http --host 0.0.0.0 --port 8080
以下是该 MCP 服务器提供的工具列表:
trigger_jobjob_name(字符串):Jenkins 任务的名称。params(对象,可选):任务参数,以 JSON 对象形式传入。对于多选参数,请传入字符串数组。get_job_infojob_name(字符串):Jenkins 任务的名称。get_build_statusjob_name(字符串):Jenkins 任务的名称。build_number(整数):构建编号。get_console_logjob_name(字符串):Jenkins 任务的名称。build_number(整数):构建编号。start(整数,可选):获取日志的起始字节位置。list_jobsrecursive(布尔值,可选):如果为 True,则递归遍历文件夹(默认值:True)max_depth(整数,可选):递归的最大深度(默认值:10)include_folders(布尔值,可选):是否包含文件夹项(默认值:False)status_filter(字符串,可选):按任务状态过滤:"building"、"queued"、"idle"、"disabled"last_build_result(字符串,可选):按最后一次构建结果过滤:"SUCCESS"、"FAILURE"、"UNSTABLE"、"ABORTED"、"NOT_BUILT"days_since_last_build(整数,可选):仅显示最近 N 天内构建过的任务enabled_only(布尔值,可选):如果为 True,则仅显示启用的任务;如果为 False,则仅显示禁用的任务search_jobspattern(字符串):用于匹配任务名称的模式(支持通配符,如 'build*'、'test' 等)job_type(字符串,可选):按类型过滤 - "job"、"folder" 或 "all"(默认值:"job")max_depth(整数,可选):搜索的最大深度(默认值:10)use_regex(布尔值,可选):如果为 True,则将模式视为正则表达式而非通配符(默认值:False)status_filter(字符串,可选):按任务状态过滤:"building"、"queued"、"idle"、"disabled"last_build_result(字符串,可选):按最后一次构建结果过滤:"SUCCESS"、"FAILURE"、"UNSTABLE"、"ABORTED"、"NOT_BUILT"days_since_last_build(整数,可选):仅显示最近 N 天内构建过的任务enabled_only(布尔值,可选):如果为 True,则仅显示启用的任务;如果为 False,则仅显示禁用的任务get_queue_infoserver_infoget_pipeline_statusjob_name(字符串):Jenkins 流水线任务的名称。build_number(整数):构建编号。list_build_artifactsjob_name(字符串):Jenkins 任务的名称。build_number(整数):要列出制品的构建编号。download_build_artifactjob_name(字符串):Jenkins 任务的名称。build_number(整数):包含制品的构建编号。artifact_path(字符串):制品的相对路径(从 list_build_artifacts 获取)。max_size_mb(整数,可选):下载的最大文件大小(以 MB 为单位,默认值:50MB)。search_build_artifactsjob_name(字符串):要搜索的 Jenkins 任务的名称。pattern(字符串):用于匹配制品名称的模式(通配符或正则表达式)。max_builds(整数,可选):搜索的最近构建的最大数量(默认值:10)。use_regex(布尔值,可选):如果为 True,则将模式视为正则表达式而非通配符(默认值:False)。batch_trigger_jobsoperations(数组):任务操作列表,每个操作包含:
job_name(字符串):Jenkins 任务的名称params(对象,可选):任务参数priority(整数,可选):优先级 1 - 10(1 为最高,默认值:1)max_concurrent(整数,可选):最大并发任务触发数(默认值:5)fail_fast(布尔值,可选):遇到第一个失败时停止处理(默认值:false)wait_for_completion(布尔值,可选):等待所有任务完成(默认值:false)batch_monitor_jobsoperation_id(字符串):batch_trigger_jobs 返回的操作 ID。batch_cancel_jobsoperation_id(字符串):要取消的操作 ID。cancel_running_builds(布尔值,可选):尝试取消正在运行的构建(默认值:false)。get_cache_statisticsclear_cachecache_type(字符串,可选):要清除的缓存类型('all'、'static'、'semi_static'、'dynamic'、'permanent'、'short')job_name(字符串,可选):仅清除特定任务的缓存warm_cacheoperations(数组,可选):要预热的操作('server_info'、'job_list'、'queue_info')summarize_build_logjob_name(字符串):Jenkins 任务的名称。build_number(整数):构建编号。在 claude_desktop_config.json 中完成配置后,你可以向 Claude 提问:
"列出所有 Jenkins 任务"
"使用版本参数 1.2.3 触发 deploy-prod 任务"
"显示 api-tests 任务第 45 次构建的控制台日志"
"过去 24 小时内所有失败任务的状态如何?"
# 以 HTTP 模式启动服务器
jenkins-mcp --transport streamable-http --port 8010
# 示例 API 调用(使用 curl)
curl -X POST http://localhost:8010/mcp \
-H "Content-Type: application/json" \
-d '{"method": "tools/call", "params": {"name": "list_jobs", "arguments": {}}}'
# 以不同优先级触发多个任务
jenkins-mcp # 然后使用 batch_trigger_jobs 工具,传入以下内容:
{
"operations": [
{"job_name": "unit-tests", "priority": 1},
{"job_name": "integration-tests", "priority": 2},
{"job_name": "deploy-staging", "priority": 3}
],
"max_concurrent": 3,
"wait_for_completion": true
}
Python 依赖问题
# 如果 Python 包自动安装失败
pip install mcp[cli] pydantic requests python-dotenv fastapi cachetools
# 或者使用 uv(推荐)
uv pip install mcp[cli] pydantic requests python-dotenv fastapi cachetools
权限问题(Linux/macOS)
# 如果权限被拒绝
sudo npm install -g @ashwinighuge/jenkins-mcp-server
# 或者使用用户级安装
npm install -g @ashwinighuge/jenkins-mcp-server --prefix ~/.local
Jenkins 连接问题
JENKINS_URL 是否可访问。2FA/CSRF 问题
# 启用详细日志记录
DEBUG=jenkins-mcp jenkins-mcp
# 检查 Python 依赖
jenkins-mcp --help # 将验证依赖项
git checkout -b feature/amazing-featuregit commit -m 'Add amazing feature'git push origin feature/amazing-feature本项目采用 Apache 2.0 许可证 - 详情请参阅 LICENSE 文件。
本项目基于以下技术构建: