Jenkins CI/CD Skill
Purpose
Manage Jenkins CI/CD pipelines for network automation workflows. This skill provides operational workflows for monitoring job and build status, triggering builds with parameters, analyzing build logs for troubleshooting, and tracking SCM changes across Jenkins projects.
The Jenkins MCP server is an official Jenkins plugin running natively inside Jenkins via Streamable HTTP transport — netclaw connects to it as a remote HTTP client.
Golden Rule
Never trigger a build or modify build metadata without explicit operator confirmation. All write operations (triggerBuild, updateBuild) require human-in-the-loop approval per Constitution XIV. Always read current state before proposing any write action (Constitution II — Read-Before-Write).
Workflow 1: Pipeline and Build Monitoring (US1 — MVP)
Monitor Jenkins job status, build results, queue state, and pipeline run history.
Steps
List all jobs — Use getJobs with optional pagination (offset, limit) and regex name filter to discover available jobs.
Tool: getJobs
Parameters: { "nameFilter": "deploy-.*", "offset": 0, "limit": 25 }
Get job details — Use getJob with the full job name (supports folder paths like folder1/folder2/job-name) to retrieve job configuration, last build number, and health status.
Tool: getJob
Parameters: { "fullName": "network-automation/deploy-network-config" }
Get build details — Use getBuild with job name and build number to retrieve result, duration, timestamp, parameters, and causes.
Tool: getBuild
Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
Check queue status — Use getQueueItem to inspect queued build requests — waiting reason, position, estimated start time.
Tool: getQueueItem
Parameters: { "queueId": 1234 }
View pipeline run history — Use getPipelineRuns to list pipeline execution history with status, duration, and branch info.
Tool: getPipelineRuns
Parameters: { "jobFullName": "deploy-network-config" }
Example Prompts
- "Show me all Jenkins jobs"
- "What is the status of the last build for deploy-network-config?"
- "List all failed builds for job network-validation"
- "Are there any builds waiting in the queue?"
- "Show pipeline run history for deploy-network-config"
Workflow 2: Build Triggering and Tracking (US2)
Trigger new builds with parameters, track queue-to-build progression, and update build metadata. All write operations require operator confirmation.
Steps
Verify job exists and check parameters — Use getJob to confirm the job exists and inspect its parameter definitions before triggering (read-before-write, Constitution II).
Tool: getJob
Parameters: { "fullName": "deploy-network-config" }
→ Returns parameter definitions: BRANCH (String), DRY_RUN (Boolean), ENVIRONMENT (Choice)
Present parameters and confirm with operator — Display the job's parameter definitions and proposed values. Wait for explicit operator approval before proceeding (Constitution XIV — Human-in-the-Loop).
Confirmation prompt:
"Ready to trigger build for 'deploy-network-config' with parameters:
- BRANCH: main (String)
- DRY_RUN: true (Boolean)
- ENVIRONMENT: staging (Choice: [dev, staging, prod])
Proceed? [yes/no]"
Trigger the build — Use triggerBuild with the confirmed parameters. Supported parameter types: String, Boolean, Choice, Text, Password, Run.
Tool: triggerBuild
Parameters: {
"jobFullName": "deploy-network-config",
"parameters": [
{ "name": "BRANCH", "value": "main" },
{ "name": "DRY_RUN", "value": "true" },
{ "name": "ENVIRONMENT", "value": "staging" }
]
}
→ Returns queue item ID
Track queue progression — Use getQueueItem to monitor until the build starts, then switch to getBuild.
Tool: getQueueItem
Parameters: { "queueId": <returned-queue-id> }
→ When build starts, returns build number
Monitor build until completion — Use getBuild to poll build status until result is available.
Tool: getBuild
Parameters: { "jobFullName": "deploy-network-config", "buildNumber": <build-number> }
→ Result: SUCCESS | FAILURE | UNSTABLE | ABORTED | NOT_BUILT
Update build metadata (optional) — Use updateBuild to set a descriptive display name or mark the build as keep-forever. Requires confirmation.
Tool: updateBuild
Parameters: {
"jobFullName": "deploy-network-config",
"buildNumber": <build-number>,
"displayName": "Production Deploy - v2.4.1",
"keepLog": true
}
Example Prompts
- "Trigger a build for deploy-network-config with BRANCH=main"
- "Start job network-validation with DRY_RUN=true and ENVIRONMENT=staging"
- "Mark build #42 of deploy-network-config as keep-forever"
- "Track queue item 1234 until the build completes"
Workflow 3: Build Log Analysis (US3)
Retrieve and search build logs for troubleshooting failed builds, identifying errors, and diagnosing pipeline issues.
Steps
Retrieve build log — Use getBuildLog with job name and build number. For large logs, use the start offset parameter for pagination.
Tool: getBuildLog
Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
→ Returns console output text
Paginate large logs — If the log is truncated, use the start offset to retrieve subsequent sections.
Tool: getBuildLog
Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42, "start": 50000 }
→ Returns output starting from byte offset 50000
Search logs by pattern — Use searchBuildLog with a regex pattern to find specific lines (errors, warnings, timeouts).
Tool: searchBuildLog
Parameters: {
"jobFullName": "deploy-network-config",
"buildNumber": 42,
"pattern": "ERROR|FATAL|Exception"
}
→ Returns matching log lines
Retrieve pipeline-specific logs — Use getPipelineRunLog for pipeline jobs that produce structured run logs.
Tool: getPipelineRunLog
Parameters: { "jobFullName": "deploy-network-config", "runId": "42" }
Example Prompts
- "Show me the build log for deploy-network-config build #42"
- "Show the last 100 lines of the build log for network-validation #15"
- "Search the build log for 'ERROR' in deploy-network-config build #42"
- "Find timeout messages in the latest build of network-validation"
- "Show the pipeline log for deploy-network-config run #42"
Handling Large Logs
Build logs can be very large (hundreds of MB for verbose builds). Guidelines:
- Start with
searchBuildLog to find relevant sections before retrieving the full log
- Use
start offset pagination to retrieve specific sections
- For troubleshooting, search for
ERROR, FATAL, Exception, FAILURE, or timeout first
Workflow 4: SCM Change Tracking (US4)
Track source code changes associated with Jenkins jobs and builds — correlate builds with commits, find jobs by repository, and review change history.
Steps
Get job SCM configuration — Use getJobScm to view the repository URL, branch spec, and polling configuration for a job.
Tool: getJobScm
Parameters: { "jobFullName": "deploy-network-config" }
→ Returns: repository URL, branches, credential ID, polling config
Get build SCM details — Use getBuildScm to see the exact revision (commit hash) and branch checked out for a specific build.
Tool: getBuildScm
Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
→ Returns: revision hash, branch name at build time
List change sets (commits) — Use getBuildChangeSets to see all commits included in a build — author, message, timestamp, and affected files.
Tool: getBuildChangeSets
Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
→ Returns: list of change sets with commit details
Find jobs by repository — Use findJobsWithScmUrl to discover all Jenkins jobs configured to build from a specific repository.
Tool: findJobsWithScmUrl
Parameters: { "scmUrl": "https://github.com/org/network-configs" }
→ Returns: list of jobs using this repository
Example Prompts
- "What repository does deploy-network-config use?"
- "Show me the commits in build #42 of deploy-network-config"
- "Which commit triggered build #42?"
- "Find all Jenkins jobs that use the network-configs repository"
- "What files changed in the latest build of deploy-network-config?"
Workflow 5: Health Check and Setup Verification (US5)
Verify Jenkins connectivity, authentication, and instance health. Recommended as a pre-flight check before first use and as a diagnostic tool when other operations fail.
Steps
Verify authentication — Use whoAmI to confirm the connection works and inspect the authenticated user's identity and permissions.
Tool: whoAmI
Parameters: {}
→ Returns: user name, authorities/permissions list
Check instance health — Use getStatus to verify Jenkins is healthy and operational.
Tool: getStatus
Parameters: {}
→ Returns: mode (NORMAL/SHUTDOWN), version, quietingDown status
When to Use
- First-time setup: Run both
whoAmI and getStatus to validate the connection
- Authentication failures: Run
whoAmI to diagnose credential issues
- Unexpected errors: Run
getStatus to check if Jenkins is shutting down or in maintenance mode
- Permission problems: Run
whoAmI to verify the user has required authorities
Example Prompts
- "Check my Jenkins connection"
- "Who am I on Jenkins?"
- "Is Jenkins healthy?"
- "Verify Jenkins is running and I have access"
GAIT Audit Logging
All Jenkins interactions are logged to the GAIT audit trail via gait_mcp tools at the skill invocation level (per Constitution IV — GAIT Audit Trail).
Logging Pattern
For each Jenkins operation:
Before invocation: Log the tool name and parameters being sent
gait_mcp.log_action({
action: "jenkins_tool_call",
tool: "getJobs",
parameters: { "nameFilter": "deploy-.*" },
status: "initiated"
})
After invocation: Log the result summary
gait_mcp.log_action({
action: "jenkins_tool_call",
tool: "getJobs",
result_summary: "Returned 12 jobs matching filter",
status: "completed"
})
For write operations: Log the confirmation step
gait_mcp.log_action({
action: "jenkins_write_confirmation",
tool: "triggerBuild",
parameters: { "jobFullName": "deploy-network-config", "parameters": [...] },
operator_confirmed: true,
status: "approved"
})
What Gets Logged
- Tool name and parameters for every invocation
- Result summary (success/failure, record count, key identifiers)
- Operator confirmation for write operations
- Error details when operations fail
Integration with Other Skills
- suzieq-observability: After a network deployment build completes, use SuzieQ to validate network state post-change
- aci-change-deploy: Coordinate ACI changes with Jenkins pipeline execution — trigger build after change approval
- gitlab-devops: Correlate GitLab merge requests with Jenkins builds via SCM change tracking
- canvas-a2ui: Visualize build status trends and pipeline health in network dashboards
- gait_mcp: All Jenkins operations are audit-logged for compliance and traceability
Important Rules
- Read-before-write: Always use
getJob to verify a job exists and inspect its parameters before triggerBuild or updateBuild
- Human-in-the-loop: All write operations require explicit operator confirmation — never auto-trigger builds
- Folder-aware job names: Jenkins jobs in folders use path notation (e.g.,
folder1/folder2/job-name) — always use the full name
- Parameterized builds: Check parameter definitions via
getJob before triggering — pass correct types (String, Boolean, Choice, Text, Password, Run)
- Large log handling: Use
searchBuildLog before full log retrieval to avoid overwhelming context with large console output
- GAIT logging: Every Jenkins tool invocation must be logged to the audit trail
- Credential safety: Never log or display raw API tokens — credentials are managed via environment variables (Constitution XIII)
- Remote server: This MCP server is a remote HTTP service — connectivity depends on network access to the Jenkins instance
1---
2name: jenkins-cicd
3description: Jenkins CI/CD pipeline management — monitor builds, trigger pipelines, analyze logs, and track SCM changes for network automation workflows.
4version: "1.0"
5license: Apache-2.0
6tags:
7 - cicd
8 - jenkins
9 - pipelines
10 - builds
11 - devops
12metadata:
13 mcp_servers:
14 - jenkins-mcp
15 tools_used:
16 - getJob
17 - getJobs
18 - triggerBuild
19 - getQueueItem
20 - getBuild
21 - updateBuild
22 - getBuildLog
23 - searchBuildLog
24 - getJobScm
25 - getBuildScm
26 - getBuildChangeSets
27 - findJobsWithScmUrl
28 - whoAmI
29 - getStatus
30 - getPipelineRuns
31 - getPipelineRunLog
32 transport: remote-http
33 auth: basic
34---
35
36# Jenkins CI/CD Skill
37
38## Purpose
39
40Manage Jenkins CI/CD pipelines for network automation workflows. This skill provides operational workflows for monitoring job and build status, triggering builds with parameters, analyzing build logs for troubleshooting, and tracking SCM changes across Jenkins projects.
41
42The Jenkins MCP server is an official Jenkins plugin running natively inside Jenkins via Streamable HTTP transport — netclaw connects to it as a remote HTTP client.
43
44## Golden Rule
45
46**Never trigger a build or modify build metadata without explicit operator confirmation.** All write operations (`triggerBuild`, `updateBuild`) require human-in-the-loop approval per Constitution XIV. Always read current state before proposing any write action (Constitution II — Read-Before-Write).
47
48---
49
50## Workflow 1: Pipeline and Build Monitoring (US1 — MVP)
51
52Monitor Jenkins job status, build results, queue state, and pipeline run history.
53
54### Steps
55
561. **List all jobs** — Use `getJobs` with optional pagination (`offset`, `limit`) and regex name filter to discover available jobs.
57 ```
58 Tool: getJobs
59 Parameters: { "nameFilter": "deploy-.*", "offset": 0, "limit": 25 }
60 ```
61
622. **Get job details** — Use `getJob` with the full job name (supports folder paths like `folder1/folder2/job-name`) to retrieve job configuration, last build number, and health status.
63 ```
64 Tool: getJob
65 Parameters: { "fullName": "network-automation/deploy-network-config" }
66 ```
67
683. **Get build details** — Use `getBuild` with job name and build number to retrieve result, duration, timestamp, parameters, and causes.
69 ```
70 Tool: getBuild
71 Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
72 ```
73
744. **Check queue status** — Use `getQueueItem` to inspect queued build requests — waiting reason, position, estimated start time.
75 ```
76 Tool: getQueueItem
77 Parameters: { "queueId": 1234 }
78 ```
79
805. **View pipeline run history** — Use `getPipelineRuns` to list pipeline execution history with status, duration, and branch info.
81 ```
82 Tool: getPipelineRuns
83 Parameters: { "jobFullName": "deploy-network-config" }
84 ```
85
86### Example Prompts
87
88- "Show me all Jenkins jobs"
89- "What is the status of the last build for deploy-network-config?"
90- "List all failed builds for job network-validation"
91- "Are there any builds waiting in the queue?"
92- "Show pipeline run history for deploy-network-config"
93
94---
95
96## Workflow 2: Build Triggering and Tracking (US2)
97
98Trigger new builds with parameters, track queue-to-build progression, and update build metadata. All write operations require operator confirmation.
99
100### Steps
101
1021. **Verify job exists and check parameters** — Use `getJob` to confirm the job exists and inspect its parameter definitions before triggering (read-before-write, Constitution II).
103 ```
104 Tool: getJob
105 Parameters: { "fullName": "deploy-network-config" }
106 → Returns parameter definitions: BRANCH (String), DRY_RUN (Boolean), ENVIRONMENT (Choice)
107 ```
108
1092. **Present parameters and confirm with operator** — Display the job's parameter definitions and proposed values. Wait for explicit operator approval before proceeding (Constitution XIV — Human-in-the-Loop).
110 ```
111 Confirmation prompt:
112 "Ready to trigger build for 'deploy-network-config' with parameters:
113 - BRANCH: main (String)
114 - DRY_RUN: true (Boolean)
115 - ENVIRONMENT: staging (Choice: [dev, staging, prod])
116 Proceed? [yes/no]"
117 ```
118
1193. **Trigger the build** — Use `triggerBuild` with the confirmed parameters. Supported parameter types: String, Boolean, Choice, Text, Password, Run.
120 ```
121 Tool: triggerBuild
122 Parameters: {
123 "jobFullName": "deploy-network-config",
124 "parameters": [
125 { "name": "BRANCH", "value": "main" },
126 { "name": "DRY_RUN", "value": "true" },
127 { "name": "ENVIRONMENT", "value": "staging" }
128 ]
129 }
130 → Returns queue item ID
131 ```
132
1334. **Track queue progression** — Use `getQueueItem` to monitor until the build starts, then switch to `getBuild`.
134 ```
135 Tool: getQueueItem
136 Parameters: { "queueId": <returned-queue-id> }
137 → When build starts, returns build number
138 ```
139
1405. **Monitor build until completion** — Use `getBuild` to poll build status until result is available.
141 ```
142 Tool: getBuild
143 Parameters: { "jobFullName": "deploy-network-config", "buildNumber": <build-number> }
144 → Result: SUCCESS | FAILURE | UNSTABLE | ABORTED | NOT_BUILT
145 ```
146
1476. **Update build metadata (optional)** — Use `updateBuild` to set a descriptive display name or mark the build as keep-forever. Requires confirmation.
148 ```
149 Tool: updateBuild
150 Parameters: {
151 "jobFullName": "deploy-network-config",
152 "buildNumber": <build-number>,
153 "displayName": "Production Deploy - v2.4.1",
154 "keepLog": true
155 }
156 ```
157
158### Example Prompts
159
160- "Trigger a build for deploy-network-config with BRANCH=main"
161- "Start job network-validation with DRY_RUN=true and ENVIRONMENT=staging"
162- "Mark build #42 of deploy-network-config as keep-forever"
163- "Track queue item 1234 until the build completes"
164
165---
166
167## Workflow 3: Build Log Analysis (US3)
168
169Retrieve and search build logs for troubleshooting failed builds, identifying errors, and diagnosing pipeline issues.
170
171### Steps
172
1731. **Retrieve build log** — Use `getBuildLog` with job name and build number. For large logs, use the `start` offset parameter for pagination.
174 ```
175 Tool: getBuildLog
176 Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
177 → Returns console output text
178 ```
179
1802. **Paginate large logs** — If the log is truncated, use the `start` offset to retrieve subsequent sections.
181 ```
182 Tool: getBuildLog
183 Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42, "start": 50000 }
184 → Returns output starting from byte offset 50000
185 ```
186
1873. **Search logs by pattern** — Use `searchBuildLog` with a regex pattern to find specific lines (errors, warnings, timeouts).
188 ```
189 Tool: searchBuildLog
190 Parameters: {
191 "jobFullName": "deploy-network-config",
192 "buildNumber": 42,
193 "pattern": "ERROR|FATAL|Exception"
194 }
195 → Returns matching log lines
196 ```
197
1984. **Retrieve pipeline-specific logs** — Use `getPipelineRunLog` for pipeline jobs that produce structured run logs.
199 ```
200 Tool: getPipelineRunLog
201 Parameters: { "jobFullName": "deploy-network-config", "runId": "42" }
202 ```
203
204### Example Prompts
205
206- "Show me the build log for deploy-network-config build #42"
207- "Show the last 100 lines of the build log for network-validation #15"
208- "Search the build log for 'ERROR' in deploy-network-config build #42"
209- "Find timeout messages in the latest build of network-validation"
210- "Show the pipeline log for deploy-network-config run #42"
211
212### Handling Large Logs
213
214Build logs can be very large (hundreds of MB for verbose builds). Guidelines:
215- Start with `searchBuildLog` to find relevant sections before retrieving the full log
216- Use `start` offset pagination to retrieve specific sections
217- For troubleshooting, search for `ERROR`, `FATAL`, `Exception`, `FAILURE`, or `timeout` first
218
219---
220
221## Workflow 4: SCM Change Tracking (US4)
222
223Track source code changes associated with Jenkins jobs and builds — correlate builds with commits, find jobs by repository, and review change history.
224
225### Steps
226
2271. **Get job SCM configuration** — Use `getJobScm` to view the repository URL, branch spec, and polling configuration for a job.
228 ```
229 Tool: getJobScm
230 Parameters: { "jobFullName": "deploy-network-config" }
231 → Returns: repository URL, branches, credential ID, polling config
232 ```
233
2342. **Get build SCM details** — Use `getBuildScm` to see the exact revision (commit hash) and branch checked out for a specific build.
235 ```
236 Tool: getBuildScm
237 Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
238 → Returns: revision hash, branch name at build time
239 ```
240
2413. **List change sets (commits)** — Use `getBuildChangeSets` to see all commits included in a build — author, message, timestamp, and affected files.
242 ```
243 Tool: getBuildChangeSets
244 Parameters: { "jobFullName": "deploy-network-config", "buildNumber": 42 }
245 → Returns: list of change sets with commit details
246 ```
247
2484. **Find jobs by repository** — Use `findJobsWithScmUrl` to discover all Jenkins jobs configured to build from a specific repository.
249 ```
250 Tool: findJobsWithScmUrl
251 Parameters: { "scmUrl": "https://github.com/org/network-configs" }
252 → Returns: list of jobs using this repository
253 ```
254
255### Example Prompts
256
257- "What repository does deploy-network-config use?"
258- "Show me the commits in build #42 of deploy-network-config"
259- "Which commit triggered build #42?"
260- "Find all Jenkins jobs that use the network-configs repository"
261- "What files changed in the latest build of deploy-network-config?"
262
263---
264
265## Workflow 5: Health Check and Setup Verification (US5)
266
267Verify Jenkins connectivity, authentication, and instance health. Recommended as a pre-flight check before first use and as a diagnostic tool when other operations fail.
268
269### Steps
270
2711. **Verify authentication** — Use `whoAmI` to confirm the connection works and inspect the authenticated user's identity and permissions.
272 ```
273 Tool: whoAmI
274 Parameters: {}
275 → Returns: user name, authorities/permissions list
276 ```
277
2782. **Check instance health** — Use `getStatus` to verify Jenkins is healthy and operational.
279 ```
280 Tool: getStatus
281 Parameters: {}
282 → Returns: mode (NORMAL/SHUTDOWN), version, quietingDown status
283 ```
284
285### When to Use
286
287- **First-time setup**: Run both `whoAmI` and `getStatus` to validate the connection
288- **Authentication failures**: Run `whoAmI` to diagnose credential issues
289- **Unexpected errors**: Run `getStatus` to check if Jenkins is shutting down or in maintenance mode
290- **Permission problems**: Run `whoAmI` to verify the user has required authorities
291
292### Example Prompts
293
294- "Check my Jenkins connection"
295- "Who am I on Jenkins?"
296- "Is Jenkins healthy?"
297- "Verify Jenkins is running and I have access"
298
299---
300
301## GAIT Audit Logging
302
303All Jenkins interactions are logged to the GAIT audit trail via `gait_mcp` tools at the skill invocation level (per Constitution IV — GAIT Audit Trail).
304
305### Logging Pattern
306
307For each Jenkins operation:
308
3091. **Before invocation**: Log the tool name and parameters being sent
310 ```
311 gait_mcp.log_action({
312 action: "jenkins_tool_call",
313 tool: "getJobs",
314 parameters: { "nameFilter": "deploy-.*" },
315 status: "initiated"
316 })
317 ```
318
3192. **After invocation**: Log the result summary
320 ```
321 gait_mcp.log_action({
322 action: "jenkins_tool_call",
323 tool: "getJobs",
324 result_summary: "Returned 12 jobs matching filter",
325 status: "completed"
326 })
327 ```
328
3293. **For write operations**: Log the confirmation step
330 ```
331 gait_mcp.log_action({
332 action: "jenkins_write_confirmation",
333 tool: "triggerBuild",
334 parameters: { "jobFullName": "deploy-network-config", "parameters": [...] },
335 operator_confirmed: true,
336 status: "approved"
337 })
338 ```
339
340### What Gets Logged
341
342- Tool name and parameters for every invocation
343- Result summary (success/failure, record count, key identifiers)
344- Operator confirmation for write operations
345- Error details when operations fail
346
347---
348
349## Integration with Other Skills
350
351- **suzieq-observability**: After a network deployment build completes, use SuzieQ to validate network state post-change
352- **aci-change-deploy**: Coordinate ACI changes with Jenkins pipeline execution — trigger build after change approval
353- **gitlab-devops**: Correlate GitLab merge requests with Jenkins builds via SCM change tracking
354- **canvas-a2ui**: Visualize build status trends and pipeline health in network dashboards
355- **gait_mcp**: All Jenkins operations are audit-logged for compliance and traceability
356
357---
358
359## Important Rules
360
3611. **Read-before-write**: Always use `getJob` to verify a job exists and inspect its parameters before `triggerBuild` or `updateBuild`
3622. **Human-in-the-loop**: All write operations require explicit operator confirmation — never auto-trigger builds
3633. **Folder-aware job names**: Jenkins jobs in folders use path notation (e.g., `folder1/folder2/job-name`) — always use the full name
3644. **Parameterized builds**: Check parameter definitions via `getJob` before triggering — pass correct types (String, Boolean, Choice, Text, Password, Run)
3655. **Large log handling**: Use `searchBuildLog` before full log retrieval to avoid overwhelming context with large console output
3666. **GAIT logging**: Every Jenkins tool invocation must be logged to the audit trail
3677. **Credential safety**: Never log or display raw API tokens — credentials are managed via environment variables (Constitution XIII)
3688. **Remote server**: This MCP server is a remote HTTP service — connectivity depends on network access to the Jenkins instance