list_databricks_tools
Discover available Databricks MCP tools after authentication to access and interact with Databricks-hosted applications through Claude.
Instructions
List all available tools on the remote Databricks MCP server. Must authenticate first.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/databricks_mcp_proxy/server.py:61-82 (handler)The handler function implementing the list_databricks_tools tool. It lists all discovered remote tools with their names, descriptions, and input parameters if available. Requires prior authentication.@mcp.tool() def list_databricks_tools() -> str: """ List all available tools on the remote Databricks MCP server. Must authenticate first. """ if not state.authenticated or not state.proxy: return "Not authenticated. Call 'authenticate' first." if not state.proxy.tools: return "No tools available." lines = [f"Available tools ({len(state.proxy.tools)}):\n"] for tool in state.proxy.tools: lines.append(f"**{tool.name}**") lines.append(f" {tool.description}") if tool.input_schema.get("properties"): lines.append(f" Parameters: {list(tool.input_schema['properties'].keys())}") lines.append("") return "\n".join(lines)
- The authenticate tool handler which initializes the proxy, connects, and calls discover_tools to populate the list of remote tools used by list_databricks_tools.@mcp.tool() def authenticate() -> str: """ Authenticate with Databricks using OAuth U2M flow. Opens a browser for authorization. Uses DATABRICKS_HOST and DATABRICKS_APP_URL from app.yaml or environment. """ try: host = state.host or os.environ.get("DATABRICKS_HOST") app_url = state.app_url or os.environ.get("DATABRICKS_APP_URL") scopes = state.scopes or os.environ.get("DATABRICKS_SCOPES", DEFAULT_SCOPES) if not host: return "Error: DATABRICKS_HOST not configured. Set it in app.yaml or environment." if not app_url: return "Error: DATABRICKS_APP_URL not configured. Set it in app.yaml or environment." print(f"Starting OAuth flow for {host}...", file=sys.stderr) access_token = start_oauth_flow(host, scopes) state.proxy = DatabricksMCPProxy(host, app_url, access_token) state.proxy.connect() state.proxy.discover_tools() state.authenticated = True tool_names = [t.name for t in state.proxy.tools] return f"Authenticated successfully!\n\nAvailable tools ({len(tool_names)}):\n" + "\n".join(f" - {name}" for name in tool_names) except Exception as e: state.authenticated = False return f"Authentication failed: {e}"
- src/databricks_mcp_proxy/server.py:61-82 (registration)The @mcp.tool() decorator registers the list_databricks_tools function with the FastMCP server instance.@mcp.tool() def list_databricks_tools() -> str: """ List all available tools on the remote Databricks MCP server. Must authenticate first. """ if not state.authenticated or not state.proxy: return "Not authenticated. Call 'authenticate' first." if not state.proxy.tools: return "No tools available." lines = [f"Available tools ({len(state.proxy.tools)}):\n"] for tool in state.proxy.tools: lines.append(f"**{tool.name}**") lines.append(f" {tool.description}") if tool.input_schema.get("properties"): lines.append(f" Parameters: {list(tool.input_schema['properties'].keys())}") lines.append("") return "\n".join(lines)