rendering
Vega-Lite MCP Integration for Codex
Connect Vega-Lite to Codex through the local KosmoKrator MCP gateway with scoped tools, credentials, and write policy.
Connect Vega-Lite to Codex
Use KosmoKrator as a local MCP proxy for Codex so coding sessions can reach selected integrations with explicit write policy.
Register kosmo mcp:serve as a local stdio server and choose the integration allowlist. The gateway is local, scoped to this integration, and starts with
--write=deny so Codex can inspect read-capable tools without receiving write access by default.
Vega-Lite MCP Config for Codex
Keep write access denied or ask-based unless the workspace is trusted.
{
"mcpServers": {
"kosmokrator-vegalite": {
"type": "stdio",
"command": "kosmo",
"args": [
"mcp:serve",
"--integration=vegalite",
"--write=deny"
]
}
}
} Run the Gateway Manually
kosmokrator mcp:serve --integration=vegalite --write=deny Why Use KosmoKrator Here
Expose only Vega-Lite instead of a broad multi-service tool list.
Reuse credentials already configured for the KosmoKrator CLI and Lua runtime.
Start read-only, then opt into ask or allow for trusted workspaces.
Vega-Lite Tools Visible to Codex
Codex sees stable MCP tool names generated from the Vega-Lite integration catalog.
| MCP tool | Source function | Type | Description |
|---|---|---|---|
integration__vegalite__render_vegalite | vegalite.render_vegalite | Write | Render a Vega-Lite visualization to a PNG image. Pass a complete Vega-Lite JSON specification and get back a markdown image embed. IMPORTANT: Always use inline data with "data": {"values": [...]}. Never use "data": {"url": "..."}. Example spec: { "$schema": "https://vega.github.io/schema/vega-lite/v5.json", "data": {"values": [ {"category": "A", "value": 28}, {"category": "B", "value": 55}, {"category": "C", "value": 43} ]}, "mark": "bar", "encoding": { "x": {"field": "category", "type": "nominal"}, "y": {"field": "value", "type": "quantitative"} } } Supported mark types: bar, line, point, area, rect, circle, square, arc, text, tick, rule, trail, boxplot. Always include "type" in encoding channels: "quantitative", "nominal", "ordinal", or "temporal". |