From a711298dc737d7fd1b453e26be13686cf42e7a1d Mon Sep 17 00:00:00 2001 From: PiyushMalik01 Date: Sun, 1 Feb 2026 05:59:32 +0530 Subject: [PATCH 1/3] Improved error message when Jenkins root URL is not configured --- .../jenkins/plugins/mcp/server/tool/McpToolWrapper.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java b/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java index c4438eba..589ee472 100644 --- a/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java +++ b/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java @@ -228,7 +228,15 @@ String getToolDescription() { return getToolName(); } + private static void ensureRootUrlConfigured() { + if (Jenkins.get().getRootUrl() == null) { + throw new IllegalStateException( + "The Jenkins root URL is not configured. Please set it in 'Manage Jenkins -> Configure System' to use MCP tools."); + } + } + McpSchema.CallToolResult toMcpResult(Object result) { + ensureRootUrlConfigured(); var builder = new ToolResponse.ToolResponseBuilder().status(ToolResponse.Status.COMPLETED); From b3ccc7050c173a7f84b0aaed770f0ddfa2dd74ee Mon Sep 17 00:00:00 2001 From: PiyushMalik01 Date: Sun, 1 Feb 2026 16:41:31 +0530 Subject: [PATCH 2/3] Fail early during MCP tool invocation when Jenkins root URL is missing --- .../io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java b/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java index 589ee472..09f82260 100644 --- a/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java +++ b/src/main/java/io/jenkins/plugins/mcp/server/tool/McpToolWrapper.java @@ -236,8 +236,6 @@ private static void ensureRootUrlConfigured() { } McpSchema.CallToolResult toMcpResult(Object result) { - ensureRootUrlConfigured(); - var builder = new ToolResponse.ToolResponseBuilder().status(ToolResponse.Status.COMPLETED); if (result == null) { @@ -279,6 +277,7 @@ private McpSchema.CallToolResult call(McpTransportContext mcpTransportContext, M var jenkinsMcpContext = JenkinsMcpContext.get()) { // need Jenkins.READ at least Jenkins.get().checkPermission(Jenkins.READ); + ensureRootUrlConfigured(); if (log.isTraceEnabled()) { log.trace( "Tool call: {} as user '{}', arguments: {}", From 0d0d2d6bb53ac94dd9c6e57c016d3ddaa568a817 Mon Sep 17 00:00:00 2001 From: PiyushMalik01 Date: Sun, 1 Feb 2026 17:00:20 +0530 Subject: [PATCH 3/3] Document Jenkins root URL requirement for MCP tools --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 62145999..86cc89c9 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,20 @@ When enforcing the validation, the header value must match the configured Jenkin If receiving the header is mandatory the system property `io.jenkins.plugins.mcp.server.Endpoint.requireOriginHeader=true` will make it mandatory as well. +#### Jenkins Root URL Configuration + +MCP tools rely on the Jenkins root URL being correctly configured. This is required for generating accurate links within tool responses and for the proper functioning of certain features (for example, origin header validation). + +If the Jenkins root URL is not configured, MCP tool invocations will fail immediately with a clear error message explaining how to resolve the issue. + +To configure the Jenkins root URL: + +1. Navigate to **Manage Jenkins** in your Jenkins instance. +2. Go to **Configure System**. +3. Locate the **Jenkins URL** field and enter the full URL of your Jenkins instance (for example, `http://your-jenkins.example.com/`). +4. Click **Save**. + + #### Transport Endpoints The MCP Server plugin provides three transport endpoints, all enabled by default: