jenkins-mcp
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-mcpDeploy the backend job to production"
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 single-file MCP server that exposes a Jenkins instance (plus a thin GitLab layer) as tools an LLM can call. It lets Claude Code — or any MCP client — list jobs, trigger and watch deployments, read build logs, and answer "is this ticket deployed yet?" without anyone touching the Jenkins UI.
Built on FastMCP from the mcp SDK. Python ≥ 3.10. One module: server.py.
What it can do
The tools are layered — higher tiers compose the lower ones.
Low-level Jenkins
Tool | Purpose |
| List jobs (with status) at the root or in a folder |
| Job details: parameters (with defaults/types), last build numbers, health |
| Start a build with raw Jenkins parameter names |
| Inspect the build queue |
| Block until a queued item gets a build number |
| Result, timestamp, duration, parameters, git revision of a build |
| Console output (tail) for a build |
| Recent builds for a job |
| Last green build of a job |
| Did a build run after a given timestamp? |
High-level deploy (friendly args → whatever raw params the job actually defines)
Tool | Purpose |
| Deploy a job by |
| Deploy by environment + scope from a set of ticket URLs |
| The configured |
| Fuzzy-resolve a rough name ( |
GitLab ticket verification
Tool | Purpose |
| Find MRs linked to a ticket |
| Check whether a ticket's merge commits are in the deployed branch tip |
Related MCP server: MCP-Jenkins
Prerequisites
Python ≥ 3.10
Network access to your Jenkins controller (and to your GitLab instance for the ticket tools)
A Jenkins API token (Jenkins → user → Configure → API Token)
A GitLab access token with
read_apion the relevant project (only needed for the ticket-deployment tools)
Configuration
Two pieces: credentials in .env, and your site's job mapping in config.json.
Credentials
Copy the template and fill it in. .env is git-ignored — never commit it.
cp .env.example .envVariable | Required | Notes |
| yes | e.g. |
| yes | Your Jenkins username |
| yes | Jenkins API token (not your password) |
| for GitLab tools | e.g. |
| for GitLab tools | e.g. |
| for GitLab tools | Falls back to a token found in |
| no | Path to the job mapping. Defaults to |
| hosted mode |
|
| hosted mode | Defaults |
| hosted mode | Shared bearer token for the HTTP endpoint. Set this when running HTTP — without it the endpoint is unauthenticated and the server logs a warning |
Generate a bearer token with:
python -c "import secrets; print(secrets.token_urlsafe(32))"Job mapping
The Jenkins tools are generic. The deploy tools need to know your job names and the
parameter names those jobs define:
cp config.example.json config.json # then edit; config.json is git-ignoredenv_jobs maps "<environment>/<scope>" to a Jenkins job name; param_map maps friendly
argument names to the raw Jenkins parameters to set. Without a config file the low-level
Jenkins tools still work and deploy reports that no mapping is configured.
Setup A — local (stdio)
Run the server as a subprocess your MCP client spawns over stdio. Simplest for single-user use.
python3 -m venv .venv
./.venv/bin/pip install -e .
cp .env.example .env # then edit
cp config.example.json config.json # then edit
./.venv/bin/python server.py # smoke test — Ctrl-C to stopRegister it with your MCP client. For Claude Code, add to .mcp.json or ~/.claude.json:
{
"mcpServers": {
"jenkins-mcp": {
"command": "/absolute/path/to/jenkins-mcp/.venv/bin/python",
"args": ["/absolute/path/to/jenkins-mcp/server.py"]
}
}
}Leave MCP_TRANSPORT unset (defaults to stdio). The .env beside server.py supplies
the credentials.
Setup B — hosted (HTTP), shared by a team
Run it as a systemd service so everyone's client talks to one shared instance instead of
each person running their own.
git clone <your-fork-url> jenkins-mcp
cd jenkins-mcp
cp .env.example .env # set JENKINS_*, GITLAB_*, MCP_TRANSPORT, MCP_AUTH_TOKEN
cp config.example.json config.json # set your job mapping
bash deploy/install.sh # venv, systemd unit, startdeploy/install.sh is idempotent: it builds .venv, installs the package, copies
deploy/jenkins-mcp.service to /etc/systemd/system/, enables it and starts it. Edit the
unit's User and paths to suit your host — it ships pointing at /opt/jenkins-mcp.
For HTTP mode your .env needs:
MCP_TRANSPORT=streamable-http
MCP_HOST=0.0.0.0
MCP_PORT=8765
MCP_AUTH_TOKEN=<token from secrets.token_urlsafe(32)>Bind to 127.0.0.1 and front it with a reverse proxy if the host is reachable beyond your
trusted network.
Client config for the hosted server
{
"mcpServers": {
"jenkins-mcp": {
"type": "http",
"url": "http://your-server:8765/mcp",
"headers": { "Authorization": "Bearer <MCP_AUTH_TOKEN>" }
}
}
}Updating a hosted instance
The host runs from a git clone, so updates are pull-and-restart:
cd ~/jenkins-mcp
git pull
./.venv/bin/pip install -e . # only if dependencies changed
sudo systemctl restart jenkins-mcp.service
journalctl -u jenkins-mcp -f # watch it come back upTests
./.venv/bin/pip install -e ".[dev]"
./.venv/bin/python -m pytest -qThe suite covers CSRF crumb caching and 403 retry, deploy-target resolution, the deployment-purpose gate, and the pure helpers. It runs without a live Jenkins.
Notes
Jenkins ties each CSRF crumb to a session, so all traffic goes through one
requests.Session. A 403 on POST is retried exactly once with a fresh crumb.Job names are resolved with an exact → normalized → substring → close-match cascade against a 60-second-cached job list.
deployrefuses to run a job whoseDEPLOYMENT_PURPOSEparameter is a validating string until a purpose is supplied, and warns when the supplied URL looks like a merge request rather than a ticket.
License
MIT — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-quality-maintenanceA Model Context Protocol (MCP) server that enables AI tools like chatbots to interact with and control Jenkins, allowing users to trigger jobs, check build statuses, and perform other Jenkins operations through natural language.
- AlicenseBqualityDmaintenanceA server that enables interaction with Jenkins CI/CD pipelines from any compatible MCP client (like Claude Desktop), allowing users to manage jobs, builds, coverage reports, and other Jenkins functionality through natural language.1127MIT
- Alicense-qualityDmaintenanceEnterprise-grade MCP server for Jenkins CI/CD integration that enables AI assistants to diagnose build failures, analyze pipelines, and search logs through natural conversation.6GPL 3.0
- Flicense-qualityBmaintenanceEnables AI agents and external systems to programmatically trigger and monitor Jenkins jobs, retrieve build status and logs via MCP standards.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/Ibrahim-Noor/jenkins-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server