Skip to main content
Glama

list_db_nodes

Retrieve database nodes from Oracle Cloud Infrastructure compartments, with optional filtering by DB System to manage and monitor database resources.

Instructions

List DB Nodes in a compartment, optionally filtered by DB System. Note: compartment_id is always required by the SDK.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
compartment_idYes
db_system_idNo

Implementation Reference

  • Core implementation of list_db_nodes tool handler. Calls OCI DatabaseClient.list_db_nodes API with pagination, extracts and formats node details (id, db_system_id, hostname, vnic_id, lifecycle_state, storage size, time_created). Supports filtering by db_system_id or lists from all systems in compartment.
    def list_db_nodes( database_client: oci.database.DatabaseClient, db_system_id: Optional[str] = None, compartment_id: Optional[str] = None ) -> List[Dict[str, Any]]: """ List DB Nodes for a DB System, or for all DB Systems in a compartment. Always requires compartment_id for the SDK call. """ try: if not compartment_id: raise ValueError("compartment_id is required") nodes: List[Dict[str, Any]] = [] if db_system_id: # Correct usage: positional compartment_id + snake_case db_system_id resp = oci.pagination.list_call_get_all_results( database_client.list_db_nodes, compartment_id, db_system_id=db_system_id, ) for n in resp.data: nodes.append({ "id": n.id, "db_system_id": n.db_system_id, "hostname": getattr(n, "hostname", None), "vnic_id": getattr(n, "vnic_id", None), "lifecycle_state": n.lifecycle_state, "software_storage_size_in_gb": getattr(n, "software_storage_size_in_gb", None), "time_created": str(getattr(n, "time_created", "")), }) else: systems = list_db_systems(database_client, compartment_id) for sys in systems: resp = oci.pagination.list_call_get_all_results( database_client.list_db_nodes, compartment_id, db_system_id=sys["id"], ) for n in resp.data: nodes.append({ "id": n.id, "db_system_id": n.db_system_id, "hostname": getattr(n, "hostname", None), "vnic_id": getattr(n, "vnic_id", None), "lifecycle_state": n.lifecycle_state, "software_storage_size_in_gb": getattr(n, "software_storage_size_in_gb", None), "time_created": str(getattr(n, "time_created", "")), }) logger.info(f"Found {len(nodes)} DB Nodes") return nodes except Exception as e: logger.exception(f"Error listing DB Nodes: {e}") raise
  • MCP tool registration for "list_db_nodes". Uses @mcp.tool decorator on a wrapper function that injects oci_clients["database"] client and calls the core handler from dbsystems.py. Input schema inferred from signature: compartment_id (str, required), db_system_id (str, optional).
    @mcp.tool(name="list_db_nodes") @mcp_tool_wrapper( start_msg="Listing DB Nodes in compartment {compartment_id}...", error_prefix="Error listing DB Nodes" ) async def mcp_list_db_nodes(ctx: Context, compartment_id: str, db_system_id: Optional[str] = None) -> List[Dict[str, Any]]: """ List DB Nodes in a compartment, optionally filtered by DB System. Note: compartment_id is always required by the SDK. """ return list_db_nodes( oci_clients["database"], db_system_id=db_system_id, compartment_id=compartment_id, )

Latest Blog Posts

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/jopsis/mcp-server-oci'

If you have feedback or need assistance with the MCP directory API, please join our Discord server