Skip to main content
Glama
vilsem-mcp
by bcsnpc

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VILSEM_APP_PATHNoPath to a Vilsem source checkout. Required for model connections (reuses its Desktop bridge, Fabric introspection and authentication); templates, spec validation and local report tools work without a model connection.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
connect_modelA

Connect read-only to an existing model. Prefer source.kind="report" with reportDir to follow definition.pbir: byPath matches the open Desktop model or returns offline schema-only TMDL; byConnection resolves the configured Fabric model or Windows-integrated SSAS endpoint. source.kind="desktop" auto-detects a local port; source.kind="fabric" accepts workspaceId/datasetId. Keep connectionId for schema, DAX and previews. A schemaOnly connection cannot execute queries or live previews. No model objects are created or changed.

get_schemaA

Read model context without writes. Default detail=summary omits measure DAX and relationship graph; ask for full to understand calculations and join paths. Columns include exact DAX cardinality, BLANK share and numeric/date min/max, plus up to10 distinct samples and hidden/key flags. Unavailable fields carry explicit errors. Profiling is cached60s; use refresh after model/data changes. Optional page uses an internal/display page name plus reportDir (or a report-kind connection) to add read-only existing page bindings.

run_daxA

Execute a read-only DAX EVALUATE table query against a connected model. Returns at most maxRows rows, default 200. Use it to inspect data and verify visual bindings; this tool does not expose XMLA commands or persistent model changes.

list_templatesA

List the shared Vilsem declarative visual templates with their slot and parameter contracts. Use these templates as starting points and read vilsem://docs/spec-format before changing token expressions or formatter templates.

validate_specB

Resolve a Vilsem spec without data. With spec.measures, connectionId is required: validates schema references, cycles and scalar DAX using the connected engine. Run before preview_visual.

explain_visualB

Explain a Vilsem custom visual spec, its field bindings, resolved empty-data ECharts option and exact DAX query before preview or commit. Does not inspect or modify native visuals or model objects.

preview_visualA

Validate a Vilsem spec, query actual bound fields and return PNG plus option and actionable critique (default true). Critique uses rendered text bounds and option checks; inspect its limitations and iterate before committing. Theme defaults to the report theme when reportDir is supplied, light otherwise. Explicit spec.canvasTheme overrides unless a stored pane override requests report theme. maxRows is 1..10000 (default 200); bounded queries do not prove population coverage. This does not write a report.

preview_variantsB

Compare1..4 candidate specs using ONE identical bound-data query; returns one labelled2x2 PNG and per-candidate critique. Bindings and visual-scoped measures must be shared, so design differences cannot silently change the numbers. Use this to choose between approaches before committing.

list_visualsB

Read every vilsem Renderer visual across report pages from PBIR, with summary, bindings, version, layout and optional live thumbnail. Native visuals are skipped. Defaults to live thumbnails; pass thumbnails:false for metadata-only discovery. No separate manifest is used.

read_visualB

Read a saved vilsem visual: migrated full spec, original-version provenance, field bindings, layout, scoped measures, separate format-pane overrides and current live PNG. Uses connectionId or connects through definition.pbir. Never reads native visuals.

diff_visualB

Read-only comparison against one saved vilsem visual: JSON Patch diff and before/after live PNGs with critique. This writes no files. Run before replacing an existing design.

update_visualA

Apply RFC6902 JSON Patch to the stored vilsem spec. Validates and previews before writing; returns diff and before/after PNGs. Defaults dryRun:true. Preserves manual format-pane objects unless resetFormatting:true; renderer identity/prototype/version paths are refused. Optional etag protects a reviewed dry run from intervening saves. Native/model/report objects are never edited.

list_pagesA

Read existing PBIR pages and visual names, types and positions so you can choose a page and avoid overlap. This tool does not edit or validate native visuals, slicers, bookmarks, filters or report themes.

commit_visualA

Add one Vilsem Renderer visual to one existing PBIR page using @vilsem/core. Existing visual names are refused; the only additional changes are missing renderer resources and registration. Native visuals, slicers, bookmarks, filters, themes and model objects are not edited. If Desktop is open, accept its external-change reload prompt after this call.

validate_visualsB

Validate only PBIR visual containers whose visualType is the stable Vilsem Renderer GUID. Reports schema errors, unreadable spec literals and unsupported current-renderer specs. Native visuals and all report-level objects are neither validated nor reported.

Prompts

Interactive templates invoked by user choice

NameDescription
design_visualGet model context and a structured brief for the CALLING AGENT to design a new Vilsem visual or edit an existing one. No LLM/model/API key inside the MCP.

Resources

Contextual data attached and managed by the client

