关于 MCP Jenkins
MCP Jenkins 将 Jenkins 操作提供给符合 Anthropic MCP 规范的 AI 客户端,面向需要通过自然语言访问 CI/CD 信息与操作的团队。它涵盖构建、节点、队列、测试报告、制品和插件等工具,并可启用只读模式。
主要功能
- 01查询任务、节点与构建队列
- 02查看构建日志、测试结果和制品
- 03启动、停止构建及提交流水线输入
- 04检查插件状态与依赖关系
- 05支持只读模式和多种传输方式
适用场景
- 01从 AI 客户端查询 Jenkins 构建状态
- 02检查失败测试及构建控制台输出
- 03在队列中取消任务或停止运行中的构建
- 04查看插件更新、问题及依赖图
MCP 相关
该 MCP 服务将 Jenkins 的任务、构建、节点、队列、制品和插件操作作为工具提供给 MCP 客户端。支持 stdio、SSE 和 streamable HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Jenkins
Model Context Protocol(MCP)是一种开源实现,遵循 Anthropic 的 MCP 规范,连接 Jenkins 与 AI 语言模型。本项目支持通过 Jenkins 工具进行安全且结合上下文的 AI 交互,同时保障数据隐私和安全。
安装
选择以下安装方式之一:
# Using uv (recommended)
pip install uv
uvx mcp-jenkins
# Using pip
pip install mcp-jenkins
mcp-jenkins
# Docker
docker pull ghcr.io/lanbaoshen/mcp-jenkins:latest
docker run -p 9887:9887 --rm ghcr.io/lanbaoshen/mcp-jenkins:latest --transport streamable-http
命令行参数
使用命令行参数时,可以按如下方式指定 Jenkins 服务的详细信息:
# Simple streamable-http example
uvx mcp-jenkins --transport streamable-http
| 参数 | 描述 | 必填 |
|---|---|---|
--env-file | 要加载配置的 .env 文件路径。请参阅下方的环境变量 / .env 文件。 | 否 |
--jenkins-url | Jenkins 服务的 URL。(Http 应用可通过请求头 x-jenkins-url 设置) | 否 |
--jenkins-username | Jenkins 身份验证的用户名。(Http 应用可通过请求头 x-jenkins-username 设置)请与密码一起设置,或两者均留空以匿名访问 Jenkins。 | 否 |
--jenkins-password | Jenkins 身份验证的密码或 API 令牌。(Http 应用可通过请求头 x-jenkins-password 设置)请与用户名一起设置,或两者均留空以匿名访问 Jenkins:此时服务器可执行的操作由 Jenkins 中匿名用户的权限决定。 | 否 |
--jenkins-timeout | Jenkins API 请求的超时时间,单位为秒。默认值为 5 秒。 | 否 |
--jenkins-verify-ssl/--no-jenkins-verify-ssl | 连接 Jenkins 时是否验证 SSL 证书。默认会验证。 | 否 |
--jenkins-session-singleton/--no-jenkins-session-singleton | 是否在同一会话的所有请求中使用单例 Jenkins 客户端。默认值为 True。 | 否 |
--read-only | 是否启用只读模式。默认值为 False | 否 |
--transport | 要使用的通信传输方式。可选项为 stdio、sse 或 streamable-http。默认值为 stdio。 | 否 |
--host | streamable-http 传输方式的主机地址。默认值为 0.0.0.0 | 否 |
--port | streamable-http 传输方式的端口号。默认值为 9887。 | 否 |
环境变量 / .env 文件
你可以将凭据设为环境变量或放入 .env 文件,而不是在命令行中传递凭据:
JENKINS_URL=https://jenkins.example.com
JENKINS_USERNAME=alice
JENKINS_PASSWORD=xxxx
JENKINS_TIMEOUT=5
JENKINS_VERIFY_SSL=true
如果当前目录(或父目录)中存在 .env 文件,系统会自动加载,无需使用标志:
uvx mcp-jenkins --transport streamable-http
如需从特定位置加载 .env 文件,请使用 --env-file:
uvx mcp-jenkins --env-file /path/to/.env --transport streamable-http
已在实际环境中设置的值优先于 .env 文件,而任何 --jenkins-* CLI 标志的优先级都高于前两者。
配置和使用
Jetbrains Github Copilot
- 打开 Jetbrains 设置
- 前往 Github Copilot > MCP > Configure
- 添加以下配置:
{
"servers": {
"my-mcp-server": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-jenkins",
"--jenkins-url=xxx",
"--jenkins-username=xxx",
"--jenkins-password=xxx"
]
}
}
}
VSCode Copilot Chat
- 对于本地配置,请在工作区中创建
.vscode文件夹和mcp.json文件,或通过设置菜单编辑settings.json。 - 插入以下配置:
- SSE 模式
{
"servers": {
"jenkins": {
"url": "http://localhost:9887/sse",
"type": "sse"
}
}
}
- Streamable-Http 模式
{
"servers": {
"mcp-jenkins-mcp": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"type": "streamableHttp",
"url": "http://localhost:9887/mcp"
}
}
}
使用以下命令运行 Jenkins MCP 服务:
uvx mcp-jenkins \
--jenkins-url xxx \
--jenkins-username xxx \
--jenkins-password xxx \
--transport sse
健康检查端点
使用 --transport streamable-http 或 --transport sse 运行时,服务会提供一个纯 HTTP 存活探测端点:
GET /healthz -> 200 OK
该端点始终返回 200,且会绕过 x-jenkins-* 身份验证标头,因此可直接用作 Kubernetes 存活/就绪探针,无需任何 Jenkins 凭据。探针示例:
livenessProbe:
httpGet:
path: /healthz
port: 9887
initialDelaySeconds: 5
periodSeconds: 10
注意:这仅为存活检查,不会验证与上游 Jenkins 服务的连接。
可用工具
| 工具 | 描述 |
|---|---|
get_item | 按名称获取指定项目。 |
get_item_config | 获取指定项目的配置。 |
get_item_parameters | 获取指定项目的参数。 |
get_all_items | 获取 Jenkins 中的所有项目。 |
query_items | 根据模式查询项目。 |
build_item | 构建一个项目。 |
get_all_nodes | 获取 Jenkins 中的所有节点。 |
get_node | 按名称获取指定节点。 |
get_node_config | 获取指定节点的配置。 |
get_all_queue_items | 获取 Jenkins 中的所有队列项目。 |
get_queue_item | 按 ID 获取指定的队列项目。 |
cancel_queue_item | 按 ID 取消指定的队列项目。 |
get_build | 按作业名称和构建编号获取指定构建。 |
get_build_scripts | 获取与指定构建关联的脚本。 |
get_build_console_output | 获取指定构建的控制台输出。 |
get_build_parameters | 获取指定构建的参数。 |
get_build_test_report | 获取指定构建的测试报告。 |
get_build_test_failures | 获取指定构建中失败的测试。 |
get_running_builds | 获取 Jenkins 中当前正在运行的所有构建。 |
stop_build | 按作业名称和构建编号停止指定构建。 |
get_pending_inputs | 获取因等待输入而暂停的构建的待处理输入步骤。 |
submit_input | 继续执行或中止构建的流水线输入步骤。 |
get_all_build_artifacts | 列出指定构建的制品。 |
get_build_artifact | 下载指定构建中的制品。 |
get_build_artifact_url | 获取指定构建中制品的直接 URL。 |
get_view | 按名称获取指定视图。 |
get_all_views | 获取指定视图的配置。 |
get_all_plugins | 获取所有已安装的插件。 |
get_plugin | 按短名称获取指定插件。 |
get_plugins_with_problems | 获取存在问题的插件(缺少依赖项、版本不匹配等)。 |
get_plugins_with_backup | 获取可降级的插件。 |
get_plugins_with_updates | 获取有可用更新的插件。 |
get_plugin_dependency_graph | 以 Graphviz 格式获取插件的依赖关系图。 |
run_groovy_script | 在 Jenkins 上执行任意 Groovy 脚本。 |
注意:get_pending_inputs 会读取由 pipeline-rest-api 插件(随
pipeline-stage-view 一起提供)提供的 wfapi 端点。只有在省略 input_id 时,submit_input 才需要该插件——显式传入 input_id
后,它可在任何安装了 pipeline-input-step 插件的 Jenkins 上运行。
贡献
许可证
采用 MIT 许可证授权——请参阅 LICENSE 文件。本项目不是 Jenkins 官方产品。
Star 历史
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。