jenkins-mcp

jenkins-mcp

Provides AI assistants with full access to Jenkins CI/CD systems, enabling querying, managing, and controlling Jenkins jobs, builds, nodes, and queues through natural language.

Category
Visit Server

README

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

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.

Recommended Troubleshooting Flow

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured