Jenkins用作MCP(模型上下文协议)服务器插件实现了模型上下文协议的服务器端组件。此插件使Jenkins能够作为MCP服务器运行,向MCP客户端(如LLM驱动的应用程序或IDE)提供上下文、工具和能力。
McpServerExtension接口轻松扩展MCP功能。McpServerExtension,提供了与Jenkins作业和构建交互的默认工具。此MCP服务器基于MCP Java SDK版本0.13.1,该SDK实现了MCP规范版本2025-06-18。
MCP服务器插件在安装时会自动设置必要的端点和工具,无需额外配置。
可以使用以下系统属性来配置MCP服务器插件:
io.jenkins.plugins.mcp.server.extensions.BuildLogsExtension.limit.max=10000(默认值10000)MCP规范标记为必须验证传入请求的Origin头。
默认情况下,MCP服务器插件不强制执行此验证,以方便未提供头部的AI代理使用。
如果请求中可用,可以通过系统属性io.jenkins.plugins.mcp.server.Endpoint.requireOriginMatch=true启用不同级别的验证。
当强制执行验证时,头部值必须与配置的Jenkins根URL匹配。
如果接收头部是强制性的,系统属性io.jenkins.plugins.mcp.server.Endpoint.requireOriginHeader=true也将使其成为强制性。
MCP客户端可以使用以下方式连接到服务器:
<jenkins-url>/mcp-server/mcp<jenkins-url>/mcp-server/sse<jenkins-url>/mcp-server/messageMCP服务器插件需要与运行它的Jenkins实例相同的凭证。要对您的MCP查询进行身份验证:
要生成个人访问令牌:
安全。添加新令牌。生成。[!警告] 一旦离开页面,您将无法再次查看或复制令牌。
完成以添加令牌。保存以保存更改。使用个人访问令牌通过基本HTTP认证与MCP代理进行认证。
要在Linux、macOS或Windows上进行编码:
打开终端并运行以下命令,将<username>和<token>替换为您实际的用户名和在Jenkins中生成的个人访问令牌。
echo -n "<username>:<token>" | base64
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("<username>:<token>"))
如果成功,将输出Base64编码的凭证,类似于以下内容:
dXNlcm5hbWU6dG9rZW4=
将编码的凭证存储在一个安全的位置以备后用。
[!注意] Base64编码不是加密。 任何人都可以解码并获取您的凭证。 始终像对待原始用户名和令牌一样保护编码的凭证。
{
"mcpServers": {
"jenkins": {
"autoApprove": [
],
"disabled": false,
"timeout": 60,
"type": "streamableHttp",
"url": "https://jenkins-host/mcp-server/mcp",
"headers": {
"Authorization": "Basic <user:token base64>"
}
}
}
}
目前,Copilot与Streamable传输配合不佳,我仍在调查问题。请继续使用SSE端点。
{
"mcp": {
"servers": {
"jenkins": {
"type": "sse",
"url": "https://jenkins-host/mcp-server/sse",
"headers": {
"Authorization": "Basic <user:token base64>"
}
}
}
}
}
Streamable示例:
{
"servers": {
"jenkins": {
"type": "http",
"url": "http://jenkins-host/mcp-server/mcp",
"requestInit": {
"headers": {
"Authorization": "Basic <user:token base64>"
}
}
}
}
}
{
"servers": {
"jenkins": {
"command": "npx",
"args": [
"mcp-remote",
"http://jenkins-host/mcp-server/mcp",
"--header",
"Authorization: Bearer ${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "Basic <user:token base64>"
}
}
}
}
claude mcp add http://jenkins-host/mcp-server/mcp --transport http --header "Authorization: Basic <user:token base64>"
http://jenkins-host/mcp-server/mcp的内容Authorization作为名称。然后在值字段中输入“Basic <user:token base64>”插件提供了以下内置工具,用于与Jenkins交互:
getJob:通过其完整路径获取Jenkins作业。
getJobs:获取按名称排序的Jenkins作业分页列表。
triggerBuild:触发作业的构建。
此工具支持参数化构建。您可以提供参数作为JSON对象,其中每个键都是参数名称。例如:
{
"jobFullName": "my-job",
"parameters": {
"BRANCH": "main",
"DEBUG_MODE": "true"
}
}
参数说明:
getBuild:检索特定构建或Jenkins作业的最后一个构建。updateBuild:更新构建显示名称和/或描述。getBuildLog:为特定构建或最后一个构建检索带分页的日志行。searchBuildLog:搜索与模式(字符串或正则表达式)匹配的日志行。getJobScm:检索Jenkins作业的SCM配置。getBuildScm:检索特定构建的SCM配置。getBuildChangeSets:检索特定构建的变更集。whoAmI:获取当前用户的信息。getStatus:检查Jenkins实例的健康和就绪状态。使用此工具评估Jenkins实例的健康状况,而不仅仅是简单的上线/下线状态。每个工具接受特定参数来自定义其行为。有关详细使用说明和参数描述,请参阅API文档或使用MCP内省功能。
要使用这些工具,请连接到MCP服务器端点,并使用您的MCP客户端实现调用工具。
MCP服务器插件现在提供了对Jenkins参数的全面支持:
{
"jobFullName": "my-parameterized-job",
"parameters": {
"BRANCH": "main",
"DEBUG_MODE": true,
"ENVIRONMENT": "production",
"FEATURES": ["feature1", "feature2"],
"NOTES": "通过MCP触发构建"
}
}
要添加新的MCP工具或功能:
McpServerExtension的类。@Tool将方法暴露为MCP工具。@ToolParam定义和描述工具参数。示例:
@Extension
public class MyCustomMcpExtension implements McpServerExtension {
@Tool(description = "我的自定义工具")
public String myCustomTool(@ToolParam(description = "输入参数") String input) {
// 工具实现
}
}
MCP服务器插件采用以下方法处理各种结果类型:
对于序列化为文本内容:
@ExportedBean(来自org.kohsuke.stapler.export)注解,则使用Jenkins的org.kohsuke.stapler.export.Flavor.JSON导出机制。@ExportedBean注解的对象,使用Jackson进行JSON序列化。这种方法确保了不同类型结果的灵活和高效处理,既适用于Jenkins特定的导出对象,也适用于标准Java对象。 这种灵活的方法确保了工具结果无论复杂程度如何,都能在MCP响应中一致且准确地表示。
MCP服务器插件无缝集成到GitHub Copilot中,通过直接访问IDE中的Jenkins信息增强了您的开发体验。此集成允许您使用自然语言查询与Jenkins作业和构建进行交互。

如截图所示:
此集成简化了您的工作流程,让您无需离开开发环境即可访问Jenkins信息。
有关模型上下文协议及其Java SDK的更多详细信息:
欢迎对MCP服务器插件进行贡献。请参阅Jenkins贡献指南以获取更多信息。
本项目根据MIT许可发布 - 详情见LICENSE文件。