Skip to main content
Glama

get_browser_tree

Retrieve Ableton Live's browser tree structure to access instruments, samples, and effects for music production workflows.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
category_typeNoall

Implementation Reference

  • The handler function for the 'get_browser_tree' MCP tool. It connects to the Ableton remote script, sends the 'get_browser_tree' command with the specified category_type, receives the result, and formats it into a readable tree structure with error handling.
    @mcp.tool()
    def get_browser_tree(ctx: Context, category_type: str = "all") -> str:
        try:
            ableton = get_ableton_connection()
            result = ableton.send_command("get_browser_tree", {"category_type": category_type})
            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)}")
            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, indent=0):
                output = ""
                if item:
                    prefix = "  " * indent
                    name = item.get("name", "Unknown")
                    path = item.get("path", "")
                    has_more = item.get("has_more", False)
                    output += f"{prefix}• {name}"
                    if path:
                        output += f" (path: {path})"
                    if has_more:
                        output += " [...]"
                    output += "\n"
                    for child in item.get("children", []):
                        output += format_tree(child, indent + 1)
                return output
            for category in result.get("categories", []):
                formatted_output += format_tree(category) + "\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 f"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 f"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}"
  • The @mcp.tool() decorator registers the get_browser_tree function as an MCP tool.
    @mcp.tool()
  • Error message in get_browser_items_at_path tool that references get_browser_tree for checking available categories.
    return f"Error: {error_msg}. Please check the available categories using get_browser_tree."

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/Milesy1/MCP-Ableton-API'

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