jenkins-mcp
Provides tools for managing Jenkins jobs, builds, nodes, and queues through the Jenkins API, enabling querying, triggering, and controlling Jenkins CI/CD pipelines.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jenkins-mcplist all Jenkins jobs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jenkins-mcp
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 Modes —
stdio,sse, andstreamable-httpfor different deployment scenariosRead-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-tokenCursor
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 server URL | — |
| Jenkins username | — |
| Jenkins password or API token | — |
| API request timeout in seconds |
|
| Verify SSL certificates |
|
| Reuse Jenkins client within session |
|
| Only register read-only tools |
|
| Register the unsafe raw full-console-output tool |
|
| Transport mode: |
|
| Host for HTTP transports |
|
| Port for HTTP transports |
|
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=trueHTTP 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 |
| Jenkins server URL |
| Jenkins username |
| 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 jobs and folders from Jenkins | — | Yes |
| Get a specific job or folder by full name |
| Yes |
| Get job configuration XML |
| Yes |
| Update job configuration XML |
| No |
| Search items with regex filters |
| Yes |
| Trigger a job build |
| No |
Build Tools
Tool | Description | Parameters | Read-Only |
| Get build details |
| Yes |
| Get the recent tail of build console output |
| Yes |
| Read incremental console output by offset |
| Yes |
| Search console output incrementally with excerpts |
| Yes |
| Get focused failure excerpts and test hints via incremental scan |
| Yes |
| Get raw full console log output |
| Yes |
| Get test results report |
| Yes |
| Extract build scripts (for replay) |
| Yes |
| Get all currently running builds | — | Yes |
| Stop a running build |
| 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:
get_buildto confirmresult,building, and the target build number.get_build_failure_excerptto get focused failure snippets plus failing test hints.search_build_consolewith anchors such asCaused by:,ERROR,FAILED, or a failing test name.get_build_console_chunkto continue reading from a returnednextStartoffset when the first excerpt is not enough.get_build_console_outputonly when raw full log export is explicitly needed.
For a running build, prefer this sequence:
get_buildto confirm the build is still running.get_build_console_tailto inspect the latest output window.search_build_consolefor known error anchors in the recent window.get_build_console_chunkwith the lastnextStartvalue to keep polling without rereading old output.
Node Tools
Tool | Description | Parameters | Read-Only |
| Get all compute nodes | — | Yes |
| Get a specific node with executor info |
| Yes |
| Get node configuration XML |
| Yes |
| Update node configuration XML |
| No |
Queue Tools
Tool | Description | Parameters | Read-Only |
| Get all items waiting in the queue | — | Yes |
| Get a specific queue item by ID |
| Yes |
| Cancel a queued item |
| No |
Tools marked Read-Only: No are only available when
--read-onlyis 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 tokenSSE (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 tokenSSE endpoint:
GET /sse— establishes an SSE connection and returns a sessionMessage 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 tokenMCP 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 Injection —
ToolRuntimeinterface enables testable tool handlersSession 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 |
| Start in watch mode (auto-reload on changes) |
| Build production bundle with tsup |
| Run tests with Vitest |
| Run tests in watch mode |
| Run tests with coverage report |
| Run all checks: format, lint, typecheck, test, build |
| Run ESLint |
| Format code with Prettier |
| Interactive conventional commit with Commitizen |
| Create a changeset for release |
License
This server cannot be installed
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