Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions src/databricks/labs/mcp/servers/unity_catalog/cli.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
from typing import List, Optional
from pydantic import field_validator
from functools import lru_cache
from pydantic import (
Field,
AliasChoices,
model_validator,
)
from typing import List, Optional

from pydantic import AliasChoices, Field, field_validator, model_validator
from pydantic_settings import BaseSettings, SettingsConfigDict


Expand Down Expand Up @@ -40,6 +36,12 @@ class CliSettings(BaseSettings):
),
)

enable_lakeview: bool = Field(
default=True,
description="Enable Lakeview dashboard management tools.",
validation_alias=AliasChoices("lv", "enable_lakeview"),
)

def get_catalog_name(self):
return self.schema_full_name.split(".")[0] if self.schema_full_name else None

Expand All @@ -55,9 +57,13 @@ def split_genie_space_ids(cls, v):

@model_validator(mode="after")
def check_schema_name_or_genie_space_ids(self):
if not self.schema_full_name and not self.genie_space_ids:
if (
not self.schema_full_name
and not self.genie_space_ids
and not self.enable_lakeview
):
raise ValueError(
"At least one of --schema (-s) or --genie-space-ids (-g) must be provided."
"At least one of --schema (-s), --genie-space-ids (-g), or --enable-lakeview must be provided."
)
return self

Expand Down
34 changes: 18 additions & 16 deletions src/databricks/labs/mcp/servers/unity_catalog/tools/__init__.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
import collections
from typing import TypeAlias, Union

from mcp.server.fastmcp import FastMCP
from mcp.types import (
TextContent,
ImageContent,
EmbeddedResource,
)
from mcp.types import EmbeddedResource, ImageContent, TextContent

from databricks.labs.mcp._version import __version__ as VERSION
from databricks.labs.mcp.servers.unity_catalog.cli import get_settings
from databricks.labs.mcp.servers.unity_catalog.tools.functions import (
UCFunctionTool,
list_uc_function_tools,
)
from databricks.labs.mcp.servers.unity_catalog.tools.genie import (
GenieTool,
list_genie_tools,
)
from databricks.labs.mcp.servers.unity_catalog.tools.functions import (
UCFunctionTool,
list_uc_function_tools,
from databricks.labs.mcp.servers.unity_catalog.tools.lakeview import (
LakeviewTool,
list_lakeview_tools,
)
from databricks.labs.mcp.servers.unity_catalog.tools.vector_search import (
VectorSearchTool,
Expand All @@ -24,20 +25,21 @@
from databricks.labs.mcp.utils import logger

Content: TypeAlias = Union[TextContent, ImageContent, EmbeddedResource]
AvailableTool = UCFunctionTool | VectorSearchTool | GenieTool
AvailableTool = UCFunctionTool | VectorSearchTool | GenieTool | LakeviewTool


def list_all_tools(settings) -> list[AvailableTool]:
"""
Returns a list of all available tools, including Genie tools, UC functions, and vector search tools.
Returns a list of all available tools, including Genie, Lakeview, UC functions, and vector search tools.
This function aggregates tools from different sources and returns them in a single list.
"""

return (
list_genie_tools(settings)
+ list_vector_search_tools(settings)
+ list_uc_function_tools(settings)
)
tools = []
tools += list_genie_tools(settings)
if getattr(settings, "enable_lakeview", True):
tools += list_lakeview_tools(settings)
tools += list_vector_search_tools(settings)
tools += list_uc_function_tools(settings)
return tools


def _warn_if_duplicate_tool_names(tools: list[AvailableTool]):
Expand Down
Loading