NameDescription
kpi_sparkline
bullet
lollipop
radial_bar
rose
donut
heat_strip
diverging_bar
dumbbell
range_bar
pictogram
calendar_heatmap
heatmap_2d
kpi_delta
expressiveness_bullet
expressiveness_dual_axis
expressiveness_gantt
expressiveness_network
expressiveness_radial_progress
expressiveness_sankey
expressiveness_small_multiples
stress2_001_step-line
stress2_002_spline-gradient
stress2_003_rolling-line
stress2_004_confidence-band
stress2_005_fan-chart
stress2_006_horizon
stress2_007_sparkline-grid
stress2_008_100-percent-column
stress2_009_diverging-stack
stress2_010_population-pyramid
stress2_011_grouped-stacked
stress2_012_lollipop-target
stress2_013_cleveland-dots
stress2_014_range-delta
stress2_015_wrapped-bar
stress2_016_revenue-strip
stress2_017_polar-column
stress2_018_nightingale-rose
stress2_019_semi-donut-kpi
stress2_020_nested-donut
stress2_021_pie-top-other
stress2_022_pictogram-icons
stress2_023_waffle-share
stress2_024_hemicycle
stress2_025_bullet-bands-delta
stress2_026_linear-gauge
stress2_027_multi-ring-progress
stress2_028_gauge-target-bands
stress2_029_dual-axis-reference
stress2_030_pareto
stress2_031_waterfall-subtotals
stress2_032_double-waterfall
stress2_033_profit-bridge
stress2_034_revenue-ohlc
stress2_035_heikin-ashi
stress2_036_diverging-heatmap
stress2_037_calendar-margin
stress2_038_daily-heat-strip
stress2_039_country-lasagna
stress2_040_treemap-secondary-colour
stress2_041_treemap-drill
stress2_042_sunburst-products
stress2_043_icicle-partition
stress2_044_circle-packing
stress2_045_orthogonal-tree
stress2_046_radial-tree
stress2_047_taxonomy-org-chart
stress2_048_dendrogram-values
stress2_049_sankey-two-levels
stress2_050_sankey-three-levels
stress2_051_parallel-sets
stress2_052_chord-ribbons
stress2_053_chord-arcs
stress2_054_arc-diagram
stress2_055_relationship-force
stress2_056_network-circular
stress2_057_adjacency-matrix
stress2_058_bipartite
stress2_059_radar-benchmark
stress2_060_radar-small-multiples
stress2_061_parallel-six-measures
stress2_062_median-quadrants
stress2_063_connected-scatter
stress2_064_scatter-matrix
stress2_065_categorical-bubbles
stress2_066_bump-rank
stress2_067_slope-movers
stress2_068_wiggle-streamgraph
stress2_069_normalized-area
stress2_070_cumulative-flow
stress2_071_gantt-country
stress2_072_event-timeline
stress2_073_funnel-conversion
stress2_074_mirrored-funnel
stress2_075_labelled-quadrants
stress2_076_independent-axis-zoom
stress2_077_weekend-bands
stress2_078_columns-error-bars
stress2_079_control-chart
stress2_080_ewma
stress2_081_forest-range
stress2_082_dot-whisker
stress2_083_bar-shared-axis
stress2_084_line-free-axis
stress2_085_kpi-sparkline
stress2_086_ranked-inline-bars
stress2_089_histogram-auto
stress2_090_histogram-width
stress2_091_box-detail-prices
stress2_092_violin-density
stress2_093_beeswarm
stress2_094_strip-mean
stress2_095_ecdf
stress2_096_ridgeline
stress2_097_normal-qq
stress2_098_hexbin-price-cost
stress2_099_density2d-price-cost
stress2_100_parameter-top-other
stress2_101_group-percent-subtotals
stress2_102_yoy-variance
stress2_103_rebase-index
stress2_104_ytd-prior-year
stress2_105_cohort-retention
stress2_106_pivot-heatmap
stress2_107_pearson-six
stress2_108_pareto-count
stress2_109_date-spikes
stress2_110_radial-histogram
stress2_115_country-tile-grid
stress2_116_word-cloud
stress2_118_hierarchy-flame
expressiveness_sunburst
expressiveness_waterfall
spec-format
design-guide
workflow

TDQS

A3.7/5.0

Scored across 15 tools

Disambiguation4/5

Most tools have clearly distinct roles: list_pages/list_visuals/read_visual separate discovery vs full read, update_visual vs commit_visual separate modify vs add. However, several near-pairs require careful reading: validate_visuals (report-level PBIR scan) vs validate_spec (spec without data), and explain_visual vs preview_visual (both resolve a spec, one without render). Descriptions do disambiguate these, but the surface is dense enough that misselection is plausible.

Naming Consistency5/5

Every tool follows a strict verb_noun snake_case pattern (list_templates, run_dax, validate_visuals, connect_model, get_schema, preview_visual, diff_visual, update_visual, commit_visual). No mixing of styles or vague verbs; the verb choice meaningfully signals the operation type (list/get/read vs validate vs preview vs update/commit).

Tool Count5/5

15 tools is at the top of the well-scoped range and each earns its place in a genuine authoring workflow: connection, schema, DAX, discovery, validation, explanation, preview, variant comparison, read, diff, update, and commit. No filler tools are visible and the count reflects a coherent multi-stage pipeline rather than sprawl.

Completeness4/5

The lifecycle is nearly full: connect, inspect, validate, explain, preview, compare, list, read, diff, patch, and commit are all present. Gaps remain around destructive/report-structuring operations — there is no delete_visual to remove a committed visual and no page-creation tool, only add-to-existing-page via commit_visual — which agents may need to work around.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues