jenkins-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Host to bind for HTTP transport, default 0.0.0.0 | 0.0.0.0 |
| MCP_PORT | No | Port for HTTP transport, default 8765 | 8765 |
| GITLAB_URL | No | GitLab instance URL, e.g. https://gitlab.example.com | |
| JENKINS_URL | Yes | Jenkins base URL, e.g. https://jenkins.example.com | |
| GITLAB_TOKEN | No | GitLab access token with read_api; falls back to token in ~/.claude.json if unset | |
| JENKINS_USER | Yes | Jenkins username | |
| JENKINS_TOKEN | Yes | Jenkins API token (not your password) | |
| MCP_TRANSPORT | No | Transport mode: stdio (default) or streamable-http | stdio |
| GITLAB_PROJECT | No | GitLab project path, e.g. your-group/your-project | |
| MCP_AUTH_TOKEN | No | Shared bearer token for HTTP endpoint; set when running HTTP to avoid unauthenticated access | |
| JENKINS_MCP_CONFIG | No | Path to job mapping config file, defaults to ./config.json | ./config.json |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_jobsA | List Jenkins jobs. Pass |
| get_job_infoA | Get details about a job: description, parameters (with defaults), last build numbers, health. |
| trigger_buildA | Trigger a build with raw Jenkins parameter names. If |
| get_queue_itemA | Poll a single queue item URL — returned by trigger_build / deploy when wait=False. |
| wait_for_buildA | Block polling a queue URL until a build number is assigned (or timeout). |
| get_build_infoB | Full info about a specific build: result, timestamp, duration, parameters, git. |
| get_build_logB | Console output for a build. Returns the last |
| list_recent_buildsB | List recent builds for a job with timestamps, durations, and results. |
| get_last_successful_buildA | Last SUCCESSFUL build with timestamp, duration, parameters, and git info. Primary use case: compare |
| get_queueA | List items currently waiting in the build queue. |
| is_deployed_sinceA | Check whether the job's last successful build ran AFTER a given ISO timestamp. Intended for: "was this GitLab MR (merged at ) deployed?" Accepts ISO 8601 like '2026-04-24T10:15:00+00:00' or '2026-04-24T10:15:00Z'. |
| list_deploymentsA | List deployment-type jobs grouped by environment, with last build time + status. Use this to discover what you can deploy. Returns groups: dev, stage, automation, utility, other. |
| resolve_job_nameA | Given a rough name ('dev backend'), show the matched job and close candidates. |
| deployA | High-level deploy. Maps friendly args to the job's actual Jenkins parameters. Args:
job: Deploy target (fuzzy). A bare environment defaults to the configured app job:
'dev' / 'deploy dev' → 'dev_app_deployment'; say 'dev backend' for the
backend job. Other job names resolve by fuzzy match.
branch: Git branch to deploy. Sets whichever branch parameter the job defines (see config).
tickets: Ticket URL(s) for the deployment purpose. Multiple URLs may be passed
comma-separated ('url1, url2'); they are normalized to a comma-joined list.
install_dependencies: If True, sets INSTALL_BE_REQUIREMENTS + INSTALL_FE_PACKAGES (whichever exist).
use_server_secrets: Sets USE_SECRETS_FROM_SERVER.
config_branch: Sets CONFIGURATION_MANAGEMENT_BRANCH. Default is already 'main' on most jobs.
use_dummy_purpose: When the job mandates a deployment purpose and the user has no
ticket URL, set this True to deploy with the placeholder purpose
( Mandatory deployment purpose: if the resolved job enforces a non-empty purpose
( Merge-request URL guard: the purpose should be ticket URL(s). If any supplied URL is a
merge request ( Returns the trigger result with |
| deploy_ticketsA | One-shot deploy by ticket URL(s) + environment. Use when the user says things like:
Args: tickets: Ticket URL, or multiple URLs (comma, semicolon, or whitespace-separated). environment: 'dev' / 'stage' (aliases: 'development', 'staging', 'stg'). scope: 'app' (combined FE+BE, default) or 'backend' (backend-only). branch: Optional git branch override. If omitted, Jenkins uses the job's default ('dev' for dev jobs, 'stage' for stage jobs). install_dependencies: Optional override for INSTALL_BE_REQUIREMENTS / INSTALL_FE_PACKAGES. wait: Poll the queue until a build number is assigned. timeout: Max seconds to wait for the queue→build transition. |
| get_ticket_mrsA | Find MRs linked to a ticket URL (matched in MR title/description). Args: ticket_url: Full URL of the GitLab ticket/issue. state: 'all' | 'opened' | 'merged' | 'closed'. Default 'all'. |
| is_ticket_deployedA | Verify whether a ticket's merged MRs are deployed on dev or stage. For each merged MR:
Overall ticket is "deployed" only when every merged MR is fully covered. Un-merged MRs are reported separately. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools target distinct resources, but there is real overlap among queue-related tools (get_queue_item vs wait_for_build vs get_queue) and deploy helpers (deploy vs deploy_tickets vs trigger_build). The detailed descriptions help disambiguate, but some tools could still be confusing to an agent.
Tool names use consistent snake_case and mostly follow a verb_noun pattern: list_* and get_* for reads, trigger_build, deploy, resolve_job_name for actions. The mix of list/get and imperative verbs is minor and still predictable.
17 tools is slightly above the ideal 3-15 range, but the count is justified by combining core Jenkins introspection with deployment-specific and ticket-verification workflows. Each tool has a reasonably distinct niche.
The toolset covers job discovery, build triggering, queue monitoring, build results, logs, deployment configuration, and ticket-based deployment verification. Minor gaps such as cancel/abort build or job CRUD exist, but the core CI/CD and deployment workflows are well covered.