返回市场
詹金斯-mcp-服务器

詹金斯-mcp-服务器

作者:LokiMCPUniverse3 星标更新:2025-06-10

项目介绍

Jenkins MCP 服务器

<div align="center">

Jenkins MCP 服务器

GitHub stars GitHub forks GitHub watchers

License Issues Pull Requests Last Commit

Python MCP

Commit Activity Code Size Contributors

</div>

一个用于集成Jenkins自动化服务器与GenAI应用程序的模型上下文协议(MCP)服务器,支持智能CI/CD流水线管理。

功能

  • 全面的Jenkins API覆盖

    • 工作管理:创建、配置、构建、删除工作
    • 流水线操作:执行、监控和管理流水线
    • 构建管理:触发构建、获取状态、检索工件
    • 队列管理:监控构建队列、取消排队项目
    • 节点/代理管理:列出节点、获取节点状态、管理代理
    • 插件管理:列出、安装、更新插件
    • 凭证管理:安全地管理Jenkins凭证
    • 文件夹/组织:支持文件夹和组织文件夹
    • Blue Ocean API:现代流水线可视化和管理
    • Webhook集成:GitHub、GitLab、Bitbucket webhook
  • 认证方法

    • API令牌认证
    • 用户名/密码(不推荐)
    • 支持OAuth 2.0
    • LDAP/AD集成
  • 企业特性

    • 多主Jenkins支持
    • 基于角色的访问控制(RBAC)
    • 审计日志
    • 性能监控
    • 批量操作以提高效率

安装

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配置

添加到你的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)

Webhook配置

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监控和告警

安全最佳实践

  1. 使用API令牌而不是密码
  2. 启用HTTPS对所有连接
  3. 实现RBAC并赋予最小权限
  4. 定期轮换API令牌
  5. 使用Jenkins凭证存储敏感数据
  6. 启用审计日志以符合合规性要求
  7. 限制网络访问到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("权限被拒绝")

性能优化

  1. 使用批量操作进行多个作业
  2. 启用缓存对作业配置
  3. 实现分页对大型结果集
  4. 尽可能使用轻量级API调用
  5. 监控API速率限制

故障排除

常见问题

  1. 身份验证失败

    • 验证API令牌是否有效
    • 检查用户权限
    • 确保处理了CSRF保护
  2. 连接超时

    • 增加超时值
    • 检查网络连接
    • 验证Jenkins URL
  3. 权限错误

    • 验证用户具有所需权限
    • 检查文件夹级别的权限
    • 查看安全领域设置

贡献

欢迎贡献!请阅读我们的贡献指南并提交拉取请求。

许可证

MIT许可证 - 详情见LICENSE文件