Jenkins MCP 服务器设置
安装指南(分步说明) Jenkins MCP 服务器插件加强Jenkins以使MCP能够连接(同时不破坏CSRF保护),并将其连接到 Claude 桌面版并运行你的第一个命令。
______________________________________________________________________
目录
- 概述与要求
- 安装 Jenkins MCP 服务器插件
- 步骤1 — 创建并验证Jenkins API令牌
- 步骤2 — 允许MCP端点通过CSRF(跨站请求伪造)
- 步骤3 — 配置Claude桌面版
- 步骤4 — 在Claude中首先尝试的事情
- 如何构建基本身份验证(Basic Auth)头部
- 常见网址
- 故障排除
- 安全注意事项
______________________________________________________________________
概述与要求
- Jenkins 2.426+(推荐使用LTS版本)。
- 管理员访问Jenkins。
- 能够重启Jenkins(通过Homebrew、systemd、Docker或运行WAR文件)。
- Claude Desktop已安装。
术语MCP = (这个表达式在中文中通常直接保留原样,因为“MCP”是一个特定缩写或术语,没有直接的中文对应翻译,除非上下文提供了具体的含义。如果“MCP”在某个特定领域有固定翻译,那需要根据那个领域来翻译。)在一般情况下,可以翻译为:“MCP(某特定缩写或术语)=”,但具体含义需根据上下文确定 *模型上下文协议*. 该 Jenkins MCP 服务器 通过HTTP/SSE暴露工具于 /mcp-server/* 因此,客户端(如Claude Desktop等)可以列出/触发作业、获取日志等。______________________________________________________________________
安装 Jenkins MCP 服务器插件
- 管理 Jenkins → 插件.
- 打开 可用 按Tab键并搜索 “MCP Server”翻译成中文是“MCP服务器”。
- 检查 MCP 服务器 并点击 安装无需重启 (或者 立即下载,重启后安装)。
- 安装后,请验证已添加的插件端点:
- http:///mcp-server/mcp (HTTP传输) - http:///mcp-server/sse (服务器发送事件传输)
如果你的 Jenkins 在一个类似以下的上下文路径下运行:/jenkins,端点变为/jenkins/mcp-server/mcp并且/jenkins/mcp-server/sse.
______________________________________________________________________
步骤1 — 创建并验证Jenkins API令牌
- 在Jenkins中,点击您的头像(右上角)→ 安全 → API令牌 → 生成新令牌。
- 给它起个名字 claude-mcp。 - 复制令牌一次 并将其安全地存储起来。
- 验证令牌是否有效(替换 ``):
curl -s -u ':' http://localhost:8080/whoAmI/api/json预期的JSON包括:
{"name":"","authenticated":true}如果你得到 401 Unauthorized,重新生成令牌或确认您正在使用正确的 Jenkins 用户ID 展示于 /user//。
______________________________________________________________________
步骤2 — 允许通过CSRF(跨站请求伪造)的MCP端点
MCP插件需要注册一个客户端;Jenkins的CSRF保护会阻止这一操作,除非我们 排除 MCP路径。
macOS(Homebrew 服务)
brew services stop jenkins-lts
JENKINS_JAVA_OPTIONS='-Dhudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_PATTERNS=/mcp-server/.*' \
brew services start jenkins-ltsLinux(systemd 服务)
sudo systemctl edit jenkins添加以下行:
[Service]
Environment="JAVA_OPTS=-Dhudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_PATTERNS=/mcp-server/.*"然后应用并重启:
sudo systemctl daemon-reload
sudo systemctl restart jenkins验证CSRF排除机制是否有效
构建一个基本标题(见下文部分),然后:
curl -I -H "Authorization: Basic " \
http://localhost:8080/mcp-server/mcp你应该 不是 查看HTML错误 403 No valid crumb was included in the request。
如果Jenkins位于代理/应用负载均衡器(ALB)之后,也请考虑启用 代理兼容性 下面 管理 Jenkins → 配置全局安全 → CSRF 保护。
______________________________________________________________________
步骤3 — 配置Claude桌面版
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json 并添加Jenkins MCP服务器。优先使用SSE传输。
{
"mcpServers": {
"jenkins": {
"command": "/Users/shantanu/.nvm/versions/node/v22.16.0/bin/npx",
"args": [
"-y","mcp-remote",
"http://localhost:8080/mcp-server/sse",
"--transport","sse-only",
"--header","Authorization: Basic "
],
"env": {},
"autoApprove": []
}
}
}替换 \ 使用下一节中的值。保存后重启Claude Desktop。
______________________________________________________________________
步骤4 — 在Claude中首先尝试的操作
在Claude中使用自然语言:
- “使用Jenkins MCP服务器来调用 我是谁。”
- “列出根目录下的作业,并显示每个作业的 名字 和 全名。”
- “列出内部职位 ****。”
- “获取详细信息 **** 查看它是否已参数化。”
- “触发构建 **** 带有参数
{ ... }。”
______________________________________________________________________
如何构建基本身份验证头
标题是 Authorization: Basic 。
# 1) Create base64 of "username:token" (no newline)
printf %s 'shantanu:' | base64
# 2) Use the one-line output in Claude config as:
# --header "Authorization: Basic "你也可以使用 curl 进行干运行(即模拟执行):
curl -I -H "Authorization: Basic " \
http://localhost:8080/mcp-server/mcp______________________________________________________________________
屏幕截图
常见网址
- Jenkins 根作业(JSON):
http://localhost:8080/api/json?tree=jobs[name,fullName]
- 在一个文件夹内:
http://localhost:8080/job//api/json?tree=jobs[name,fullName]
- 我是谁:
http://localhost:8080/whoAmI/api/json
- MCP端点:
- HTTP:(超文本传输协议) http://localhost:8080/mcp-server/mcp - 上海证券交易所 http://localhost:8080/mcp-server/sse
如果 Jenkins 是在上下文路径下托管的(例如。, /jenkins),在每个路径前加上它。
______________________________________________________________________
故障排除
401 未授权 (在 /whoAmI 或 MCP(多路径控制协议):
- 这个(或“该”) 用户ID 必须与所示的一致
/user//(区分大小写)。 - 令牌无效/已过期或输入错误。请生成新的API令牌并重试。
403 未包含有效的防跨站请求伪造令牌(crumb) (来自Jetty的HTML页面):
- 未设置CSRF排除。请确保Jenkins启动时使用:
-Dhudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_PATTERNS=/mcp-server/.*
- 如果在代理/应用负载均衡器(ALB)后,请启用 代理兼容性。
ENOENT npx(文件或目录不存在,npx 命令) (Claude的日志显示 spawn .../npx ENOENT):
- 更新
command你实际的Node的路径npx(例如,来自NVM):
/Users//.nvm/versions/node//bin/npx。
上下文路径问题:
- 如果Jenkins在
http://host:8080/jenkins,使用http://host:8080/jenkins/mcp-server/sse在克劳德的论点中。
还是不行?快速检查清单
curl -s -u ':' http://localhost:8080/whoAmI/api/json→ 已认证,结果为真。curl -I -H 'Authorization: Basic ' http://localhost:8080/mcp-server/mcp→ 没有CSRF HTML。- Claude的配置使用了相同的base64编码和正确的URL
npx路径。
______________________________________________________________________
安全注意事项
- 对待/处理 API令牌 就像密码一样。将其存储在密码管理器中。
- 更喜欢专用的 服务用户 (例如。,
mcp-bot) 配备所需的最小权限(总体/读取,查看/读取,作业/发现,作业/构建;根据需要添加其他权限)。 - 定期更换令牌,并在怀疑暴露时立即更换。
- 保持CSRF保护 启用的;被允许的 全球范围内;依赖于 排除 for
/mcp-server/*仅此而已。
______________________________________________________________________
就是这个! 现在,您可以通过MCP服务器插件,直接在Claude中控制Jenkins——列出作业、检查参数、触发构建,并直接从聊天界面获取日志。
