使用说明

项目简介

MCP Jenkins Server 是一个 MCP 服务器实现,专注于将 Jenkins 集成到 Model Context Protocol (MCP) 生态系统中。它允许大型语言模型(LLM)客户端通过 MCP 协议与 Jenkins 服务器交互,从而实现诸如查询构建状态、获取 Job 配置、触发 Job 等 Jenkins 相关操作。该服务器通过 JSON-RPC 协议与客户端通信,提供了一组预定义的工具 (Tools),使得 LLM 能够以结构化的方式理解和利用 Jenkins 的功能。

主要功能点

  • 资源 (Resources) 管理: 虽然仓库描述中没有明确提及“资源”,但 Jenkins 的 Jobs 和 Builds 可以被视为 MCP 中的资源,服务器提供对这些资源的访问能力。
  • 工具 (Tools) 注册和执行: 仓库实现了多个用于操作 Jenkins 的工具,包括:
    • 'get_all_jobs': 获取 Jenkins 上所有 Job 的列表。
    • 'get_job_config': 获取指定 Job 的配置信息。
    • 'search_jobs': 根据多种条件(如类名、名称、URL、颜色等)搜索 Job。
    • 'get_running_builds': 获取当前正在运行的 Builds 列表。
    • 这些工具允许 LLM 客户端调用 Jenkins 的功能。
  • Prompt 模板 (Prompts): 仓库中没有直接提供 Prompt 模板,但 MCP 服务器的架构设计本身支持 Prompt 模板的集成和使用,可以根据需要扩展。
  • 会话管理和能力声明: 'FastMCP' 框架本身处理了 MCP 服务器的会话管理和能力声明,'mcp-jenkins' 基于 'FastMCP' 构建,因此具备这些基础能力。
  • 多种传输协议: 支持 Stdio 和 SSE 两种传输协议,满足不同场景的需求。

安装步骤

  1. 安装 mcp-jenkins: 使用 'uvx' 或 'pip' 命令安装 'mcp-jenkins' 包。选择适合你的环境的命令执行:
    uvx mcp-jenkins
    或者
    pip install mcp-jenkins

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与 MCP 服务器建立连接。以下是 'mcp-jenkins' 服务器的配置信息,请提供给你的 MCP 客户端,例如 AutoGen 等。

{
  "server_name": "mcp-jenkins",
  "command": "uv",  // 或者 "uvx",取决于你的环境和安装方式
  "args": [
    "run",
    "mcp-jenkins", // 运行 mcp-jenkins 服务
    "--jenkins-url", "<Your Jenkins URL>", // 替换为你的 Jenkins 服务器 URL,例如 "http://localhost:8080"
    "--jenkins-username", "<Your Jenkins Username>", // 替换为你的 Jenkins 用户名
    "--jenkins-password", "<Your Jenkins Password>"  // 替换为你的 Jenkins 密码或 API Token
    // 可选参数:
    // "--jenkins-timeout", "10", // Jenkins API 请求超时时间,单位秒,默认为 5 秒
    // "--transport", "sse",      // 传输协议,可选 "stdio" 或 "sse",默认为 "stdio"
    // "--port", "9887"           // SSE 传输协议监听端口,默认为 9887
  ]
}

参数注释:

  • 'server_name': MCP 服务器的名称,客户端用于标识和调用。
  • 'command': 启动 MCP 服务器的命令,通常是 'uv run' 或 'uvx',取决于你的 Python 环境和包管理器。
  • 'args': 传递给启动命令的参数列表。
    • 'run mcp-jenkins': 指定运行 'mcp-jenkins' 应用。
    • '--jenkins-url', '--jenkins-username', '--jenkins-password': 必须配置,用于连接到你的 Jenkins 服务器。请替换为你的实际 Jenkins 服务器地址、用户名和密码。强烈建议使用 Jenkins API Token 而不是明文密码。
    • '--jenkins-timeout': 可选,设置 Jenkins API 请求的超时时间,单位为秒。
    • '--transport': 可选,指定 MCP 服务器使用的传输协议,'stdio' 为标准输入输出,'sse' 为 Server-Sent Events。默认为 'stdio'。
    • '--port': 可选,当使用 'sse' 传输协议时,指定服务器监听的端口号。

注意:

  • 请务必将 '<Your Jenkins URL>', '<Your Jenkins Username>', '<Your Jenkins Password>' 替换为你的实际 Jenkins 服务器配置信息。
  • 出于安全考虑,建议使用 Jenkins API Token 代替明文密码。
  • 你可以根据需要调整可选参数,例如修改 Jenkins API 超时时间或选择 SSE 传输协议。

基本使用方法

  1. 启动 MCP Jenkins Server: MCP 服务器通常由 MCP 客户端在需要时启动。根据客户端的配置,客户端会使用上述配置信息中的 'command' 和 'args' 启动 'mcp-jenkins' 服务器。

  2. 客户端调用工具: 一旦服务器启动并与客户端建立连接,客户端就可以通过 MCP 协议调用 'mcp-jenkins' 服务器提供的工具 (Tools),例如 'get_all_jobs', 'get_job_config' 等。具体的调用方式取决于 MCP 客户端的实现。

  3. 查看 Inspector (可选): 可以使用 '@modelcontextprotocol/inspector' 工具来测试和检查 MCP Jenkins Server 是否正常工作。根据 README.md 提供的命令,你可以使用 Inspector 连接到你的 'mcp-jenkins' 服务器并浏览其提供的工具。

    例如,使用 'stdio' 传输协议:

    npx @modelcontextprotocol/inspector uvx mcp-jenkins --jenkins-url <Your Jenkins URL> --jenkins-username <Your Jenkins Username> --jenkins-password <Your Jenkins Password>

    或者使用 'sse' 传输协议(假设服务器运行在默认端口 9887):

    npx @modelcontextprotocol/inspector sse://localhost:9887

    同样需要替换 '<Your Jenkins URL>', '<Your Jenkins Username>', '<Your Jenkins Password>' 为你的实际 Jenkins 配置。

AutoGen 集成示例 (参考 README.md)

仓库的 README.md 中提供了一个使用 AutoGen 和 'StdioMcpToolAdapter' 集成 'mcp-jenkins' 的示例代码,展示了如何通过 AutoGen 代理调用 'get_all_jobs' 工具。你可以参考该示例了解如何在 MCP 客户端中使用 'mcp-jenkins' 提供的工具。

总而言之,'mcp-jenkins' 提供了一个桥梁,使得 LLM 应用能够方便地通过 MCP 协议与 Jenkins 系统集成,利用 Jenkins 强大的 CI/CD 功能。

信息

分类

开发者工具