Jenkins自动化服务器

Jenkins MCP Server是一个支持AI的Jenkins自动化服务器,通过自然语言命令提供Jenkins管理功能,适用于开发者和DevOps团队。

  • by rishibhushan
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 rishibhushan/jenkins_mcp_server

使用说明

🧠 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"

配置优先

设置按以下顺序加载(稍后覆盖较早):

  1. 默认 .env 文件
  2. 环境变量
  3. 自定义 .env 文件(通过 --env-file)
  4. VS代码设置
  5. 直接参数

获取您的Jenkins API代币

  1. 登录Jenkins
  2. 点击您的名字(右上角)→ 配置
  3. 滚动到 API代币 部分
  4. 点击 添加新令牌
  5. 给它起个名字,然后单击 生成
  6. 复制令牌(⚠️ 它不会再显示了!)

🚀 安装/运行服务器

选项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_URL
  • JENKINS_USERNAME
  • JENKINS_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集成

  1. 安装VSCode MCP扩展 (如果尚未安装)

  2. 配置服务器 在您的工作区或用户设置中:

选项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
  • 检查输出→ 连接状态的模型上下文协议
  1. 验证连接:
    • 打开命令面板(Cmd/Ctrl+Shift+P)
    • 键入“MCP”查看可用命令
    • 应在输出面板中看到“发现26个工具”

VSCode连接故障排除

如果VSCode显示“等待初始化响应”:

  1. 确保 .env 文件路径为 绝对的,不是相对的
  2. 验证 .env 文件具有正确的Jenkins凭据
  3. 完全重新启动VSCode(退出并重新打开)
  4. 检查输出→ 错误消息的模型上下文协议
  5. 请先尝试手动运行: npx --yes @rishibhushan/jenkins-mcp-server --env-file /path/to/.env

🤖 与Claude Desktop集成

  1. 找到Claude桌面配置:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 添加服务器配置:

增添 claude_desktop_config.json:

{
  "mcpServers": {
    "jenkins": {
      "command": "npx",
      "args": [
        "@rishibhushan/jenkins-mcp-server",
        "--env-file",
        "/absolute/path/to/your/.env"
      ]
    }
  }
}
  1. 重新启动克劳德桌面 完全

  2. 验证:

    • 你应该看到一个🔌 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

解决方案:

  1. 验证Jenkins是否正在运行: curl http://localhost:8080/api/json
  2. 检查防火墙设置
  3. 验证URL是否正确(如果需要,请包括端口)
  4. 测试身份验证凭据

依赖关系安装失败

Failed to install dependencies

解决方案:

  1. 检查互联网连接
  2. 如果在代理后面,则设置 HTTP_PROXY 和 HTTPS_PROXY 环境变量
  3. 尝试手动安装: .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:重新启动克劳德桌面

  1. 先连接到您的VPN
  2. 完全退出克劳德桌面
  3. 启动克劳德桌面
  4. 检查设置中的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:测试和使用

  1. 连接到您的VPN
  2. 重新启动MCP客户端 (克劳德桌面、VS Code等)
  3. 验证连接 作品

为什么此解决方案有效

  • ✅ 持续安装 -无需每次使用时下载
  • ✅ 正确的网络路由 -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执行)。


🆘 还有问题吗?

如果您在尝试上述解决方案后仍遇到问题:

  1. 检查克劳德桌面日志:

    • macOS: ~/Library/Logs/Claude/mcp-server-jenkins.log
    • 视窗: %APPDATA%\Claude\logs\mcp-server-jenkins.log
    • Linux: ~/.config/Claude/logs/mcp-server-jenkins.log
  2. 启用详细日志记录 通过添加 --verbose 到args:

    "args": [
      "-m",
      "jenkins_mcp_server",
      "--env-file",
      "/path/to/.env",
      "--verbose"
    ]
    
  3. 验证VPN是否处于活动状态 启动Claude Desktop之前:

    # Test if you can reach your Jenkins server
    curl -I http://your-jenkins-server:8080
    
  4. 检查其他工具是否可以访问Jenkins 在VPN上时:

    • 尝试在浏览器中访问Jenkins
    • 尝试 curl 从终端
    • 如果两者都有效,但MCP不起作用,请使用解决方案2
  5. 打开一个问题 与:

    • 您的操作系统
    • 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

🔒 安全最佳实践

  1. 永不承诺 .env 文件 -添加到 .gitignore
  2. 使用API令牌,而不是密码-更安全且可撤销
  3. 定期旋转令牌 -定期生成新令牌
  4. 使用特定于环境的配置 -单独的开发/暂存/生产凭据
  5. 查看权限 -仅授予必要的Jenkins权限
  6. 保持依赖关系更新 -快跑 pip install --upgrade -r requirements.txt

🤝 贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

📝 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢

📞 支持

  • 问题: https://github.com/rishibhushan/jenkins_mcp_server/issues
  • 讨论: https://github.com/rishibhushan/jenkins_mcp_server/discussions

🗺️ 路线图

  • []添加管道支持
  • []多Jenkins实例管理
  • []构建工件管理
  • []高级过滤和搜索
  • []实时构建监控
  • []Webhook集成
  • []Docker容器支持

由以下材料制成❤️ 通过 里希·布尚