Model Context Protocol server for Jenkins integration with AI language models. Enables secure, contextual AI interactions with Jenkins tools while maintaining data privacy and security.
The server has 30 tools with mostly complete input schemas and descriptions, but there are significant issues with description quality, output schema documentation, and error handling guidance. Tool names follow verb_noun conventions well (get_, set_, build_, submit_, stop_, cancel_, query_, run_). Most tools have type-annotated parameters with descriptions. However, many descriptions are generic or lack actionable context for LLM selection. Output schemas are not documented, responses are inferred from API responses but not formally specified. Error handling lacks recovery guidance. The Groovy script execution tool (run_groovy_script) presents a CRITICAL security risk by accepting arbitrary code execution without documented sandboxing, rate limits, or confirmation patterns. The server demonstrates competent tool definition fundamentals but falls short of production-grade LLM-optimized tooling.
Build an item in Jenkins
Cancel a specific item in Jenkins queue by id
Get all items from Jenkins
Get all nodes from Jenkins
Get all installed plugins from Jenkins
Get all items in Jenkins queue
Get specific build info from Jenkins
CRITICAL SECURITY: run_groovy_script accepts arbitrary code execution without documented sandboxing, confirmation, rate limits, or audit trail. This is a catastrophic vulnerability for agent-driven execution.
Output schemas not documented. Tool descriptions describe what APIs return but do not specify structured response fields, types, or pagination behavior. LLMs cannot infer downstream parameter matching.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 41 | - | v1 |
Get the console output of a specific build in Jenkins
Get the parameters of a specific build in Jenkins
Get the scripts used in a specific build in Jenkins
Get the test report of a specific build in Jenkins
Get specific item from Jenkins
Get specific item config from Jenkins
Get the parameter definitions of a Jenkins job
Get a specific node from Jenkins. Contains executor about the node.
Get node config from Jenkins
Get the pending input steps of a specific build in Jenkins. A pipeline showing "Paused for Input" is waiting on an input step. Call this before submit_input to discover the input id and the parameter definitions the pipeline is waiting for. Only the given build is inspected. With number=None that is the job's last build, so a paused build that is no longer the most recent one is not found that way — locate it with get_running_builds and pass its number explicitly.
Get a specific plugin from Jenkins. Contains detailed information about the plugin, including dependencies when depth >= 2.
Get dependency graph for a specific plugin in Graphviz format. Recursively analyzes dependencies down to leaf nodes. Returns nodes and edges that can be used to generate a dependency graph.
Get plugins that can be downgraded. Returns plugins that have a backupVersion and can be rolled back.
Get all plugins with problems from Jenkins. These are plugins that have issues such as missing dependencies, incompatible versions, core version mismatch, or other configuration problems.
Get plugins that have available updates
Get a specific item in Jenkins queue by id
Get all running builds from Jenkins
Query items from Jenkins
Execute an arbitrary Groovy script on Jenkins. This tool provides access to Jenkins internal features that are not available via REST API.
Set specific item config in Jenkins
Set specific node config in Jenkins
Stop a specific build in Jenkins
Respond to a pipeline input step of a build that is paused for input in Jenkins
Generic descriptions lacking LLM-optimized context. Many tools ('get_build_test_report', 'get_build_parameters', 'get_item_config', 'get_node_config', 'get_all_items', 'get_all_nodes', 'get_all_queue_items') have descriptions under 100 chars that don't explain WHEN to use them or what data they unlock. Baseline for A+ is 50-200 chars with contextual guidance.
Error handling does not provide recovery guidance. Tool descriptions don't explain failure modes, when LLMs should retry, or what to try next. No documented error classes or actionable error messages in responses.
Pagination not documented for list operations. Tools like get_running_builds, get_all_items, get_all_nodes, get_all_plugins, get_all_queue_items lack documented limit, offset, or cursor parameters. Large result sets could exhaust context.
Destructive operations (stop_build, set_item_config, set_node_config, cancel_queue_item, run_groovy_script) lack confirmation or dry-run patterns. No warning in descriptions that these are irreversible or high-risk.
Parameter 'number' (build number) is not optional despite descriptions saying 'if None, get the last build'. This is vague, the description should explicitly state 'optional, defaults to latest build' and the schema should have type=integer with minumum=1.
Regex patterns (pattern parameter in get_build_console_output) are underdocumented. Description should provide format examples (e.g., 'ECMAScript regex, case-sensitive') and validation rules.
Missing rationale for related tools. Tools like get_pending_inputs and submit_input are well-described internally but lack guidance on their relationship and when to call one vs the other in sequence.
Data types not fully specified for complex parameters. 'parameters' in submit_input is type=object but lacks schema for expected keys/values. Config XML parameters (set_item_config, set_node_config) should specify XML validation rules or examples.