# SvGrid (npm · @svgrid/mcp)

Version-pinned Svelte 5 data grid APIs, 373 demo sources, and SvelteKit app scaffolding.

- Trust score: 65/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-20

## Components

- npm · `@svgrid/mcp`: 65/100 (this document), [markdown](https://verifymcp.io/servers/com-svgrid-svgrid/svgrid-mcp.md), [page](https://verifymcp.io/servers/com-svgrid-svgrid/svgrid-mcp)

## Channel facts

- Registry: `npm`
- Package: `@svgrid/mcp`
- Version: `2.3.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-20.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 30 of 97 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 35/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (SEE LICENSE IN LICENSE) isn't a recognized OSI-approved license.
  - Actively maintained (last published 0 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 2694 tokens (~81/item across 33 items; 33 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 85/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 55% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add com-svgrid-svgrid -- npx -y @svgrid/mcp
```

### Codex

```bash
codex mcp add com-svgrid-svgrid -- npx -y @svgrid/mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-svgrid-svgrid": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@svgrid/mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-svgrid-svgrid --command npx --arg -y --arg @svgrid/mcp
```

### Hermes

```yaml
mcp_servers:
  com-svgrid-svgrid:
    command: "npx"
    args: ["-y", "@svgrid/mcp"]
```

### Other

```json
{
  "mcpServers": {
    "com-svgrid-svgrid": {
      "command": "npx",
      "args": [
        "-y",
        "@svgrid/mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-20 (score 65, +10)

- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.86

### 2026-08-19 (score 55)

First indexed and scored.

## MCP tools (33)

### `list_examples` (~34 tokens)

List every SvGrid example demo with id, title, and short blurb. Use to discover what is available before fetching source.

### `get_example_source` (~62 tokens)

Return the full .svelte source of a specific demo by id (e.g. "11-stock-market"). The source is what a user would copy into their project as-is.

Input parameters:

- `id` (string, required): Demo id, e.g. "11-stock-market"

### `list_docs` (~36 tokens)

List every documentation page with slug and title. Slugs use forward slashes, e.g. "help/columns/column-definitions".

### `get_doc` (~47 tokens)

Return the markdown content of a specific documentation page by slug.

Input parameters:

- `slug` (string, required): Doc slug, e.g. "getting-started" or "help/columns/column-definitions"

### `search_docs` (~63 tokens)

Case-insensitive substring search across all SvGrid docs. Returns matching slugs with a one-line excerpt around the first hit.

Input parameters:

- `limit` (number): Max results, default 10
- `query` (string, required): Free-text query, e.g. "row virtualization"

### `get_api_reference` (~46 tokens)

Return the curated SvGrid public-API surface, grouped by category (components, headless, scheduler, data ops, export, row models, features, virtualization, accessibility, utilities).

### `introspect_source` (~144 tokens)

SvGrid Studio (commercial): infer an EntitySchema from a data source. Pass a Drizzle schema file (kind:"drizzle", source: the file text) or sample rows (kind:"json", rows, name). Returns a DRAFT EntitySchema to review/refine before scaffolding code.

Input parameters:

- `kind` (string, required): Source kind.
- `name` (string): Entity/table name (required for kind:"json").
- `rows` (array): For kind:"json": a non-empty array of sample row objects.
- `source` (string): For kind:"drizzle": the text of a schema file containing a pgTable / sqliteTable / mysqlTable definition.

### `scaffold_entity` (~158 tokens)

SvGrid Studio (commercial): generate runnable SvelteKit files from an EntitySchema - the $lib schema module, a +server.ts API route (createKitHandlers), and a +page.svelte with SvGrid + SvGridEditPanel. Returns files as { path, contents, description }. AFTER writing the files, run the project's own svelte-check / tsc to verify they compile, and fix any errors. Generated bodies are wrapped in svgrid:managed markers so regeneration preserves edits outside them.

Input parameters:

- `apiRoute` (string): API route. Defaults to /api/{route}.
- `route` (string): Route segment. Defaults to schema.name.
- `schema` (object, required): The EntitySchema (from introspect_source, optionally edited).

### `studio_new_project` (~49 tokens)

Start a NEW, empty SvGrid Studio project (the model the visual designer edits). Add entities/screens next. Replaces any project currently in this session.

Input parameters:

- `title` (string): App title.

### `studio_load_project` (~60 tokens)

Load an existing project from a studio.config.json string (e.g. one exported earlier or shipped with a generated app). Validates it. Use this to continue editing an app the designer produced.

Input parameters:

- `config` (string, required): The studio.config.json contents.

### `studio_describe_project` (~55 tokens)

Return a human-readable summary of the CURRENT project: entities (+ fields + data source), screens (+ blocks, with ids), theme, RBAC, auth, data layer, deploy target. Call this to see state before editing.

### `studio_get_config` (~40 tokens)

Return the current project model as a studio.config.json string. Write it to `studio.config.json` and the visual designer can Load it (round-trip).

### `studio_capabilities` (~48 tokens)

List what can be added: block kinds (grid/chart/kpi/board/...), UI component keys (button/badge/timeline/...), theme presets, data-source kinds, and deploy targets.

### `studio_add_entity` (~145 tokens)

Add an entity (a table/model) + its default screen. Pass either `schema` (an EntitySchema, e.g. from introspect_source) OR an introspection request (`kind`:"drizzle" with `source`, or `kind`:"json" with `rows` + `name`).

Input parameters:

- `kind` (string): Introspect a source instead of passing a schema.
- `name` (string): For kind:"json": the entity name.
- `rows` (array): For kind:"json": sample rows.
- `schema` (object): An EntitySchema.
- `source` (string): For kind:"drizzle": the schema file text.

### `studio_add_screen` (~86 tokens)

Add a screen. With `entity`, adds an entity-bound screen (default grid). Without it, adds a freestanding page (needs `title`).

Input parameters:

- `entity` (string): Entity name to bind (omit for a freestanding page).
- `route` (string): Route segment (freestanding only).
- `title` (string): Title (required for a freestanding page).

### `studio_add_block` (~87 tokens)

Add a data block to a screen. `kind` is one of the palette kinds (grid, chart, kpi, gauge, tree, tabs, accordion, pivot, board, calendar, detail, master-detail, filter, record, lookup, dashboard). Use studio_describe_project for screen ids.

Input parameters:

- `kind` (string, required): Block kind.
- `screenId` (string, required)

### `studio_add_component` (~87 tokens)

Add a UI component block to a screen (button, badge, alert, card, stat, timeline, sparkline, chip, ...). `props` overrides the registry defaults. See studio_capabilities for component keys.

Input parameters:

- `component` (string, required): Registry component key.
- `props` (object): Prop overrides (incl. _content for text).
- `screenId` (string, required)

### `studio_update_block` (~202 tokens)

Configure an EXISTING block: its config (columns, editing mode, export buttons, grouping, chart dimension/measure, rowLink, formatRules, ...), its width (span/colSpan), height, or CSS class. `config` is merged into the block's current config. Get block ids from studio_describe_project. This is how you configure a block after studio_add_block, which only adds a default one.

Input parameters:

- `blockId` (string, required)
- `className` (string)
- `colSpan` (number): Width on the 12-column grid (1-12).
- `config` (object): Partial BlockConfig, merged in. Grid example: { "editing": "inline", "export": { "xlsx": true }, "grouping": ["region"] }.
- `height` (number): Block height in px.
- `screenId` (string, required)
- `span` (number): Legacy 3-col width.

### `studio_remove_block` (~40 tokens)

Remove a block from a screen. Get ids from studio_describe_project.

Input parameters:

- `blockId` (string, required)
- `screenId` (string, required)

### `studio_move_block` (~53 tokens)

Reorder a block within its screen: `dir` -1 moves it earlier, 1 later.

Input parameters:

- `blockId` (string, required)
- `dir` (number, required)
- `screenId` (string, required)

### `studio_update_screen` (~154 tokens)

Update a screen: title, route, nav entry, CSS class, or `renderMode`. Set renderMode "ssr" to emit idiomatic SvelteKit (a +page.server.ts `load` + form `actions`, progressive enhancement) instead of the default client-fetch SPA page; it applies to memory/sql-backed screens whose blocks are a single grid or read-only blocks, and falls back to "spa" otherwise.

Input parameters:

- `className` (string)
- `nav` (object): { show?: boolean, label?: string }.
- `renderMode` (string): Output shape for this screen.
- `route` (string)
- `screenId` (string, required)
- `title` (string)

### `studio_remove_screen` (~29 tokens)

Remove a screen (and its blocks) from the project.

Input parameters:

- `screenId` (string, required)

### `studio_set_screen_layout` (~73 tokens)

Set how a screen arranges its blocks: grid (12-column, default) | stack (single column) | split (locked resizable panes) | dock (draggable/tabbable workspace) | canvas (free-form cell placement).

Input parameters:

- `layout` (string, required)
- `screenId` (string, required)

### `studio_set_entity_source` (~116 tokens)

Bind an entity to a data source. `source` is an EntityDataSource, e.g. { "kind": "sql", "table": "customers", "dialect": "postgres" } | { "kind": "memory" } | { "kind": "pglite", "table": "..." } | { "kind": "supabase", ... } | { "kind": "rest", ... }.

Input parameters:

- `entity` (string, required)
- `source` (object, required): The EntityDataSource.

### `studio_set_theme` (~50 tokens)

Set the theme preset + mode + accent. Presets come from studio_capabilities.

Input parameters:

- `accent` (string): Hex accent color.
- `mode` (string)
- `preset` (string)

### `studio_set_access` (~72 tokens)

Configure role-based access control (RBAC). `roles` is an array of { role, screens: "*"|string[], actions: "*"|("create"|"update"|"delete")[] }.

Input parameters:

- `defaultRole` (string)
- `enabled` (boolean, required)
- `roles` (array)

### `studio_set_auth` (~116 tokens)

Configure the authentication starter. Options: enabled, protect, register, userAdmin, twoFactor, email, oauth (["github","google","oidc"]). register/userAdmin/oauth/2FA need the Drizzle data layer + a SQL entity; userAdmin also needs RBAC.

Input parameters:

- `email` (boolean)
- `enabled` (boolean, required)
- `oauth` (array)
- `protect` (boolean)
- `register` (boolean)
- `twoFactor` (boolean)
- `userAdmin` (boolean)

### `studio_set_data_layer` (~45 tokens)

Turn the typed Drizzle data layer (schema.ts + typed repos + drizzle-kit migrations) on or off. Applies to SQL-bound entities.

Input parameters:

- `enabled` (boolean, required)

### `studio_set_tenancy` (~119 tokens)

Turn multi-tenancy on/off: every row is scoped to the signed-in user's tenant, enforced SERVER-side in each API route (reads filtered, creates stamped, update/delete ownership-checked). Requires auth + the Drizzle data layer + a SQL entity; without them it degrades to off. `sharedEntities` stay global (reference/lookup tables every tenant reads).

Input parameters:

- `enabled` (boolean, required)
- `field` (string): Scoping column. Default 'tenantId'.
- `sharedEntities` (array): Entities to leave global.

### `studio_set_job` (~237 tokens)

Add, replace, or remove a scheduled background job. Emits a secret-guarded /api/cron route plus the schedule config for the deploy target (vercel.json crons on Vercel, a GitHub Actions schedule elsewhere). `kind`:"email" sends a summary of `entity` to `to` (needs auth email enabled); `kind`:"code" runs a body you supply. Omit `cron` to REMOVE the job.

Input parameters:

- `code` (string): code: the handler body (TypeScript).
- `cron` (string): 5-field cron in UTC, e.g. '0 6 * * *'. Omit to remove the job.
- `enabled` (boolean): Default true. A disabled job keeps its handler but is skipped by the scheduled run.
- `entity` (string): email: entity to summarize.
- `id` (string, required): Stable job id.
- `kind` (string)
- `name` (string): Human label.
- `subject` (string): email: subject line (defaults to the job name).
- `to` (string): email: recipient address.

### `studio_set_deploy_target` (~52 tokens)

Set the deploy target: auto | vercel | netlify | cloudflare | node. Picks the SvelteKit adapter + emits provider config + a CI/CD pipeline.

Input parameters:

- `target` (string, required)

### `studio_validate` (~24 tokens)

Validate the current project. Returns any errors (block codegen) + warnings.

### `studio_generate_app` (~65 tokens)

Generate the full runnable SvelteKit app from the current model - every file (routes, $lib, package.json, auth, data layer, CI/CD, studio.config.json). Returns [{ path, contents }]. Write them, then run the project's svelte-check to verify.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-svgrid-svgrid/svgrid-mcp#diagnostics

## Score history

- 2026-08-20: 65
- 2026-08-19: 55

## Links

- npm package: https://www.npmjs.com/package/@svgrid/mcp
- Socket report: https://socket.dev/npm/package/@svgrid/mcp
- Repository: https://github.com/sv-grid/sv-grid
- Website: https://svgrid.com/docs/help/mcp-server/
- Changelog RSS feed: https://verifymcp.io/servers/com-svgrid-svgrid/svgrid-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-svgrid-svgrid/svgrid-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-svgrid-svgrid/svgrid-mcp
