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
Maintenance
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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