Skip to main content
Glama
mcpland
by mcpland

jenkins-mcp

Node CI npm license

A Model Context Protocol (MCP) server that provides AI assistants with full access to Jenkins CI/CD systems. Built with TypeScript and Node.js, it enables Claude, Cursor, and other MCP-compatible clients to query, manage, and control Jenkins jobs, builds, nodes, and queues through natural language.

Table of Contents

Related MCP server: Jenkins MCP Server

Features

  • 23 MCP Tools — Full Jenkins automation: jobs, builds, nodes, and queues

  • 3 Transport Modesstdio, sse, and streamable-http for different deployment scenarios

  • Read-Only Mode — Restrict to safe, read-only operations for controlled environments

  • Per-Request Auth — HTTP header-based Jenkins auth for multi-user/multi-tenant setups

  • SSL Configuration — Toggle SSL certificate verification for self-signed certs

  • Session Singleton — Reuse Jenkins client connections within a session for efficiency

  • CSRF Protection — Automatic crumb/token handling for Jenkins security

  • Folder Support — Full support for nested Jenkins folders and multi-branch pipelines

  • TypeScript Strict Mode — Fully typed codebase with strict compiler checks

Usage

MCP Client

Add the following to your MCP client configuration file:

{
  "mcpServers": {
    "jenkins": {
      "command": "npx",
      "args": [
        "jenkins-mcp",
        "--jenkins-url",
        "https://jenkins.example.com",
        "--jenkins-username",
        "your-username",
        "--jenkins-password",
        "your-api-token"
      ]
    }
  }
}

Claude Code

claude mcp add jenkins -- npx jenkins-mcp \
  --jenkins-url https://jenkins.example.com \
  --jenkins-username your-username \
  --jenkins-password your-api-token

Cursor

Add to your Cursor MCP settings (.cursor/mcp.json):

{
  "mcpServers": {
    "jenkins": {
      "command": "npx",
      "args": [
        "jenkins-mcp",
        "--jenkins-url",
        "https://jenkins.example.com",
        "--jenkins-username",
        "your-username",
        "--jenkins-password",
        "your-api-token"
      ]
    }
  }
}

Read-Only Mode

For safety in production environments, use --read-only to disable all write operations:

{
  "mcpServers": {
    "jenkins": {
      "command": "npx",
      "args": [
        "jenkins-mcp",
        "--read-only",
        "--jenkins-url",
        "https://jenkins.example.com",
        "--jenkins-username",
        "your-username",
        "--jenkins-password",
        "your-api-token"
      ]
    }
  }
}

Configuration

Jenkins-MCP can be configured through CLI arguments, environment variables, or HTTP headers (for HTTP transports).

CLI Options

jenkins-mcp [options]

Option

Description

Default

--jenkins-url

Jenkins server URL

--jenkins-username

Jenkins username

--jenkins-password

Jenkins password or API token

--jenkins-timeout

API request timeout in seconds

5

--jenkins-verify-ssl / --no-jenkins-verify-ssl

Verify SSL certificates

true

--jenkins-session-singleton / --no-jenkins-session-singleton

Reuse Jenkins client within session

true

--read-only

Only register read-only tools

false

--allow-full-console-output

Register the unsafe raw full-console-output tool

false

--transport

Transport mode: stdio | sse | streamable-http

stdio

--host

Host for HTTP transports

0.0.0.0

--port

Port for HTTP transports

9887

Environment Variables

Jenkins-MCP reads configuration from process environment variables. It does not auto-load .env files by itself.

If you use a local .env file, load it before starting the server (for example: set -a; source .env; set +a), then run jenkins-mcp.

Example .env values:

# Jenkins server URL
jenkins_url=https://jenkins.example.com/

# Jenkins basic auth
jenkins_username=your-username
jenkins_password=your-api-token

# Optional runtime settings
jenkins_timeout=5
jenkins_verify_ssl=true
jenkins_session_singleton=true

HTTP Headers (HTTP Transports Only)

When using sse or streamable-http transport, Jenkins credentials can be provided per-request via HTTP headers. This enables multi-user scenarios where different requests authenticate against different Jenkins instances.

Header

Description

x-jenkins-url

Jenkins server URL

x-jenkins-username

Jenkins username

x-jenkins-password

Jenkins password or API token

Each provided header overrides the corresponding environment variable for that request. Missing header values fall back to environment configuration.

Available Tools

Job / Item Tools

Tool

Description

Parameters

Read-Only

get_all_items

Get all jobs and folders from Jenkins

Yes

get_item

Get a specific job or folder by full name

fullname

Yes

get_item_config

Get job configuration XML

fullname

Yes

set_item_config

Update job configuration XML

fullname, config_xml

No

query_items

Search items with regex filters

class_pattern?, fullname_pattern?, color_pattern?

Yes

build_item

Trigger a job build

fullname, build_type, params?

No

Build Tools

Tool

Description

Parameters

Read-Only

get_build

Get build details

fullname, number?

Yes

get_build_console_tail

Get the recent tail of build console output

fullname, number?, max_bytes?

Yes

get_build_console_chunk

Read incremental console output by offset

fullname, start, number?, max_bytes?

Yes

search_build_console

