Jenkins日志分析服务器

用于获取和分析Jenkins构建控制台日志的模型上下文协议服务器,支持多实例配置和自动实例检测。

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

使用说明

Jenkins MCP 服务器

一个用于获取和分析Jenkins构建控制台日志的模型上下文协议(MCP)服务器。支持多个Jenkins实例(命名配置)以及从作业URL自动检测实例。

特点/特性

  • 获取控制台日志从Jenkins构建中获取完整的控制台输出
  • 分析构建错误从大型日志中提取带有上下文的错误片段
  • 提取Git仓库识别构建过程中使用的Git仓库、分支和提交
  • 获取构建信息检索构建元数据(状态、持续时间、触发器等)

安装

  1. 克隆仓库:
git clone <repository-url>
cd jenkins-mcp-server
  1. 安装依赖项:
uv sync

配置

  1. 创建一个 .env 在根目录下的文件(使用 .env.example (作为模板):
cp .env.example .env
  1. 配置您的Jenkins凭据:

单个Jenkins实例

对于单一的Jenkins服务器:

JENKINS_URL=https://your-jenkins-instance.com
JENKINS_USER=your_username
JENKINS_API_TOKEN=your_api_token

多个 Jenkins 实例

如果您有多个Jenkins服务器(例如,旧版和新版),您可以使用命名实例来配置它们:

# Default instance (backward compatible)
JENKINS_URL=https://jenkins.example.com
JENKINS_USER=default_user
JENKINS_API_TOKEN=default_token

# Legacy Jenkins
JENKINS_LEGACY_URL=https://jenkins-legacy.example.com
JENKINS_LEGACY_USER=legacy_user
JENKINS_LEGACY_API_TOKEN=legacy_token

# Current/Production Jenkins
JENKINS_CURRENT_URL=https://jenkins.production.example.com
JENKINS_CURRENT_USER=current_user
JENKINS_CURRENT_API_TOKEN=current_token

当使用多个实例时,请提供 完整的 Jenkins 作业 URL 服务器将自动使用正确的实例:

  • 示例: "https://jenkins-legacy.example.com/job/MyFolder/job/MyJob/lastBuild"

服务器将URL与配置的实例进行匹配,并使用相应的凭据。

获取 Jenkins API 令牌

  1. 登录到您的Jenkins实例
  2. 点击右上角的用户名
  3. 点击“配置”
  4. 在“API令牌”下,点击“添加新令牌”
  5. 给它起个名字,然后点击“生成”
  6. 复制令牌并将其添加到您的 .env 文件

使用

运行服务器

uv run jenkins-mcp-server

或者直接运行Python文件:

uv run python main.py

服务器将在 http://0.0.0.0:3000/mcp (可通过……配置 SERVER_PORT 并且 SERVER_PATH 环境变量)

可用工具

所有工具都需要一个 完整的Jenkins作业URL 包括构建编号或别名。

URL 格式:

https://jenkins.example.com/job/JobName/job/SubJob/lastBuild

构建别名:

  • lastBuild - 最新构建版本
  • lastSuccessfulBuild - 最近一次成功的构建
  • lastFailedBuild - 最近一次构建失败
  • lastCompletedBuild - 最近完成的构建

1. get_jenkins_console_log

获取Jenkins构建的完整控制台日志。

参数:

  • job_url (必填):完整的 Jenkins 作业 URL

示例:

get_jenkins_console_log(
    job_url="https://jenkins.example.com/job/MyProject/job/my-application/123"
)

2. analyze_jenkins_build_errors

分析构建日志并提取错误片段。对于大型日志,它会自动提取相关的错误部分及其上下文信息。

参数:

  • job_url (必填):完整的Jenkins作业URL

示例:

analyze_jenkins_build_errors(
    job_url="https://jenkins.example.com/job/MyProject/job/my-application/lastFailedBuild"
)

3. get_jenkins_git_repositories

从构建的控制台日志中提取Git仓库信息。返回包含URL、分支和提交哈希的去重仓库列表。

参数:

  • job_url (必填):完整的 Jenkins 作业 URL

示例:

get_jenkins_git_repositories(
    job_url="https://jenkins.example.com/job/MyProject/job/my-application/lastBuild"
)

4. get_jenkins_build_info

获取有关 Jenkins 构建的元数据(状态、持续时间、时间戳等)。

参数:

  • job_url (必填):完整的 Jenkins 作业 URL

示例:

get_jenkins_build_info(
    job_url="https://jenkins.example.com/job/MyProject/job/my-application/123"
)

配置选项

您可以使用环境变量来定制其行为:

  • JENKINS_URL您的 Jenkins 实例 URL
  • JENKINS_USER您的 Jenkins 用户名
  • JENKINS_API_TOKEN你的Jenkins API令牌
  • JENKINS_VERIFY_SSL启用/禁用SSL证书验证(默认: true)。 设置为 false 用于自签名证书
  • MAX_LOG_SIZE提取片段前的最大日志大小(以字符计)(默认:250000)
  • CONTEXT_WINDOW错误周围要包含的行数(默认值:2)
  • HTTP_TIMEOUT整体HTTP请求超时时间(单位:秒)(默认:30)
  • HTTP_CONNECT_TIMEOUTHTTP连接超时时间(以秒为单位)(默认:10)
  • HTTP_READ_TIMEOUTHTTP 读取超时时间(以秒为单位)(默认:120)
  • HTTP_WRITE_TIMEOUTHTTP写入超时时间(以秒为单位)(默认:10)
  • SERVER_PORTMCP 服务器监听的端口(默认:3000)
  • SERVER_PATHMCP 端点的路径(默认:/mcp)
  • DEBUG启用详细调试日志记录(默认: false)。 设置为 true 查看详细日志,包括实例检测、API调用和响应大小

调试模式

启用详细日志记录以查看有关实例检测、API调用和响应的详细信息:

DEBUG=true

启用后,您将看到如下输出:

🔧 Configuration loaded (DEBUG MODE ENABLED):
   Jenkins instances configured: 2
     - https://jenkins.example.com (user: your_user)
     - https://jenkins-legacy.example.com (user: legacy_user)
   ...

SSL证书问题

如果你正在连接一个使用自签名证书的 Jenkins 实例并遇到 SSL 错误,你可以禁用 SSL 验证:

JENKINS_VERIFY_SSL=false

注: 禁用SSL验证仅应在开发/预生产环境中使用。对于生产环境,请使用有效的SSL证书。

发展

运行测试

uv run pytest

代码检查(或代码格式化、代码规范检查)

uv run ruff check .

类型检查

uv run pyright

许可证

麻省理工学院(MIT)