andreimatveyeu
服务介绍
mcp_jenkins
一个 Jenkins MCP 服务器。模型上下文协议 (MCP) 允许 AI 工具(如聊天机器人)与您的 Jenkins 设置进行通信和控制,例如检索信息和修改设置。
注意: 这是一个最小实验版本的 MCP Jenkins 服务器,目前处于早期开发阶段。
描述
该项目提供了一个用于与 Jenkins 交互的模型上下文协议 (MCP) 服务器。它允许用户通过 MCP 接口触发 Jenkins 任务、获取构建状态以及执行其他与 Jenkins 相关的操作。
组件
server.py: 核心 MCP Jenkins 服务器应用程序。functions_schema.md: 定义了 MCP Jenkins 服务器暴露的功能模式。client.py: 一个示例客户端,演示如何与 MCP Jenkins 服务器交互(仅作参考)。functional tests: 包含 MCP Jenkins 服务器的功能测试。
安装
要安装该包,请运行:
bash
pip install .
使用
常见工作流程
运行服务器
要运行 MCP 服务器:
bash
./docker/run.server
运行示例客户端
要运行示例客户端:
bash
./docker/run.client
例如,要使用特定模型列出名为 "backups" 的作业的所有构建,可以运行:
bash
./docker/run.client --model gemini-2.0-flash-001 "list builds backups"
注意:如果通过 pip install . 安装了包,则 mcp_jenkins_client 控制台脚本也是可用的。
这可能会产生如下输出:
查询: list builds backups
结果:
backups 的最近构建:
- 构建 #1086: 失败 (http://myjenkins:8080/job/backups/1086/)
使用 Docker 构建和测试
开发和测试的一个常见工作流程是首先构建 Docker 镜像,然后执行测试:
-
构建 Docker 镜像:
此步骤准备了测试所需的环境。
bash
./docker/build -
运行测试:
构建完成后,执行测试。
bash
./docker/run.tests
此序列确保在一致的 Docker 环境中针对最新构建执行测试。
部署测试环境
要部署本地 Jenkins 测试实例(无身份验证,仅用于功能测试):
bash
./docker/deploy.test.environment
连接到现有的 Jenkins 实例
要将 MCP Jenkins 服务器与现有 Jenkins 实例一起使用,您需要配置以下环境变量:
JENKINS_URL: 您的 Jenkins 实例的完整 URL(例如,http://your-jenkins-host:8080)。这是必需的。JENKINS_USER: (可选)如果需要身份验证,则为您的 Jenkins 用户名。JENKINS_API_TOKEN: (可选)您的 Jenkins API 令牌。如果使用身份验证,则必须与JENKINS_USER一同提供。您可以在 Jenkins 用户的配置页面 (<Jenkins URL>/me/configure) 生成 API 令牌。MCP_API_KEY: 用于保护此 MCP 服务器的秘密 API 密钥。请求 MCP 服务器时需要在X-API-Key标头中包含此密钥。除非DEBUG_MODE设置为true,否则这是必需的。DEBUG_MODE: 设置为true以调试模式运行 MCP 服务器,这会绕过MCP_API_KEY要求并提供更详细的日志记录。不要在生产环境中使用。
示例配置(Bash):
bash
export JENKINS_URL="http://your-jenkins-host:8080"
export JENKINS_USER="your_jenkins_username"
export JENKINS_API_TOKEN="your_jenkins_api_token"
export MCP_API_KEY="your_mcp_secret_key"
export DEBUG_MODE="true" # 在不需要 MCP_API_KEY 的开发/测试中取消注释
设置了这些环境变量后,您可以使用 Docker 脚本运行 MCP 服务器:
bash
./docker/run.serverMCP 服务器将尝试连接到您指定的 Jenkins 实例。
OpenWebUI 集成
文件 open-webui/open_webui_interface.py 提供了一个如何将此 MCP Jenkins 服务器与 OpenWebUI 实例集成的例子。
使用方法:
- 在您的 OpenWebUI 界面中,导航到添加或配置工具的部分。
- 创建一个新的工具。
- 复制整个
open-webui/open_webui_interface.py文件的内容,并将其粘贴到 OpenWebUI 中的工具配置里。 - 重要:您需要调整粘贴代码中的连接参数,特别是:
MCP_JENKINS_SERVER_URL: 在您的 OpenWebUI 环境中设置此环境变量为正在运行的 MCP Jenkins 服务器的 URL(例如,http://localhost:5000)。如果未设置该变量,脚本默认为http://localhost:5000。MCP_API_KEY: 如果您的 MCP Jenkins 服务器被配置为需要 API 密钥,请确保在您的 OpenWebUI 环境中设置了此环境变量。如果没有找到该变量,脚本会打印一条警告信息,但仍会尝试发出请求。
配置完成后,定义在 open_webui_interface.py 中的工具(如 list_jobs, trigger_build, get_build_status)应该可以在您的 OpenWebUI 聊天界面中使用了。
许可证
本项目采用 MIT 许可证。