一个企业级的 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 Gateway)
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 Gateway,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 Pipeline 作业的名称。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 作业"
"触发 deploy-prod 作业,参数 version 为 1.2.3"
"显示 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 是否可访问