Jenkins MCP服务器

一个基于Python的Jenkins集成工具,提供Jenkins服务器状态监控、任务列表与过滤、任务信息检索及参数化任务触发功能。

  • by avirajvashistha1
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 avirajvashistha1/jenkins-mcp-server

使用说明

“”“Jenkins MCP服务器的README。”“”

Jenkins MCP服务器

用于Jenkins集成的基于Python的模型上下文协议(MCP)服务器。

概述

此MCP服务器提供与Jenkins CI/CD系统交互的工具,实现:

  • Jenkins服务器状态监控
  • 职位列表和筛选
  • 作业信息检索
  • 使用参数触发作业

特性

  • 获取Jenkins状态:监视Jenkins服务器运行状况
  • 列出工作:使用可选筛选从Jenkins服务器检索作业
  • 获取职位信息:获取特定工作的详细信息
  • 触发作业:使用可选参数触发作业生成

安装

先决条件

  • Python 3.8或更高版本
  • 点

设置

  1. 克隆存储库:
git clone <repository-url>
cd jenkins-mcp-server
  1. 在开发模式下安装:
pip install -e ".[dev]"

用法

运行服务器

python -m jenkins_mcp.server

在您的应用程序中使用

from jenkins_mcp.server import JenkinsMCPServer

# Initialize the server
server = JenkinsMCPServer()

# Get available tools
tools = server.get_tools()

# Call a tool
result = server.process_tool_call(
    "get_jenkins_status",
    {"jenkins_url": "http://localhost:8080"}
)

工具架构

每个工具都有一个定义的输入模式。例如:

get_jenkins_status:

{
  "jenkins_url": "string (required)"
}

list_jobs:

{
  "jenkins_url": "string (required)",
  "filter": "string (optional)"
}

get_job_info:

{
  "jenkins_url": "string (required)",
  "job_name": "string (required)"
}

触发器_ job:

{
  "jenkins_url": "string (required)",
  "job_name": "string (required)",
  "parameters": "object (optional)"
}

server.py——功能详细信息

jenkins_mcp/server.py 实现MCP服务器并公开一小部分工具 与Jenkins实例交互。本节记录了行为、输入和输出, 输出和显著的运行时行为,因此集成商可以可靠地使用这些工具。

已实施的工具(摘要):

  • get_jenkins_status --Jenkins URL的快速健康/状态检查。
  • list_jobs --返回一个简单的作业列表(支持 filter 论点)。
  • get_job_info --返回特定作业的基本信息。
  • trigger_job --触发Jenkins作业并执行稳健的跟踪(队列->构建->控制台)。

trigger_job 详情

  • 输入(arguments对象):

    • jenkins_url (string,必填)--Jenkins服务器的基本URL(例如。 http://localhost:8081).
    • job_name (string,必填)--要触发的作业(例如。 my-pipeline).
    • parameters (object,可选)--参数化作业的参数。
    • username / api_token (可选)——可选凭证;如果没有提供,服务器将 尝试阅读 JENKINS_USERNAME 和 JENKINS_API_TOKEN 环境变量(a 最小 .env 装载机用于本地开发)。
  • 行为:

    • 对以下任一对象执行POST /job/<job>/build 或 /job/<job>/buildWithParameters 取决于 是否 parameters 提供。
    • 如果存在凭据,它将尝试从以下位置获取Jenkins CSRF碎屑 /crumbIssuer/api/json 并将其包含在触发请求报头中。
    • 触发后,如果Jenkins返回 Location 指向队列项的标头, 服务器轮询队列项的 /api/json 直到A executable 带着一个 number (版本号)已附。
    • 一旦找到内部版本号,服务器就会轮询该内部版本 /api/json 直到 building 字段变为 false (已完成)或达到超时时间。
    • 当构建可用时(或轮询后),服务器会尝试获取 /consoleText 返回控制台输出(尽力而为)。
  • 输出:处理程序返回一个字典,其中至少包含以下键:

    • triggered (bool)——触发器请求是否返回2xx代码。
    • status_code (int|None)--触发器HTTP请求的状态代码。
    • api_response (object)-解析的JSON或来自触发器响应的错误消息。
    • api_response_text (string)--安全字符串化表示 api_response 用于日志记录。
    • queue_url (string | None)--队列项URL(如果存在)。
    • queue_item (object|None)--队列项的JSON有效负载(如果可用)。
    • build_number (int|None)——发现时的Jenkins内部版本号。
    • build_url (string | None)--发现时的构建URL。
    • console_output (string)--尽最大努力获取 /consoleText.
  • 错误和超时处理:

    • 捡面包屑是最好的努力;如果失败,触发器仍将继续,Jenkins 将相应地作出回应。
    • 队列和构建轮询循环是有界的(短超时)。如果轮询失败 在超时之前找到可执行文件/构建,处理程序将返回数据 至今已收集(包括 api_response_text 以及任何 queue_url).

示例用法(Python):

from jenkins_mcp.server import JenkinsMCPServer
server = JenkinsMCPServer()
res = server.process_tool_call("trigger_job", {
    "jenkins_url": "http://localhost:8081",
    "job_name": "jenkins-mcp-server-build",
})
print(res["result"] if res.get("success") else res)

备注

  • 该实现有意最小化,依赖性轻(使用 requests).
  • 为了方便本地认证,该项目包括一个小型 .env 装载机 将填充 JENKINS_USERNAME 和 JENKINS_API_TOKEN 如果一 .env 文件存在。 记住不要承诺 .env --存储库 .gitignore 已经忽略了它。

测试

运行测试套件:

pytest

跑步覆盖:

pytest --cov=jenkins_mcp

发展

代码质量

黑色格式代码:

black jenkins_mcp tests

带褶边的棉绒:

ruff check jenkins_mcp tests

使用mypy进行类型检查:

mypy jenkins_mcp

项目结构

jenkins-mcp-server/
├── jenkins_mcp/
│   ├── __init__.py
│   └── server.py          # Main server implementation
├── tests/
│   └── test_server.py     # Test suite
├── pyproject.toml         # Project configuration
└── README.md             # This file

MCP协议集成

此服务器实现了模型上下文协议(MCP)规范。要将其与MCP客户端一起使用:

  1. 确保服务器正在运行
  2. 配置您的MCP客户端以连接到此服务器
  3. 客户端将通过协议发现可用的工具
  4. 使用协议中定义的工具

未来的增强功能

  • 添加实际的Jenkins API集成
  • 支持Jenkins身份验证(API令牌,OAuth)
  • 添加构建日志流
  • 添加管道支持
  • 添加构建工件管理
  • 添加用户和权限管理

许可证

麻省理工学院

贡献

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