一个用于集成Jenkins自动化服务器与GenAI应用程序的模型上下文协议(MCP)服务器,支持智能CI/CD流水线管理。
全面的Jenkins API覆盖:
认证方法:
企业特性:
pip install jenkins-mcp-server
或者从源码安装:
git clone https://github.com/asklokesh/jenkins-mcp-server.git
cd jenkins-mcp-server
pip install -e .
创建一个.env文件或设置环境变量:
# Jenkins连接
JENKINS_URL=https://jenkins.example.com
JENKINS_USERNAME=your_username
JENKINS_API_TOKEN=your_api_token
# 可选设置
JENKINS_VERIFY_SSL=true
JENKINS_TIMEOUT=30
JENKINS_MAX_RETRIES=3
# 多主支持(可选)
JENKINS_PROD_URL=https://jenkins-prod.example.com
JENKINS_PROD_USERNAME=prod_user
JENKINS_PROD_API_TOKEN=prod_token
JENKINS_DEV_URL=https://jenkins-dev.example.com
JENKINS_DEV_USERNAME=dev_user
JENKINS_DEV_API_TOKEN=dev_token
from jenkins_mcp import JenkinsMCPServer
# 初始化服务器
server = JenkinsMCPServer()
# 启动服务器
server.start()
添加到你的Claude Desktop配置中:
{
"mcpServers": {
"jenkins": {
"command": "python",
"args": ["-m", "jenkins_mcp.server"],
"env": {
"JENKINS_URL": "https://jenkins.example.com",
"JENKINS_USERNAME": "your_username",
"JENKINS_API_TOKEN": "your_api_token"
}
}
}
}
{
"tool": "jenkins_list_jobs",
"arguments": {
"folder": "optional/folder/path",
"view": "optional_view_name"
}
}
{
"tool": "jenkins_create_job",
"arguments": {
"job_name": "my-new-job",
"config_xml": "<project>...</project>",
"folder": "optional/folder/path"
}
}
{
"tool": "jenkins_get_job_config",
"arguments": {
"job_name": "my-job",
"folder": "optional/folder/path"
}
}
{
"tool": "jenkins_build_job",
"arguments": {
"job_name": "my-job",
"parameters": {
"BRANCH": "main",
"ENVIRONMENT": "staging"
},
"folder": "optional/folder/path"
}
}
{
"tool": "jenkins_get_build_status",
"arguments": {
"job_name": "my-job",
"build_number": 123
}
}
{
"tool": "jenkins_get_build_logs",
"arguments": {
"job_name": "my-job",
"build_number": 123,
"start": 0,
"max_lines": 1000
}
}
{
"tool": "jenkins_execute_pipeline",
"arguments": {
"job_name": "my-pipeline",
"pipeline_script": "pipeline { agent any; stages { ... } }",
"parameters": {}
}
}
{
"tool": "jenkins_get_pipeline_status",
"arguments": {
"job_name": "my-pipeline",
"build_number": 123
}
}
{
"tool": "jenkins_list_queue",
"arguments": {}
}
{
"tool": "jenkins_cancel_queue_item",
"arguments": {
"queue_id": 456
}
}
{
"tool": "jenkins_list_nodes",
"arguments": {}
}
{
"tool": "jenkins_get_node_info",
"arguments": {
"node_name": "agent-01"
}
}
{
"tool": "jenkins_list_plugins",
"arguments": {
"active_only": true
}
}
{
"tool": "jenkins_install_plugin",
"arguments": {
"plugin_name": "git",
"version": "latest"
}
}
{
"tool": "jenkins_create_credentials",
"arguments": {
"credential_id": "github-token",
"credential_type": "secret_text",
"secret": "ghp_xxxxx",
"description": "GitHub API Token",
"domain": "global"
}
}
from jenkins_mcp import JenkinsMCPServer, JenkinsConfig
# 配置多个Jenkins主服务器
masters = {
"production": JenkinsConfig(
url="https://jenkins-prod.example.com",
username="prod_user",
api_token="prod_token"
),
"development": JenkinsConfig(
url="https://jenkins-dev.example.com",
username="dev_user",
api_token="dev_token"
),
"staging": JenkinsConfig(
url="https://jenkins-staging.example.com",
username="staging_user",
api_token="staging_token"
)
}
server = JenkinsMCPServer(masters=masters, default_master="production")
# 定义可重用的流水线模板
pipeline_templates = {
"standard_build": """
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'make build'
}
}
stage('Test') {
steps {
sh 'make test'
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
sh 'make deploy'
}
}
}
}
"""
}
server = JenkinsMCPServer(pipeline_templates=pipeline_templates)
from jenkins_mcp import JenkinsMCPServer, WebhookConfig
webhook_config = WebhookConfig(
enabled=True,
port=8080,
secret="webhook_secret",
ssl_cert="/path/to/cert.pem",
ssl_key="/path/to/key.pem"
)
server = JenkinsMCPServer(webhook_config=webhook_config)
查看examples/目录中的完整集成示例:
basic_operations.py - 常见的Jenkins操作pipeline_management.py - 流水线的创建和管理multi_master.py - 管理多个Jenkins实例gitops_integration.py - 使用Jenkins的GitOps工作流genai_automation.py - AI驱动的流水线生成monitoring_dashboard.py - Jenkins监控和告警服务器提供详细的错误信息:
try:
result = server.execute_tool("jenkins_build_job", {
"job_name": "my-job"
})
except JenkinsError as e:
print(f"Jenkins错误: {e.error_code} - {e.message}")
if e.status_code == 404:
print("未找到作业")
elif e.status_code == 403:
print("权限被拒绝")
身份验证失败
连接超时
权限错误
欢迎贡献!请阅读我们的贡献指南并提交拉取请求。
MIT许可证 - 详情见LICENSE文件