get_all_items
Retrieve a complete list of all items from your Jenkins instance. Use this tool to enumerate all configured items for further processing.
Instructions
Get all items from Jenkins
Returns: A list of items
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- src/mcp_jenkins/server/item.py:10-17 (handler)The MCP tool handler 'get_all_items' decorated with @mcp.tool(tags=['read']). It calls jenkins(ctx).get_items() and returns a list of model dicts.
@mcp.tool(tags=['read']) async def get_all_items(ctx: Context) -> list[dict]: """Get all items from Jenkins Returns: A list of items """ return [item.model_dump(exclude_none=True) for item in jenkins(ctx).get_items()] - src/mcp_jenkins/server/item.py:1-8 (helper)Imports for the handler: xml.etree, Context from fastmcp, the jenkins helper from lifespan, and the mcp server instance for registration.
import xml.etree.ElementTree as ET from typing import Literal from fastmcp import Context from mcp_jenkins.core.lifespan import jenkins from mcp_jenkins.server import mcp - The 'get_items' method on the Jenkins class which implements the actual logic to fetch items by querying the Jenkins REST API and recursively traversing folders.
def get_items(self, *, folder_depth: int | None = None, folder_depth_per_request: int = 10) -> list[ItemType]: """Get items in the Jenkins instance up to a specified folder depth. Args: folder_depth: The maximum depth of folders to traverse. If None, traverses all levels. folder_depth_per_request: The depth of folders to request per API call. Returns: A list of ItemType objects representing the items. """ query = reduce( lambda q, _: f'jobs[url,color,name,{q}]', range(folder_depth_per_request), 'jobs', ) response = self.request('GET', rest_endpoint.ITEMS(folder='', query=query)) items = [] item_stack = [(0, [], response.json()['jobs'])] for level, path, level_items in item_stack: current_items = level_items if isinstance(level_items, list) else [level_items] for item in current_items: job_path = path + [item['name']] item.setdefault('fullname', '/'.join(job_path)) items.append(serialize_item(item)) children = item.get('jobs') if isinstance(children, list) and (folder_depth is None or level < folder_depth): item_stack.append((level + 1, job_path, children)) return items - REST endpoint definition for ITEMS: '{folder}/api/json?tree={query}' used by get_items to query Jenkins.
ITEMS = RestEndpoint('{folder}/api/json?tree={query}') - src/mcp_jenkins/server/__init__.py:30-34 (registration)MCP server instance (JenkinsMCP) is created at line 30, and item module (containing get_all_items) is imported at line 34 to register tools via the decorator.
mcp = JenkinsMCP('mcp-jenkins', lifespan=lifespan) # Import tool modules to register them with the MCP server # This must happen after mcp is created so the @mcp.tool() decorators can reference it from mcp_jenkins.server import build, item, node, plugin, queue, view # noqa: F401, E402