使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个在 Jenkins 环境中运行的 MCP 服务器端组件。通过对接 MCP 客户端,服务器向客户端提供 Jenkins 的工具、资源和提示等能力,并通过 JSON-RPC 接口进行交互。服务器端还实现了会话管理、权限校验以及多传输协议支持(如 SSE、流式 HTTP)。
  • 主要功能点

    • MCP 服务器核心能力与端点
      • 提供对 MCP 客户端的服务器能力声明、工具集、Prompts、Resources 的托管与管理。
      • 支持 SSE、流式 HTTP 等传输模式,并暴露相应端点。
    • 工具包装与暴露
      • 将 Jenkins 中的方法通过注解方式暴露为 MCP 工具,自动生成输入输出描述和参数信息。
      • 支持参数描述、必填项、默认值和元数据(meta、annotations)。
    • 参数与结果处理
      • 内置复杂参数类型处理(字符串、布尔、选择、文本、密码、运行参数、文件参数等)以及对 Git 参数的特殊处理。
      • 支持插件自定义参数类型的反射处理。
      • 结果序列化:Jenkins 对象按导出策略序列化为文本/JSON,兼容导出注解对象与普通对象。
    • 资源、工具、Prompts 的扩展机制
      • 通过 McpServerExtension 接口可继续扩展同步的 Tools、Prompts、Resources。
    • 安全与认证
      • Origin 头部校验(可选)以及 Jenkins 登录态的上下文注入,支持在权限控制下执行工具调用。
    • 测试与示例实现
      • 包含若干扩展实现(如 DefaultMcpServer、BuildLogsExtension、TestResultExtension、JobScmExtension、SampleMcpServer 等)作为示例或可用扩展。
      • 提供用于测试 MCP 客户端的测试框架与示例实现。
  • 安装步骤

    • 将插件打包为 Jenkins 插件包(.hpi/.jpi),并部署到运行中的 Jenkins 实例中。
    • 重启 Jenkins,使插件初始化并自动暴露 MCP 服务端端点。
    • MCP 客户端在连接前需要具备 Jenkins 的访问凭证(通常为 Jenkins 用户 API Token),并通过以下端点之一建立连接:
      • SSE 端点(推荐用于 Copilot 等工具):https://your-jenkins-host/mcp-server/sse
      • 流式 HTTP 端点(http/https,需正确的请求头):https://your-jenkins-host/mcp-server/mcp
      • 消息端点(Post 方式,具体依赖客户端实现):https://your-jenkins-host/mcp-server/message
    • 客户端在初次连接时可选择提供认证信息(Header),如 Authorization: Basic base64(user:token)。
  • 服务器配置(MCP 客户端连接配置说明) 注:MCP 客户端配置通常包含服务器名称、传输类型、端点 URL,以及必要的请求头。以下为符合仓库实现特征的配置要点说明,实际值请结合你的 Jenkins 实例进行替换。

    • serverName: jenkins-mcp-server
    • endpointType: sse 或 streamable
    • url:
      • SSE: https://<jenkins-host>/mcp-server/sse
      • 流式: https://<jenkins-host>/mcp-server/mcp
    • headers:
      • Authorization: Basic <base64(username:token)>
    • 说明:
      • 该 MCP 服务器插件在 Jenkins 内部运行,因此不需要单独的启动命令(command)和参数(args)。客户端需要的仅是指向 Jenkins 暴露的端点的连接信息,以及在需要时提供的认证信息。
    • 示例(文本描述的配置信息,非代码片段)
      • 服务器名称:jenkins-mcp-server
      • 传输类型:SSE(或流式)
      • 端点 URL:SSE 使用 https://<jenkins-host>/mcp-server/sse;流式使用 https://<jenkins-host>/mcp-server/mcp
      • 认证头:Authorization: Basic base64(user:token)
      • 备注:MCP 客户端的启动命令和参数在此场景下不是必需的,因为服务器端运行在 Jenkins 插件中,客户端通过网络端点进行访问。
    • 备选配置( Copilot 等工具可用示例,按端点选择)
      • Copilot 配置示例(用于提示工具的快速接入,不属于服务端配置代码)
        • 端点类型:SSE
        • URL:https://<jenkins-host>/mcp-server/sse
        • 认证:按需要设置 Authorization 头
    • 说明性要点
      • 客户端需要的是真正的端点地址、传输方式以及必要的认证信息,具体的“命令/参数”字段在此实现中并非必需,因为服务器是运行在 Jenkins 插件中的服务端组件。
  • 基本使用方法

    • 连接与探索
      • 启动 Jenkins 并确保插件加载成功后,客户端连接到以下端点之一即可获取服务器能力、工具和资源信息。
      • 列出服务器能力与工具:客户端可以请求服务器能力清单、可用工具、可用资源等信息。
    • 调用工具
      • 客户端通过 MCP 端点调用名为 sayHello、getBuild、triggerBuild 等工具,传入参数后获得结构化文本内容(通常包含 JSON 字符串,或直接返回文本/对象的序列化表示)。
    • 获取构建信息与变更
      • 使用工具如 getBuild、getJobScm、getBuildScm、getBuildLog、getBuildChangeSets、getStatus、whoAmI 等,客户端可获得 Jenkins 的构建数据、变更集、日志等信息。
    • 安全与权限
      • 如需要,启用 Jenkins 安全认证,并在请求中提供授权头部(例如 Basic Token),服务端会在执行工具时遵循 Jenkins 的权限模型进行控制。
    • 日志与结果
      • 构建日志、测试结果等通过服务器端工具返回前端时,将序列化为文本内容,便于 MCP 客户端解析和展示。
  • 备注

    • 本仓库提供了多个扩展示例(如 BuildLogsExtension、TestResultExtension、JobScmExtension、DefaultMcpServer 等)来演示如何通过 MCP 服务器暴露 Jenkins 的能力,实际使用时可按需启用或自定义扩展。

信息

分类

开发者工具