Search console output incrementally with excerpts

fullname, query, number?, max_bytes?, ...

Yes

get_build_failure_excerpt

Get focused failure excerpts and test hints via incremental scan

fullname, number?, max_bytes?, max_excerpts?

Yes

get_build_console_output

Get raw full console log output

fullname, number?

Yes

get_build_test_report

Get test results report

fullname, number?

Yes

get_build_scripts

Extract build scripts (for replay)

fullname, number?

Yes

get_running_builds

Get all currently running builds

Yes

stop_build

Stop a running build

fullname, number

No

For large logs, prefer get_build_console_tail -> search_build_console -> get_build_console_chunk. get_build_console_output is disabled by default and only registered when --allow-full-console-output is set. Large-log helper tools enforce server-side byte ceilings even if the caller asks for more, and search-style tools scan logs incrementally instead of fetching consoleText.

For a failed build, prefer this sequence:

  1. get_build to confirm result, building, and the target build number.

  2. get_build_failure_excerpt to get focused failure snippets plus failing test hints.

  3. search_build_console with anchors such as Caused by:, ERROR, FAILED, or a failing test name.

  4. get_build_console_chunk to continue reading from a returned nextStart offset when the first excerpt is not enough.

  5. get_build_console_output only when raw full log export is explicitly needed.

For a running build, prefer this sequence:

  1. get_build to confirm the build is still running.

  2. get_build_console_tail to inspect the latest output window.

  3. search_build_console for known error anchors in the recent window.

  4. get_build_console_chunk with the last nextStart value to keep polling without rereading old output.

Node Tools

Tool

Description

Parameters

Read-Only

get_all_nodes

Get all compute nodes

Yes

get_node

Get a specific node with executor info

name

Yes

get_node_config

Get node configuration XML

name

Yes

set_node_config

Update node configuration XML

name, config_xml

No

Queue Tools

Tool

Description

Parameters

Read-Only

get_all_queue_items

Get all items waiting in the queue

Yes

get_queue_item

Get a specific queue item by ID

id

Yes

cancel_queue_item

Cancel a queued item

id

No

Tools marked Read-Only: No are only available when --read-only is not set.

Transport Modes

stdio (Default)

Standard input/output transport for direct MCP client integration. This is the recommended mode for Claude Desktop, Cursor, and other desktop MCP clients.

jenkins-mcp --transport stdio \
  --jenkins-url https://jenkins.example.com \
  --jenkins-username user --jenkins-password token

SSE (Server-Sent Events)

HTTP-based transport using Server-Sent Events. Suitable for web-based clients or remote access scenarios.

jenkins-mcp --transport sse \
  --host 127.0.0.1 --port 9887 \
  --jenkins-url https://jenkins.example.com \
  --jenkins-username user --jenkins-password token
  • SSE endpoint: GET /sse — establishes an SSE connection and returns a session

  • Message endpoint: POST /message?sessionId=<id> — sends messages to the session

Streamable HTTP

Session-based HTTP MCP transport over /mcp. Sessions are initialized via MCP initialize, then correlated with mcp-session-id in follow-up requests.

jenkins-mcp --transport streamable-http \
  --host 127.0.0.1 --port 9887 \
  --jenkins-url https://jenkins.example.com \
  --jenkins-username user --jenkins-password token
  • MCP endpoint: POST /mcp — handles all MCP protocol messages

Architecture

┌─────────────────────────────────────────────────┐
│                  MCP Client                     │
│          (Claude, Cursor, etc.)                 │
└──────────────────┬──────────────────────────────┘
                   │  MCP Protocol
┌──────────────────▼──────────────────────────────┐
│              Transport Layer                    │
│      stdio │ SSE │ Streamable HTTP              │
├──────────────────┬──────────────────────────────┤
│           MCP Server (mcp.ts)                   │
│     Tool registration & error handling          │
├──────────────────┬──────────────────────────────┤
│          Tool Handlers                          │
│   item.ts │ build.ts │ node.ts │ queue.ts       │
├──────────────────┬──────────────────────────────┤
│         Jenkins REST Client                     │
│    HTTP requests, auth, CSRF, timeout           │
├──────────────────┬──────────────────────────────┤
│           Jenkins Server                        │
│         (REST API endpoint)                     │
└─────────────────────────────────────────────────┘

Key design patterns:

  • Dependency InjectionToolRuntime interface enables testable tool handlers

  • Session Management — HTTP transports map sessions to isolated runtime contexts

  • Per-Request Auth — HTTP headers override environment config for multi-tenant use

  • Automatic CSRF — Crumb tokens are fetched and cached transparently

Development

Scripts

Command

Description

pnpm dev

Start in watch mode (auto-reload on changes)

pnpm build

Build production bundle with tsup

pnpm test

Run tests with Vitest

pnpm test:watch

Run tests in watch mode

pnpm test:coverage

Run tests with coverage report

pnpm check

Run all checks: format, lint, typecheck, test, build

pnpm lint

Run ESLint

pnpm format

Format code with Prettier

pnpm commit

Interactive conventional commit with Commitizen

pnpm changeset

Create a changeset for release

License

MIT

A
license - permissive license
-
quality - not tested
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcpland/jenkins-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server