使用说明
🧠 Jenkins MCP服务器
Jenkins MCP服务器 是一个支持AI的模型上下文协议(MCP)服务器,通过自然语言命令公开Jenkins自动化。
旨在与自动化客户端无缝协作,例如:
- 🖥️ VS代码MCP -VS Code中与Claude的直接集成
- 🖥️ 克劳德桌面版 -人工智能驱动的Jenkins自动化
- 🔌 任何兼容MCP的客户端 -通用兼容性
✨ v1.1.16的新增功能
🚀 最新改进(v1.1.16)
- ⚡ 即时启动 -服务器初始化时间<1秒(之前为30-60s)
- 🔧 简化的架构 -简化了Node.js包装器,提高了可靠性
- 🌐 通用兼容性 -与VSCode、Claude Desktop和所有MCP客户端无缝协作
- 🐛 关键修复 -解决了初始化超时和网络阻塞问题
🚀 性能增强(v1.1.0)
- ⚡ 快10倍 -用于重复操作的客户端连接缓存
- 📊 智能缓存 -作业列表缓存,TTL为30-60s(改进5-10倍)
- 🎯 优化查询 -API调用减少33-83%
🛡️ 可靠性改进
- ✅ 86%的验证覆盖率 -18/21工具的输入验证
- ⏱️ 可配置超时 -不再挂起API调用
- 💬 更好的错误消息 -明确故障排除步骤
- 🏥 健康检查工具 -即时诊断
🎛️ 高级功能
- 📦 批量操作 -一次最多触发20个构建
- 📈 度量和遥测 -跟踪工具使用和性能
- 🗂️ 缓存管理 -监控和控制缓存
- 📊 控制台改进 -基于线的尾部模式截断
- 🎨 结构化日志记录 -使用JSON日志进行更好的调试
✨ 关于代码库
- ✅ 代码库 -更清洁,更易于维护
- ✅ 错误消息 -确切地知道问题所在以及如何解决
- ✅ 灵活配置 -多种配置方式(VS Code、.env、environment)
- ✅ 跨平台 -无缝支持Windows、macOS和Linux
- ✅ 日志记录 -专业日志记录
--verbose旗帜 - ✅ 依赖管理 -自动检测和安装
- ✅ 演出 -通过智能缓存和优化,速度提高了10倍
- ✅ 可靠性 -全面的输入验证和错误处理
📦 特性
该项目包括:
- 🐍 Python后端由
python-jenkins - 📦 Node.js
npx零安装执行的包装器 - 🔄 自动创建虚拟环境+安装依赖关系
- 🌐 企业代理/证书自动检测支持
- 🪟 Windows、macOS和Linux支持
- 🛠️ 26个Jenkins管理工具 (从20升级!)
🧩 构建操作
| 工具名称 | 描述 | 必填字段 | 可选字段 |
|---|---|---|---|
trigger-build |
使用可选参数触发Jenkins作业构建 | job_name |
parameters |
stop-build |
停止正在运行的Jenkins构建 | job_name, build_number |
(无) |
trigger-multiple-builds |
新 触发器同时为多个作业构建 | job_names |
parameters, wait_for_start |
📊 工作信息
| 工具名称 | 描述 | 必填字段 | 可选字段 |
|---|---|---|---|
list-jobs |
列出所有带有可选筛选的Jenkins作业 和缓存 | (无) | filter, use_cache |
get-job-details |
获取有关Jenkins作业的详细信息 | job_name |
max_recent_builds |
🛠️ 构建信息
| 工具名称 | 描述 | 必填字段 | 可选字段 |
|---|---|---|---|
get-build-info |
获取特定版本的信息 | job_name, build_number |
(无) |
get-build-console |
通过以下方式获取控制台输出 智能截断 | job_name, build_number |
max_lines, tail_only |
get-last-build-number |
获取作业的最后一个内部版本号 | job_name |
(无) |
get-last-build-timestamp |
获取上次构建的时间戳 | job_name |
(无) |
🧩 作业管理
| 工具名称 | 描述 | 必填字段 | 可选字段 |
|---|---|---|---|
create-job |
使用XML配置创建新的Jenkins作业 | job_name, config_xml |
(无) |
create-job-from-copy |
通过复制现有作业创建新作业 | new_job_name, source_job_name |
(无) |
create-job-from-data |
从结构化数据(自动生成的XML)创建作业 | job_name, config_data |
root_tag |
delete-job |
删除现有作业 | job_name |
(无) |
enable-job |
启用禁用的Jenkins作业 | job_name |
(无) |
disable-job |
禁用Jenkins作业 | job_name |
(无) |
rename-job |
重命名现有的Jenkins作业 | job_name, new_name |
(无) |
⚙️ 作业配置
| 工具名称 | 描述 | 必填字段 | 可选字段 |
|---|---|---|---|
get-job-config |
获取作业XML配置 | job_name |
(无) |
update-job-config |
更新作业XML配置 | job_name, config_xml |
(无) |
🖥️ 系统信息
| 工具名称 | 描述 | 必填字段 | 可选字段 |
|---|---|---|---|
get-queue-info |
获取Jenkins构建队列信息 | (无) | (无) |
list-nodes |
列出所有Jenkins节点 | (无) | (无) |
get-node-info |
获取有关Jenkins节点的信息 | node_name |
(无) |
health-check |
新 在Jenkins连接上运行诊断 | (无) | (无) |
📊 监控与管理
| 工具名称 | 描述 | 必填字段 | 可选字段 |
|---|---|---|---|
get-cache-stats |
新 获取缓存统计数据和信息 | (无) | (无) |
clear-cache |
新 清除所有缓存数据 | (无) | (无) |
get-metrics |
新 获取使用指标和性能统计数据 | (无) | tool_name |
configure-webhook |
新 配置webhook通知 | job_name, webhook_url, events |
(无) |
有关详细的技术文档,请参阅 docs/ARCHITECTURE.md.
🚀 快速开始
先决条件
Node.js npx包装器需要v14或更高版本。
Windows Installation
# Using winget (recommended)
winget install OpenJS.NodeJS.LTS
# Verify installation
node -v
npm -v
或从以下网址手动下载https://nodejs.org/
macOS Installation
# Install nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# Reload shell
source ~/.nvm/nvm.sh
# Install Node LTS
nvm install --lts
nvm use --lts
# Verify installation
node -v
npm -v
Linux Installation
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Fedora/RHEL
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo dnf install -y nodejs
# Verify installation
node -v
npm -v
⚙️ 配置
Jenkins MCP Server支持多种配置方法。选择最适合你的:
选项1:VS代码设置(推荐)
添加到您的VS代码 settings.json:
{
"jenkins-mcp-server": {
"jenkins": {
"url": "http://jenkins.example.com:8080",
"username": "your-username",
"token": "your-api-token"
}
}
}
在哪里可以找到settings.json:
- 视窗:
%APPDATA%\Code\User\settings.json - macOS:
~/Library/Application Support/Code/User/settings.json - Linux:
~/.config/Code/User/settings.json
选项2:环境文件(.env)
创建文件 .env 在您当地:
JENKINS_URL=http://jenkins.example.com:8080
JENKINS_USERNAME=your-username
JENKINS_TOKEN=your-api-token
备注:使用API令牌而不是密码以获得更好的安全性。
选项3:环境变量
# Linux/macOS
export JENKINS_URL=http://jenkins.example.com:8080
export JENKINS_USERNAME=your-username
export JENKINS_TOKEN=your-api-token
# Windows (PowerShell)
$env:JENKINS_URL="http://jenkins.example.com:8080"
$env:JENKINS_USERNAME="your-username"
$env:JENKINS_TOKEN="your-api-token"
配置优先
设置按以下顺序加载(稍后覆盖较早):
- 默认
.env文件 - 环境变量
- 自定义
.env文件(通过--env-file) - VS代码设置
- 直接参数
获取您的Jenkins API代币
- 登录Jenkins
- 点击您的名字(右上角)→ 配置
- 滚动到 API代币 部分
- 点击 添加新令牌
- 给它起个名字,然后单击 生成
- 复制令牌(⚠️ 它不会再显示了!)
🚀 安装/运行服务器
选项1:使用npx(无需安装)
# if .env file is located in the current directory
npx @rishibhushan/jenkins-mcp-server --env-file .env
# OR if .env file is located in /path/to/.env
npx @rishibhushan/jenkins-mcp-server --env-file /path/to/.env
NPX使用:
- 总是使用
--yes带有npx的标志,用于自动安装软件包 - 首次运行可能需要10-20秒来设置Python环境
- 后续运行是即时的(环境被缓存)
例子:
npx --yes @rishibhushan/jenkins-mcp-server --env-file .env
选项2:全局安装
# Install globally
npm install -g @rishibhushan/jenkins-mcp-server
# Run
jenkins-mcp-server --env-file .env
选项3:来自GitHub
npx github:rishibhushan/jenkins_mcp_server --env-file .env
这会自动:
- ✅ 安装所有依赖项
- ✅ 启动Jenkins MCP服务器
方法2:直接执行Python
# Create virtual environment
python3 -m venv .venv
# Activate virtual environment
# Linux/macOS:
source .venv/bin/activate
# Windows:
.venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run the server
python -m jenkins_mcp_server --env-file /path/to/.env
命令行选项
jenkins-mcp-server [options]
Options:
--env-file PATH Path to custom .env file
--verbose, -v Enable verbose/debug logging
--no-vscode Skip loading VS Code settings
--version Show version information
--help, -h Show help message
🐳 使用Docker运行(独立/CI/无头环境)
Docker支持允许您在不安装Node的情况下运行MCP服务器 或者在本地使用Python。
▶️ 运行容器
docker run -it --rm \
-p 3000:3000 \
-e JENKINS_URL=http://your-jenkins:8080 \
-e JENKINS_USERNAME=your_username \
-e JENKINS_TOKEN=your_token \
ghcr.io/rishibhushan/jenkins-mcp-server:latest
📥 拉取预构建图像(推荐)
从GitHub容器注册表中提取官方预构建映像:
docker pull ghcr.io/rishibhushan/jenkins-mcp-server:latest
这可确保您始终运行官方发布的映像,而不需要本地存储库。
🔌 MCP客户端配置(Docker)
MCP客户端的示例配置:
{
"jenkins": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"JENKINS_URL",
"-e",
"JENKINS_USERNAME",
"-e",
"JENKINS_TOKEN",
"ghcr.io/rishibhushan/jenkins-mcp-server:latest"
],
"env": {
"JENKINS_URL": "http://your-jenkins:8080",
"JENKINS_USERNAME": "your_username",
"JENKINS_TOKEN": "your_token"
}
}
}
🔑 所需的环境变量
| 变量 | 描述 |
|---|---|
| JENKINS_URL | JENKINS基本URL |
| JENKINS_USERNAME | JENKINS用户名 |
| JENKINS_TOKEN | neneneba API令牌(推荐) |
| JENKINS_PASSWORD | 密码(如果不使用令牌) |
🧠 何时使用Docker
建议在运行MCP服务器时使用Docker:
- 在CI/CD管道中
- 关于詹金斯特工
- 作为共享服务
- 外部VS代码
- 在类似生产的环境中
🧰 Docker故障排除
如果你在使用Docker镜像时遇到问题,请尝试以下步骤。
❌ 图像拉取失败
docker pull ghcr.io/rishibhushan/jenkins-mcp-server:latest
修复:
- 确保Docker桌面/Docker引擎正在运行
- 检查互联网连接
- 如果您的组织需要身份验证,请运行:
docker login ghcr.io
❌ 架构错误(例如“没有匹配的清单”)
修复:
- 确保您正在提取最新图像:
docker pull ghcr.io/rishibhushan/jenkins-mcp-server:latest
- 删除所有旧的本地映像,然后重试:
docker rmi ghcr.io/rishibhushan/jenkins-mcp-server:latest
❌ 容器已启动,但无法连接到Jenkins
修复:
- 验证Jenkins URL是否可以从您的计算机访问:
curl -I http://your-jenkins:8080
- 如果Jenkins在您的主机上,请使用:
http://host.docker.internal:8080
- 如果需要,请确保VPN已连接
❌ 缺少环境变量
如果缺少凭据,服务器将无法启动。
确保提供以下内容:
JENKINS_URLJENKINS_USERNAMEJENKINS_TOKEN(推荐)
例子:
docker run -it --rm \
-e JENKINS_URL=http://your-jenkins:8080 \
-e JENKINS_USERNAME=user \
-e JENKINS_TOKEN=token \
ghcr.io/rishibhushan/jenkins-mcp-server:latest
❌ 需要日志进行调试
无需运行容器 --rm 检查日志:
docker run -it \
-e JENKINS_URL=... \
-e JENKINS_USERNAME=... \
-e JENKINS_TOKEN=... \
ghcr.io/rishibhushan/jenkins-mcp-server:latest
或者从另一个终端查看日志:
docker ps
docker logs <container_id>
❌ 端口已在使用中
如果您看到端口冲突:
Bind for 0.0.0.0:3000 failed: port is already allocated
使用其他端口运行:
docker run -p 3001:3000 ...
如果问题仍然存在,请通过以下方式打开问题:
- 您的操作系统和Docker版本
- 完整错误消息
- 重现步骤
⚙️ 配置优先
服务器按以下顺序解析配置:
1.️⃣ 环境变量
2️⃣ .env 文件
3.️⃣ VS代码 settings.json
🧪 验证服务器是否正在运行
启动后,您应该看到以下日志:
- Jenkins配置已加载
- MCP服务器已启动
- 在港口监听
3000
🔌 与VSCode集成
-
安装VSCode MCP扩展 (如果尚未安装)
-
配置服务器 在您的工作区或用户设置中:
选项A:使用 mcp.json (推荐)
{
"servers": {
"jenkins": {
"type": "stdio",
"command": "npx",
"args": [
"@rishibhushan/jenkins-mcp-server"
]
}
}
}
选项B:使用settings.json
添加到您的VSCode settings.json.与 .env 文件, --verbose,以及代理设置:
{
"mcp": {
"servers": {
"jenkins": {
"type": "stdio",
"command": "npx",
"args": [
"@rishibhushan/jenkins-mcp-server",
"--verbose",
"--env-file",
"/absolute/path/to/your/.env"
],
"env": {
"HTTP_PROXY": "http://proxy.example.com:8080",
"HTTPS_PROXY": "http://proxy.example.com:8080",
"NO_PROXY": "localhost,127.0.0.1,.example.com"
}
}
}
}
}
重要提示:
- 总是使用 绝对路径 为了
--env-file参数 - 配置更改后完全重新启动VSCode
- 检查输出→ 连接状态的模型上下文协议
- 验证连接:
- 打开命令面板(Cmd/Ctrl+Shift+P)
- 键入“MCP”查看可用命令
- 应在输出面板中看到“发现26个工具”
VSCode连接故障排除
如果VSCode显示“等待初始化响应”:
- 确保
.env文件路径为 绝对的,不是相对的 - 验证
.env文件具有正确的Jenkins凭据 - 完全重新启动VSCode(退出并重新打开)
- 检查输出→ 错误消息的模型上下文协议
- 请先尝试手动运行:
npx --yes @rishibhushan/jenkins-mcp-server --env-file /path/to/.env
🤖 与Claude Desktop集成
-
找到Claude桌面配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
添加服务器配置:
增添 claude_desktop_config.json:
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": [
"@rishibhushan/jenkins-mcp-server",
"--env-file",
"/absolute/path/to/your/.env"
]
}
}
}
-
重新启动克劳德桌面 完全
-
验证:
- 你应该看到一个🔌 Claude输入区域中的图标
- 点击查看带有26个工具的“jenkins”服务器
克劳德桌面故障排除
常见问题:
- 60秒后服务器断开连接: 如果Jenkins需要,请确保您使用的是VPN
- 没有工具出现: 检查配置文件路径并重新启动Claude Desktop
- 连接超时: 验证Jenkins URL是否可以从您的网络访问
🏢 公司网络/代理设置
如果您位于公司代理或防火墙之后:
选项1:设置环境变量(推荐)
# Set proxy environment variables
export HTTP_PROXY=http://your-proxy:8080
export HTTPS_PROXY=http://your-proxy:8080
export NO_PROXY=localhost,127.0.0.1
# Run the server (wrapper will auto-detect proxy)
npx @rishibhushan/jenkins-mcp-server --env-file .env
选项2:配置npm和pip
# Configure npm proxy
npm config set proxy http://your-proxy:8080
npm config set https-proxy http://your-proxy:8080
# Configure pip proxy (for SSL issues)
pip config set global.proxy http://your-proxy:8080
pip config set global.trusted-host "pypi.org pypi.python.org files.pythonhosted.org"
# Run the server
npx @rishibhushan/jenkins-mcp-server --env-file .env
选项3:带代理的Claude桌面
将代理设置添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": [
"@rishibhushan/jenkins-mcp-server",
"--env-file",
"/path/to/.env"
],
"env": {
"HTTP_PROXY": "http://your-proxy:8080",
"HTTPS_PROXY": "http://your-proxy:8080",
"NO_PROXY": "localhost,127.0.0.1"
}
}
}
}
SSL证书问题
如果遇到SSL证书错误:
# Disable SSL verification for pip (one-time setup)
pip config set global.trusted-host "pypi.org pypi.python.org files.pythonhosted.org"
# Or use environment variable
export PIP_TRUSTED_HOST="pypi.org pypi.python.org files.pythonhosted.org"
Node.js包装器在检测到代理环境变量时会自动处理SSL证书问题。
💡 使用示例
自然语言命令
配置后,您可以在MCP客户端上使用自然语言:
"List all Jenkins jobs"
"List jobs with 'backend' in the name" - # Filter jobs containing "backend"
"Show me all production jobs" - # Filter jobs containing "prod"
"Show me the last build of my-project"
"Trigger a build for deploy-prod with parameter env=production"
"What's in the build queue?"
"Show me the console output of build #42 for backend-service"
"Create a new job called test-job by copying prod-job"
"Disable the old-job"
程序化使用(Python)
from config import get_settings
from jenkins_client import get_jenkins_client
# Load settings
settings = get_settings()
# Create client
client = get_jenkins_client(settings)
# List jobs
all_jobs = client.get_jobs()
for job in all_jobs:
print(f"Job: {job['name']} - Status: {job['color']}")
# Filter in Python
backend_jobs = [job for job in all_jobs if 'backend' in job['name'].lower()]
# Trigger a build
result = client.build_job(
"my-job",
parameters={"BRANCH": "main", "ENV": "staging"}
)
print(f"Build queued: {result['queue_id']}")
print(f"Build number: {result['build_number']}")
# Get console output
if result['build_number']:
output = client.get_build_console_output(
"my-job",
result['build_number']
)
print(output)
🔍 快速故障排除
服务器无法启动
# Test if server works manually
npx --yes @rishibhushan/jenkins-mcp-server --env-file /path/to/.env
# Should start and wait for input (Ctrl+C to exit)
VSCode/Claude桌面无法连接
- ✅ 使用 绝对路径 为了
--env-file - ✅ 包含
--yes带有npx的标志 - ✅ 配置更改后完全重新启动应用程序
- ✅ 检查Jenkins是否可访问(在浏览器中尝试)
- ✅ 验证
.env文件具有正确的凭据
服务器连接但超时
- ✅ 如果Jenkins在专用网络上,请连接到VPN
- ✅ 检查防火墙设置
- ✅ 验证Jenkins URL是否正确
- ✅ 测试:
curl -I http://your-jenkins-url:8080
“找不到模块”错误
- ✅ 删除
.venv文件夹并让它重新安装 - ✅ 清除npm缓存:
npm cache clean --force - ✅ 尝试使用最新版本:
npx --yes @rishibhushan/jenkins-mcp-server@latest
🔧 故障排除
常见问题
找不到Python
Error: Python 3 is required but not found.
解决方案:从以下位置安装Python 3.8+https://www.python.org/downloads/
配置问题
ERROR: Jenkins configuration is incomplete!
解决方案:验证您是否已设置 JENKINS_URL, JENKINS_USERNAME,以及 JENKINS_TOKEN
检查您的配置:
# View .env file
cat .env
# Check environment variables
env | grep JENKINS
# Check VS Code settings
cat ~/.config/Code/User/settings.json | grep jenkins
连接失败
Failed to connect to Jenkins at http://localhost:8080
解决方案:
- 验证Jenkins是否正在运行:
curl http://localhost:8080/api/json - 检查防火墙设置
- 验证URL是否正确(如果需要,请包括端口)
- 测试身份验证凭据
依赖关系安装失败
Failed to install dependencies
解决方案:
- 检查互联网连接
- 如果在代理后面,则设置
HTTP_PROXY和HTTPS_PROXY环境变量 - 尝试手动安装:
.venv/bin/pip install -r requirements.txt
🚨 VPN和企业网络问题
如果您在使用VPN或公司网络时遇到Claude Desktop或其他MCP客户端的超时问题,本节将提供分步解决方案。
症状:60秒后请求超时
日志错误:
McpError: MCP error -32001: Request timed out
Server transport closed unexpectedly
根本原因:Python进程由 npx 可能无法正确继承VPN网络路由,导致其在连接到内部Jenkins服务器时失败。
解决方案1:绕过PyPI的代理(用于依赖安装问题)
如果在依赖项安装过程中遇到代理错误:
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"jenkins": {
"command": "npx",
"args": [
"@rishibhushan/jenkins-mcp-server",
"--env-file",
"/path/to/.env"
],
"env": {
"NO_PROXY": "pypi.org,pypi.python.org,files.pythonhosted.org",
"PIP_NO_PROXY": "pypi.org,pypi.python.org,files.pythonhosted.org"
}
}
}
}
解决方案2:使用直接Python执行(建议用于VPN)
这绕过了 npx 完全包装并直接使用Python,它正确地继承了系统的网络路由。
步骤1:找到已安装的软件包
对于macOS/Linux:
# Find the npx cache directory
PACKAGE_DIR=$(find ~/.npm/_npx -name "jenkins-mcp-server" -type d 2>/dev/null | head -1)
echo $PACKAGE_DIR
对于Windows(PowerShell):
# Find the npx cache directory
$PACKAGE_DIR = Get-ChildItem -Path "$env:LOCALAPPDATA\npm-cache\_npx" -Recurse -Directory -Filter "jenkins-mcp-server" | Select-Object -First 1 -ExpandProperty FullName
Write-Host $PACKAGE_DIR
输出将类似于:
- macOS/Linux:
/Users/username/.npm/_npx/<hash>/node_modules/@rishibhushan/jenkins-mcp-server - 视窗:
C:\Users\username\AppData\Local\npm-cache\_npx\<hash>\node_modules\@rishibhushan\jenkins-mcp-server
步骤2:更新Claude桌面配置
替换 <PACKAGE_DIR> 从步骤1开始的路径:
macOS/Linux:
{
"mcpServers": {
"jenkins": {
"command": "<PACKAGE_DIR>/.venv/bin/python",
"args": [
"-m",
"jenkins_mcp_server",
"--env-file",
"/path/to/your/.env"
],
"env": {
"PYTHONPATH": "<PACKAGE_DIR>/src"
}
}
}
}
窗户:
{
"mcpServers": {
"jenkins": {
"command": "<PACKAGE_DIR>\\.venv\\Scripts\\python.exe",
"args": [
"-m",
"jenkins_mcp_server",
"--env-file",
"C:\\path\\to\\your\\.env"
],
"env": {
"PYTHONPATH": "<PACKAGE_DIR>\\src"
}
}
}
}
步骤3:示例配置
macOS的完整示例:
{
"mcpServers": {
"jenkins": {
"command": "/Users/username/.npm/_npx/a88b5f55f40c4229/node_modules/@rishibhushan/jenkins-mcp-server/.venv/bin/python",
"args": [
"-m",
"jenkins_mcp_server",
"--env-file",
"/Users/username/projects/jenkins_mcp_server/.env"
],
"env": {
"PYTHONPATH": "/Users/username/.npm/_npx/a88b5f55f40c4229/node_modules/@rishibhushan/jenkins-mcp-server/src"
}
}
}
}
步骤4:重新启动克劳德桌面
- 先连接到您的VPN
- 完全退出克劳德桌面
- 启动克劳德桌面
- 检查设置中的MCP服务器连接
解决方案3:使用本地Git克隆(最适合开发)
如果您正在开发或经常更新,请使用本地克隆:
步骤1:克隆和设置
# Clone the repository
git clone https://github.com/rishibhushan/jenkins_mcp_server.git
cd jenkins_mcp_server
# Create virtual environment and install dependencies
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
步骤2:配置Claude桌面
macOS/Linux:
{
"mcpServers": {
"jenkins": {
"command": "/path/to/jenkins_mcp_server/.venv/bin/python",
"args": [
"-m",
"jenkins_mcp_server",
"--env-file",
"/path/to/jenkins_mcp_server/.env"
],
"env": {
"PYTHONPATH": "/path/to/jenkins_mcp_server/src"
}
}
}
}
窗户:
{
"mcpServers": {
"jenkins": {
"command": "C:\\path\\to\\jenkins_mcp_server\\.venv\\Scripts\\python.exe",
"args": [
"-m",
"jenkins_mcp_server",
"--env-file",
"C:\\path\\to\\jenkins_mcp_server\\.env"
],
"env": {
"PYTHONPATH": "C:\\path\\to\\jenkins_mcp_server\\src"
}
}
}
}
解决方案4:使用直接Python路径进行全局安装
如果你更喜欢使用全局安装,但仍然面临VPN/超时问题,你可以结合这两种方法。
步骤1:全局安装
先断开与VPN的连接 (为避免安装过程中出现代理问题):
# Install globally
npm install -g @rishibhushan/jenkins-mcp-server
# Verify installation
jenkins-mcp-server --version
步骤2:查找全局安装目录
对于macOS/Linux:
# Find the global npm directory
npm root -g
# This typically returns something like:
# /usr/local/lib/node_modules
# or
# /Users/username/.npm-global/lib/node_modules
# Your package will be at:
# <npm-root>/@rishibhushan/jenkins-mcp-server
对于Windows(PowerShell):
# Find the global npm directory
npm root -g
# This typically returns something like:
# C:\Users\username\AppData\Roaming\npm\node_modules
# Your package will be at:
# <npm-root>\@rishibhushan\jenkins-mcp-server
步骤3:找到Python路径
一旦你知道安装目录:
macOS/Linux:
# If npm root -g shows: /usr/local/lib/node_modules
# Your Python path will be:
/usr/local/lib/node_modules/@rishibhushan/jenkins-mcp-server/.venv/bin/python
# Verify it exists:
ls -la /usr/local/lib/node_modules/@rishibhushan/jenkins-mcp-server/.venv/bin/python
窗户:
# If npm root -g shows: C:\Users\username\AppData\Roaming\npm\node_modules
# Your Python path will be:
C:\Users\username\AppData\Roaming\npm\node_modules\@rishibhushan\jenkins-mcp-server\.venv\Scripts\python.exe
# Verify it exists:
Test-Path "C:\Users\username\AppData\Roaming\npm\node_modules\@rishibhushan\jenkins-mcp-server\.venv\Scripts\python.exe"
步骤4:配置MCP客户端
对于Claude Desktop(macOS/Linux):
{
"mcpServers": {
"jenkins": {
"command": "/usr/local/lib/node_modules/@rishibhushan/jenkins-mcp-server/.venv/bin/python",
"args": [
"-m",
"jenkins_mcp_server",
"--env-file",
"/path/to/your/.env"
],
"env": {
"PYTHONPATH": "/usr/local/lib/node_modules/@rishibhushan/jenkins-mcp-server/src"
}
}
}
}
对于Claude Desktop(Windows):
{
"mcpServers": {
"jenkins": {
"command": "C:\\Users\\username\\AppData\\Roaming\\npm\\node_modules\\@rishibhushan\\jenkins-mcp-server\\.venv\\Scripts\\python.exe",
"args": [
"-m",
"jenkins_mcp_server",
"--env-file",
"C:\\path\\to\\your\\.env"
],
"env": {
"PYTHONPATH": "C:\\Users\\username\\AppData\\Roaming\\npm\\node_modules\\@rishibhushan\\jenkins-mcp-server\\src"
}
}
}
}
对于其他MCP客户:
使用相同的模式-替换 command 使用直接Python路径并设置 PYTHONPATH 环境变量。
步骤5:测试和使用
- 连接到您的VPN
- 重新启动MCP客户端 (克劳德桌面、VS Code等)
- 验证连接 作品
为什么此解决方案有效
- ✅ 持续安装 -无需每次使用时下载
- ✅ 正确的网络路由 -Python进程继承VPN路由
- ✅ 跨会话工作 -在VPN连接/断开周期中幸存下来
- ✅ 轻松更新 -快跑
npm update -g @rishibhushan/jenkins-mcp-server - ✅ 通用 -适用于任何MCP客户端(Claude、VS Code等)
快速参考命令
# Find your global installation
npm root -g
# Update global installation
npm update -g @rishibhushan/jenkins-mcp-server
# Uninstall if needed
npm uninstall -g @rishibhushan/jenkins-mcp-server
# Test the Python path works
/path/to/global/installation/.venv/bin/python -m jenkins_mcp_server --help
🧪 测试您的连接
在配置MCP客户端之前,请手动测试您的Jenkins连接:
创建测试脚本
将此另存为 test_jenkins_connection.py:
#!/usr/bin/env python3
"""
Test Jenkins connectivity for MCP server troubleshooting
"""
import os
import sys
import time
import requests
from dotenv import load_dotenv
def test_connection():
# Load environment
env_file = '/path/to/your/.env' # Update this path
print(f"Loading environment from: {env_file}")
load_dotenv(env_file)
url = os.getenv('JENKINS_URL')
username = os.getenv('JENKINS_USERNAME')
token = os.getenv('JENKINS_TOKEN')
print(f"\nJenkins Configuration:")
print(f" URL: {url}")
print(f" Username: {username}")
print(f" Token: {'***' if token else 'NOT SET'}")
# Test 1: DNS Resolution
print(f"\n[Test 1] Testing DNS resolution...")
import socket
try:
hostname = url.split('://')[1].split(':')[0]
ip = socket.gethostbyname(hostname)
print(f" ✓ DNS resolved: {hostname} -> {ip}")
except Exception as e:
print(f" ✗ DNS resolution failed: {e}")
return False
# Test 2: Basic connectivity
print(f"\n[Test 2] Testing basic HTTP connectivity...")
try:
start = time.time()
response = requests.get(f"{url}/api/json", timeout=5)
elapsed = time.time() - start
print(f" ✓ Connection successful (no auth): {response.status_code} in {elapsed:.2f}s")
except requests.exceptions.Timeout:
print(f" ✗ Connection timed out after 5 seconds")
return False
except Exception as e:
print(f" ✗ Connection failed: {e}")
return False
# Test 3: Authenticated request
print(f"\n[Test 3] Testing authenticated request...")
try:
start = time.time()
response = requests.get(
f"{url}/api/json",
auth=(username, token),
timeout=10
)
elapsed = time.time() - start
print(f" ✓ Authenticated request: {response.status_code} in {elapsed:.2f}s")
if response.status_code == 200:
data = response.json()
print(f" ✓ Jenkins version: {data.get('version', 'unknown')}")
print(f" ✓ Number of jobs: {len(data.get('jobs', []))}")
elif response.status_code == 401:
print(f" ✗ Authentication failed - check username/token")
return False
elif response.status_code == 403:
print(f" ✗ Access forbidden - check permissions")
return False
except Exception as e:
print(f" ✗ Authenticated request failed: {e}")
return False
# Test 4: python-jenkins library
print(f"\n[Test 4] Testing python-jenkins library...")
try:
import jenkins
start = time.time()
server = jenkins.Jenkins(url, username=username, password=token)
user = server.get_whoami()
elapsed = time.time() - start
print(f" ✓ python-jenkins connection: {user['fullName']} in {elapsed:.2f}s")
except Exception as e:
print(f" ✗ python-jenkins failed: {e}")
return False
print(f"\n✓ All tests passed! Jenkins MCP Server should work.")
return True
if __name__ == "__main__":
print("=" * 60)
print("Jenkins MCP Server - Connection Diagnostic")
print("=" * 60)
success = test_connection()
sys.exit(0 if success else 1)
运行测试
# Connect to VPN first
# Then run:
cd /path/to/jenkins_mcp_server
source .venv/bin/activate
python test_jenkins_connection.py
如果一切正常,预期输出:
============================================================
Jenkins MCP Server - Connection Diagnostic
============================================================
[Test 1] Testing DNS resolution...
✓ DNS resolved: jenkins.example.com -> 10.0.0.1
[Test 2] Testing basic HTTP connectivity...
✓ Connection successful (no auth): 200 in 0.45s
[Test 3] Testing authenticated request...
✓ Authenticated request: 200 in 0.52s
✓ Jenkins version: 2.401.3
✓ Number of jobs: 42
[Test 4] Testing python-jenkins library...
✓ python-jenkins connection: John Doe in 0.38s
✓ All tests passed! Jenkins MCP Server should work.
如果所有测试都通过,但MCP仍然失败,请使用解决方案2(直接Python执行)。
🆘 还有问题吗?
如果您在尝试上述解决方案后仍遇到问题:
-
检查克劳德桌面日志:
- macOS:
~/Library/Logs/Claude/mcp-server-jenkins.log - 视窗:
%APPDATA%\Claude\logs\mcp-server-jenkins.log - Linux:
~/.config/Claude/logs/mcp-server-jenkins.log
- macOS:
-
启用详细日志记录 通过添加
--verbose到args:"args": [ "-m", "jenkins_mcp_server", "--env-file", "/path/to/.env", "--verbose" ] -
验证VPN是否处于活动状态 启动Claude Desktop之前:
# Test if you can reach your Jenkins server curl -I http://your-jenkins-server:8080 -
检查其他工具是否可以访问Jenkins 在VPN上时:
- 尝试在浏览器中访问Jenkins
- 尝试
curl从终端 - 如果两者都有效,但MCP不起作用,请使用解决方案2
-
打开一个问题 与:
- 您的操作系统
- Claude桌面日志文件
- 连接测试脚本的输出
- 您的配置(已编辑凭据)
启用调试日志记录
使用verbose标志运行以查看详细日志:
jenkins-mcp-server --verbose
🧪 开发与测试
运行测试
# Install test dependencies
pip install pytest pytest-asyncio
# Run tests
pytest tests/ -v
构建包
# Install build tools
pip install build
# Build distribution
python -m build
# This creates:
# - dist/jenkins_mcp_server-1.0.0.tar.gz
# - dist/jenkins_mcp_server-1.0.0-py3-none-any.whl
本地开发
# Clone repository
git clone https://github.com/rishibhushan/jenkins_mcp_server.git
cd jenkins_mcp_server
# Install in editable mode
pip install -e .
# Make changes, then test
jenkins-mcp-server --verbose
📚 项目结构
jenkins_mcp_server/
├── bin/
│ └── jenkins-mcp.js # Simplified Node.js wrapper (v1.1.16+)
├── src/
│ └── jenkins_mcp_server/
│ ├── __init__.py # Package initialization & main()
│ ├── __main__.py # Entry point for python -m
│ ├── config.py # Configuration management
│ ├── jenkins_client.py # Jenkins API client (with caching)
│ ├── cache.py # Smart caching layer
│ ├── metrics.py # Performance telemetry
│ └── server.py # MCP server implementation (26 tools)
├── tests/ # Test suite
├── requirements.txt # Python dependencies
├── package.json # Node.js configuration (ES modules)
└── README.md # This file
🔒 安全最佳实践
- 永不承诺
.env文件 -添加到.gitignore - 使用API令牌,而不是密码-更安全且可撤销
- 定期旋转令牌 -定期生成新令牌
- 使用特定于环境的配置 -单独的开发/暂存/生产凭据
- 查看权限 -仅授予必要的Jenkins权限
- 保持依赖关系更新 -快跑
pip install --upgrade -r requirements.txt
🤝 贡献
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推到分支(
git push origin feature/AmazingFeature) - 打开拉取请求
📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🙏 致谢
- 建立在 模型上下文协议(MCP)
- 由...驱动 蟒蛇詹金斯
- 受人工智能驱动的DevOps自动化需求的启发
📞 支持
- 问题: https://github.com/rishibhushan/jenkins_mcp_server/issues
- 讨论: https://github.com/rishibhushan/jenkins_mcp_server/discussions
🗺️ 路线图
- []添加管道支持
- []多Jenkins实例管理
- []构建工件管理
- []高级过滤和搜索
- []实时构建监控
- []Webhook集成
- []Docker容器支持
由以下材料制成❤️ 通过 里希·布尚