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
访问服务器

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

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选