Skip to main content
Glama

get_browser_tree_tool

Retrieve a structured hierarchical tree of browser categories from Ableton Live to organize and navigate music production resources efficiently using the AbletonMCP server.

Instructions

Get a hierarchical tree of browser categories from Ableton.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
category_typeNoall

Implementation Reference

  • The MCP tool handler and registration for 'get_browser_tree_tool'. It wraps the core helper function by calling get_browser_tree with the provided context and category_type parameter.
    @mcp.tool() def get_browser_tree_tool(ctx: Context, category_type: str = "all") -> str: """Get a hierarchical tree of browser categories from Ableton.""" return get_browser_tree(ctx, category_type)
  • Core implementation logic for retrieving and formatting the Ableton browser tree. Sends 'get_browser_tree' command to the Ableton remote connection, processes the result, handles errors, and formats the hierarchical structure into a readable string output.
    def get_browser_tree(ctx: Context, category_type: str = "all") -> str: """ Get a hierarchical tree of browser categories from Ableton. Parameters: - category_type: Type of categories to get ('all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects') """ try: ableton = get_ableton_connection() result = ableton.send_command("get_browser_tree", {"category_type": category_type}) # Check if we got any categories if "available_categories" in result and len(result.get("categories", [])) == 0: available_cats = result.get("available_categories", []) return ( f"No categories found for '{category_type}'. " f"Available browser categories: {', '.join(available_cats)}" ) # Format the tree in a more readable way total_folders = result.get("total_folders", 0) formatted_output = f"Browser tree for '{category_type}' (showing {total_folders} folders):\n\n" def format_tree(item: dict[str, Any], indent: int = 0) -> str: output = "" if item: prefix = " " * indent name = item.get("name", "Unknown") path = item.get("path", "") has_more = item.get("has_more", False) # Add this item output += f"{prefix}• {name}" if path: output += f" (path: {path})" if has_more: output += " [...]" output += "\n" # Add children for child in item.get("children", []): output += format_tree(child, indent + 1) return output # Format each category for category in result.get("categories", []): formatted_output += format_tree(category) formatted_output += "\n" return formatted_output except Exception as e: error_msg = str(e) if "Browser is not available" in error_msg: logger.error(f"Browser is not available in Ableton: {error_msg}") return "Error: The Ableton browser is not available. Make sure Ableton Live is fully loaded and try again." elif "Could not access Live application" in error_msg: logger.error(f"Could not access Live application: {error_msg}") return "Error: Could not access the Ableton Live application. Make sure Ableton Live is running and the Remote Script is loaded." else: logger.error(f"Error getting browser tree: {error_msg}") return f"Error getting browser tree: {error_msg}"

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/chaudepark/ableton-mcp'

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