使用说明
“”“Jenkins MCP服务器的README。”“”
Jenkins MCP服务器
用于Jenkins集成的基于Python的模型上下文协议(MCP)服务器。
概述
此MCP服务器提供与Jenkins CI/CD系统交互的工具,实现:
- Jenkins服务器状态监控
- 职位列表和筛选
- 作业信息检索
- 使用参数触发作业
特性
- 获取Jenkins状态:监视Jenkins服务器运行状况
- 列出工作:使用可选筛选从Jenkins服务器检索作业
- 获取职位信息:获取特定工作的详细信息
- 触发作业:使用可选参数触发作业生成
安装
先决条件
- Python 3.8或更高版本
- 点
设置
- 克隆存储库:
git clone <repository-url>
cd jenkins-mcp-server
- 在开发模式下安装:
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直到Aexecutable带着一个number(版本号)已附。 - 一旦找到内部版本号,服务器就会轮询该内部版本
/api/json直到building字段变为false(已完成)或达到超时时间。 - 当构建可用时(或轮询后),服务器会尝试获取
/consoleText返回控制台输出(尽力而为)。
- 对以下任一对象执行POST
-
输出:处理程序返回一个字典,其中至少包含以下键:
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客户端一起使用:
- 确保服务器正在运行
- 配置您的MCP客户端以连接到此服务器
- 客户端将通过协议发现可用的工具
- 使用协议中定义的工具
未来的增强功能
- 添加实际的Jenkins API集成
- 支持Jenkins身份验证(API令牌,OAuth)
- 添加构建日志流
- 添加管道支持
- 添加构建工件管理
- 添加用户和权限管理
许可证
麻省理工学院
贡献
欢迎投稿!请随时提交拉取请求。
