Skip to main content
Glama
mckinsey

vizro-mcp

Official
by mckinsey

validate_dashboard_config

Validate Vizro dashboard configurations to ensure proper structure and functionality before deployment. Checks configuration syntax, data references, and custom chart integration for error-free dashboard creation.

Instructions

Validate Vizro model configuration. Run ALWAYS when you have a complete dashboard configuration.

If successful, the tool will return the python code and, if it is a remote file, the py.cafe link to the chart.
The PyCafe link will be automatically opened in your default browser if auto_open is True.

Returns:
    ValidationResults object with status and dashboard details

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dashboard_configYesEither a JSON string or a dictionary representing a Vizro dashboard model configuration
data_infosYesList of DFMetaData objects containing information about the data files
custom_chartsYesList of ChartPlan objects containing information about the custom charts in the dashboard
auto_openNoWhether to automatically open the PyCafe link in a browser

Implementation Reference

  • The core handler function for the 'validate_dashboard_config' tool. Decorated with @mcp.tool(), it validates the provided dashboard configuration using Vizro's model_validate, handles custom charts, generates Python code and optional PyCafe preview link, and opens the browser if specified.
    @mcp.tool()
    def validate_dashboard_config(
        dashboard_config: dict[str, Any] = Field(
            description="Either a JSON string or a dictionary representing a Vizro dashboard model configuration"
        ),
        data_infos: list[DFMetaData] = Field(
            description="List of DFMetaData objects containing information about the data files"
        ),
        custom_charts: list[ChartPlan] = Field(
            description="List of ChartPlan objects containing information about the custom charts in the dashboard"
        ),
        auto_open: bool = Field(default=True, description="Whether to automatically open the PyCafe link in a browser"),
    ) -> ValidateResults:
        """Validate Vizro model configuration. Run ALWAYS when you have a complete dashboard configuration.
    
        If successful, the tool will return the python code and, if it is a remote file, the py.cafe link to the chart.
        The PyCafe link will be automatically opened in your default browser if auto_open is True.
    
        Returns:
            ValidationResults object with status and dashboard details
        """
        Vizro._reset()
    
        try:
            dashboard = vm.Dashboard.model_validate(
                dashboard_config,
                context={"allow_undefined_captured_callable": [custom_chart.chart_name for custom_chart in custom_charts]},
            )
        except ValidationError as e:
            return ValidateResults(
                valid=False,
                message=f"""Validation Error: {e!s}. Fix the error and call this tool again.
    Calling `get_model_json_schema` may help.""",
                python_code="",
                pycafe_url=None,
                browser_opened=False,
            )
    
        else:
            code_link = get_python_code_and_preview_link(dashboard, data_infos, custom_charts)
    
            pycafe_url = code_link.pycafe_url if all(info.file_location_type == "remote" for info in data_infos) else None
            browser_opened = False
    
            if pycafe_url and auto_open:
                try:
                    browser_opened = webbrowser.open(pycafe_url)
                except Exception:
                    browser_opened = False
    
            return ValidateResults(
                valid=True,
                message="""Configuration is valid for Dashboard! Do not forget to call this tool again after each iteration.
    If you are creating an `app.py` file, you MUST use the code from the validation tool, do not modify it, watch out for
    differences to previous `app.py`""",
                python_code=code_link.python_code,
                pycafe_url=pycafe_url,
                browser_opened=browser_opened,
            )
    
        finally:
            Vizro._reset()
  • Pydantic-style dataclass defining the output schema for the validate_dashboard_config tool (and similar validation tools), including validation status, error/success message, generated Python code, PyCafe URL, and browser open status.
    @dataclass
    class ValidateResults:
        """Results of validation tools."""
    
        valid: bool
        message: str
        python_code: str
        pycafe_url: str | None
        browser_opened: bool

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/mckinsey/vizro'

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