Skip to main content
Glama
valderan

vvk-charts-mcp

by valderan

vvk-charts-mcp

Documentation language:

Modern Python MCP server for rendering charts and diagrams (line, bar, pie, scatter, area, and combined dashboard) with customizable themes and export to PNG/SVG/base64.

Table of contents

Related MCP server: mcp-plots

Features

  • MCP tools for single charts and mixed dashboards.

  • Terminal chart tools with ANSI rendering and monochrome fallback.

  • Modern Plotly styling with full theme customization.

  • Works with multi-series and larger datasets.

  • Export formats: png, svg, base64.

  • Interactive CLI test client with predefined templates.

Quick start

Install from GitHub with uvx:

uvx install git+https://github.com/valderan/vvk-charts-mcp.git

Run MCP server:

uvx run vvk-charts-mcp

Run interactive test client:

uvx run vvk-charts-cli

The CLI asks what to draw, where to save, output format, and image size.

Tip: set output mode to terminal in vvk-charts-cli to preview console dashboards.

MCP tools

Tool

Purpose

list_theme_presets

Lists available image/terminal themes

create_line_chart

Trends over time

create_bar_chart

Category comparison

create_pie_chart

Part-to-whole split

create_scatter_chart

Correlation and bubble plots

create_area_chart

Stacked/cumulative composition

create_combined_dashboard

Multiple chart types in one image

create_terminal_chart

ANSI/mono chart output for terminal clients

create_terminal_dashboard

Multi-panel terminal dashboard as plain text

Common options supported by all tools:

  • theme_preset, theme, title, width, height

  • format (png, svg, base64)

  • filename, save_to_disk

Image tools always return chat preview (ImageContent). To save files, set save_to_disk: true and configure OUTPUT_DIR in MCP env.

Theme presets

Use list_theme_presets to get all available theme names at runtime.

Image theme presets:

  • clean_light (default)

  • dark_corporate

  • pastel_startup

  • medical_monitor

Terminal theme presets:

  • dark_corporate_cli (default)

  • pastel_startup_cli

Example request:

{
  "tool": "list_theme_presets",
  "arguments": {}
}

Combined dashboard payload example

{
  "title": "Marketing Dashboard",
  "rows": 1,
  "cols": 2,
  "theme_preset": "dark_corporate",
  "format": "png",
  "save_to_disk": true,
  "filename": "combined_dashboard",
  "panels": [
    {
      "type": "line",
      "row": 1,
      "col": 1,
      "title": "Revenue Trend",
      "x_label": "Month",
      "y_label": "k USD",
      "data": [
        {
          "name": "Revenue",
          "x": ["Jan", "Feb", "Mar", "Apr"],
          "y": [120, 132, 148, 160]
        }
      ],
      "options": {
        "line_shape": "spline"
      }
    },
    {
      "type": "pie",
      "row": 1,
      "col": 2,
      "title": "Budget Split",
      "data": [
        {
          "labels": ["Search", "Social", "Email"],
          "values": [45, 35, 20]
        }
      ],
      "options": {
        "hole": 0.45
      }
    }
  ]
}

Terminal chart payload example

{
  "tool": "create_terminal_chart",
  "arguments": {
    "type": "line",
    "title": "Revenue Trend (CLI)",
    "x_label": "Month",
    "y_label": "k USD",
    "theme": "dark_corporate_cli",
    "use_color": true,
    "force_mono": false,
    "raw_output": true,
    "data": [
      {
        "name": "Revenue",
        "x": ["Jan", "Feb", "Mar", "Apr", "May"],
        "y": [120, 132, 148, 160, 178]
      }
    ]
  }
}

raw_output: true is recommended for terminal clients: tool returns only chart text (no JSON wrapper).

Image save behavior (OUTPUT_DIR)

  • save_to_disk: false (default): no file is written, preview is returned to chat.

  • save_to_disk: true and OUTPUT_DIR is set: file is saved only into OUTPUT_DIR.

  • save_to_disk: true and OUTPUT_DIR is not set: no error, preview only (saved=false in metadata).

  • output_path is not supported.

Example MCP config fragment:

{
  "mcp": {
    "vvkcharts": {
      "type": "local",
      "enabled": true,
      "command": ["uvx", "--from", "git+https://github.com/valderan/vvk-charts-mcp.git", "vvk-charts-mcp"],
      "env": {
        "OUTPUT_DIR": "./output"
      }
    }
  }
}

AI presets (skill and agent)

Repository includes reusable AI presets in ai/:

  • ai/vvk-charts-skill.md - skill instructions for chart payload building.

  • ai/vvk-charts-agent.md - chart-specialized subagent profile.

Use whichever workflow is more convenient.

OpenCode setup (detailed)

1) Add this MCP server

Create or edit opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vvkcharts": {
      "type": "local",
      "enabled": true,
      "command": [
        "uvx",
        "--from",
        "git+https://github.com/valderan/vvk-charts-mcp.git",
        "vvk-charts-mcp"
      ]
    }
  }
}

2) Install as an OpenCode skill

mkdir -p .opencode/skills/vvk-charts-mcp
cp ai/vvk-charts-skill.md .opencode/skills/vvk-charts-mcp/SKILL.md

3) Install as an OpenCode agent

mkdir -p .opencode/agents
cp ai/vvk-charts-agent.md .opencode/agents/vvk-charts.md

4) Verify

  • Start opencode in this repository.

  • Ensure vvkcharts_* tools are visible.

  • Test prompt: Build a monthly revenue line chart and save as png in ./output using vvkcharts.

References:

Codex setup (detailed)

Codex-compatible clients may vary, but this flow works in MCP-enabled environments.

1) Register MCP server

uvx --from git+https://github.com/valderan/vvk-charts-mcp.git vvk-charts-mcp

Typical JSON shape used by many clients:

{
  "mcpServers": {
    "vvkcharts": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/valderan/vvk-charts-mcp.git",
        "vvk-charts-mcp"
      ]
    }
  }
}

2) Reuse skill and agent presets

  • Use ai/vvk-charts-skill.md as a reusable prompt template.

  • Use ai/vvk-charts-agent.md as a dedicated chart profile/system prompt.

3) Verify

Run a request like:

Use vvkcharts tools to generate a bar chart and save it to ./output/sales-q1.png.

Local development

uv sync
uv run ruff check .
uv run mypy src

Repository


Русская версия документации: README_ru.md

Available Tools

9 tools
create_area_chartB

Создаёт диаграмму с областями с поддержкой стекинга. Возвращает base64 изображение или путь к файлу.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesМассив серий данных
stackNoСкладывать области
themeNo
titleNo
widthNo
formatNobase64
heightNo
opacityNo
x_labelNo
y_labelNo
filenameNoarea_chart
normalizeNoНормализовать к 100%
save_to_diskNoСохранять файл на диск в директорию из env OUTPUT_DIR
theme_presetNoНазвание базовой темы оформленияclean_light

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the disclosure burden. It does reveal that the tool returns a base64 image or a file path and supports stacking, which is useful. However, it omits behavioral details like saving to disk, output format resolution, and other side effects controlled by parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler and is front-loaded with the core purpose. Every phrase earns its place, making it highly concise for a tool description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 14 parameters, nested data objects, no output schema, and no annotations, a one-sentence description is not enough for an agent to use the tool correctly. Important context about parameter behavior, output mode choices, theme presets, and file-saving behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 36%, so the description needs to compensate, but it barely does. It only hints at stacking and at output via base64 or file path, leaving most of the 14 parameters—data structure, themes, labels, dimensions, normalization, opacity—without meaningful explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as creating an area chart and adds the distinguishing feature of stacking support. It names the specific chart type, which helps separate it from line, bar, pie, and scatter chart siblings, though it does not explicitly state why this chart type is chosen over others.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus the sibling chart-creation tools. The mention of stacking implies a possible use case, but there are no explicit conditions, exclusions, or comparisons to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_bar_chartB

Создаёт столбчатую диаграмму с поддержкой группировки и стекинга. Возвращает base64 изображение или путь к файлу.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesМассив серий данных
themeNoТема оформления
titleNoЗаголовок графика
widthNo
formatNobase64
heightNo
barmodeNogroup
x_labelNoПодпись оси X
y_labelNoПодпись оси Y
filenameNobar_chart
orientationNov - вертикальная, h - горизонтальнаяv
save_to_diskNoСохранять файл на диск в директорию из env OUTPUT_DIR
theme_presetNoНазвание базовой темы оформленияclean_light

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full disclosure burden. It usefully discloses the return form (base64 image or file path) and the grouping/steacking modes, but remains silent on the disk-write side effect exposed via save_to_disk/OUTPUT_DIR, theme preset behavior, and any error or edge-case semantics. Partial disclosure, so a 3 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentence, purpose front-loaded, output format second, zero filler. Every word earns its place, and the structure lets an agent grasp the core function within a second.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 13 parameters, nested data series, 4 enums, and 8 sibling chart tools, a two-sentence description is thin. It does not explain when a bar chart fits the data, how theme_preset relates to the list_theme_presets sibling, whether the return is a path or base64 depending on save_todisk, or the side effect of writing to OUTPUT_DIR — and there is no output schema to fill those gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 62%, so the schema already documents most parameters. The description adds meaning for two undocumented ones — 'grouping and stacking' maps to barmode and 'base64 или путь к файлу' maps to format/save_todisk — but it does not systematically cover width, height, filename, or the exact interplay of barmode and orientation. At mid coverage with partial compensation, the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a concrete verb-resource pair ('Создаёт столбчатую диаграмму' — creates a bar chart) and names distinctive capabilities (grouping and stacking) plus the return form. It distinguishes itself from chart-type siblings (line, pie, scatter, area) by virtue of the explicit chart type, though it never names a sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to choose a bar chart over create_line_chart, create_pie_chart, create_scatter_chart, or the terminal/dashboard variants. There are no exclusions, no alternatives named, and no data-shape heuristics; the only implied context is the сhart type itself, which the name already conveys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_combined_dashboardB

Создаёт комбинированный дашборд из нескольких графиков и диаграмм на одном изображении.

ParametersJSON Schema
NameRequiredDescriptionDefault
colsNo
rowsNo
themeNoТема оформления
titleNoОбщий заголовок дашборда
widthNo
formatNobase64
heightNo
panelsYesМассив панелей дашборда
filenameNocombined_dashboard
save_to_diskNoСохранять файл на диск в директорию из env OUTPUT_DIR
shared_xaxesNo
theme_presetNoНазвание базовой темы оформленияclean_light
vertical_spacingNo
horizontal_spacingNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It only states that an image is created and does not disclose side effects like save_to_disk writing to OUTPUT_DIR, output format behavior, return value, or prerequisites for panels. This is a meaningful gap for a tool that can persist files.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or repetition. However, given the tool has 14 parameters and nested objects, the extreme brevity borders on under-specification, though the structure itself is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is insufficient for a complex tool with no output schema, no annotations, and a deeply nested panels array. Critical context is missing: how panels must be arranged, what output formats are possible, whether a file is saved, and what the return value is.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (~36%), and the description adds no parameter-level meaning. It does not explain the required panels structure, row/col coordinates, format options, theme_preset values, or spacing parameters, so it fails to compensate for the schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific action ('Создаёт комбинированный дашборд') and resource ('из нескольких графиков и диаграмм на одном изображении'), clearly distinguishing it from sibling single-chart tools. It tells the agent exactly what the tool produces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when multiple charts/diagrams need to be combined, but it does not explicitly state when to choose this over single-chart siblings or mention alternatives. There is no exclusion like 'for a single chart use create_line_chart instead', so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_line_chartB

Создаёт линейный график с поддержкой множественных серий данных. Возвращает base64 изображение или путь к файлу.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesМассив серий данных
themeNoТема оформления (кастомизация)
titleNoЗаголовок графика
widthNoШирина изображения
formatNoФормат выводаbase64
heightNoВысота изображения
x_labelNoПодпись оси X
y_labelNoПодпись оси Y
filenameNoИмя файлаline_chart
line_modeNolines+markers
line_shapeNolinear
save_to_diskNoСохранять файл на диск в директорию из env OUTPUT_DIR. По умолчанию false (только preview для чата).
theme_presetNoНазвание базовой темы оформленияclean_light

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose the main behavioral outcome: the tool returns a base64 image or a file path. However, it does not mention disk-writing side effects, the default save_to_disk=false behavior, or the OUTPUT_DIR dependency; those are only stated in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that states the core purpose and the return contract without filler. It is front-loaded and easy to parse, though slightly sparse for a tool with 13 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 13-parameter tool with nested objects and no output schema, the description is minimally sufficient: the schema fills in most parameter details, and the description states the return format. However, it lacks guidance on when to choose this chart type, how to request a file vs. a preview, and what the output structure looks like when returning a path.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (~85%), so the baseline is appropriate. The description adds the useful fact that multiple series are supported and that output can be base64 or a file path, but it does not need to detail individual parameters because the schema already documents them well.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the operation ('Создаёт линейный график') and the resource, and adds the key capability of multiple data series. It does not explicitly distinguish itself from sibling chart tools, though the 'line chart' resource is fairly self-evident without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives like create_bar_chart, create_scatter_chart, or create_area_chart. The description does not mention common use cases or exclusions, leaving the choice entirely to the agent based on the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pie_chartB

Создаёт круговую диаграмму с поддержкой doughnut. Возвращает base64 изображение или путь к файлу.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesДанные для диаграммы
holeNoРазмер отверстия (0 = pie, >0 = doughnut)
themeNoТема оформления
titleNoЗаголовок графика
widthNo
formatNobase64
heightNo
filenameNopie_chart
textinfoNolabel+percent
save_to_diskNoСохранять файл на диск в директорию из env OUTPUT_DIR
theme_presetNoНазвание базовой темы оформленияclean_light

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, but it only mentions creation and return format. It does not disclose the possibility of writing to disk via save_to_disk, effects of format and filename, or behavior around the output directory, which are material for an agent invoking the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences with no filler or repetition. It states the core function and the key output modes efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters, nested required data, no annotations, and no output schema, the description is far too sparse to fully guide invocation. It omits practical details about data shape, output formats beyond base64/path, disk side effects, theme presets, and chart text settings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds only high-level meaning by mentioning doughnut support and base64/file-path output, which loosely map to hole and format. It does not explain the required nested data structure, colors, themes, sizes, textinfo, or save behavior, and schema coverage is only 55%, so the description does not compensate for the undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's primary action ('Создаёт круговую диаграмму') and its unique doughnut capability, distinguishing it from line, bar, scatter, and area chart siblings. It also specifies the two return modes: base64 image or file path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a pie or doughnut chart is needed, which is enough to differentiate it from sibling chart tools by chart type. However, it offers no explicit guidance on when not to use it or which alternative to prefer, leaving selection mostly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_scatter_chartA

Создаёт точечный график с поддержкой пузырьковых диаграмм. Возвращает base64 изображение или путь к файлу.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesМассив серий данных
themeNo
titleNo
widthNo
formatNobase64
heightNo
x_labelNo
y_labelNo
filenameNoscatter_chart
show_lineNoПоказывать линии между точками
save_to_diskNoСохранять файл на диск в директорию из env OUTPUT_DIR
theme_presetNoНазвание базовой темы оформленияclean_light

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It does disclose output behavior (base64 image or file path) and bubble support, but says nothing about disk-saving side effects, data prerequisites, or what 'bubble' requires. Partial transparency, so a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core action and result without wasted words. Ideal length for a simple chart-creation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 12 parameters and no output schema, the description is minimal. It omits usage context, the relationship between save_to_disk/format and the promised return value, and how to enable bubble sizing. The schema partially fills gaps, but the overall package is not complete enough for an agent to confidently call this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description adds no parameter-level meaning. It doesn't explain that bubble size is controlled via marker.size, how format relates to return type, or what data must look like beyond what the schema already shows. The description therefore fails to compensate for the undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (Создаёт/creates) and resource (scatter chart), and explicitly notes bubble chart support, which differentiates it from sibling line/bar/pie chart tools. It also gives the return type, making the tool's core function unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or comparison with alternatives. Usage with respect to sibling tools is only implied by the tool name and the generic chart-type wording, so an agent gets no help choosing between scatter and line or bar charts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_terminal_chartC

Рисует график для консоли (ANSI с авто-fallback в монохром).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesСерии данных
typeYesТип терминального графика
themeNo
titleNo
widthNo
heightNo
x_labelNo
y_labelNo
text_modeNoРежим текстового рендера: авто, strip ANSI из plotext, или fallbackauto
use_colorNo
force_monoNo
raw_outputNoВернуть только сырой текст графика без JSON-обёртки

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, and it does disclose one meaningful trait: ANSI output with automatic fallback to monochrome. However, it is a single clause that omits rendering requirements and side effects, and it sits uneasily with the schema default use_color=false, which implies monochrome output by default despite the ANSI-first framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one tight sentence that front-loads the verb and resource and ends with a useful technical qualifier (ANSI/fallback). It has zero filler and every word earns its place, though its brevity borders on under-specification for a tool of this complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex tool — 12 parameters, overlapping chart-type siblings, no output schema, no annotations, and only 33% schema coverage — yet the description is a single clause. An agent lacks the context needed to invoke it correctly, particularly around the theme system, raw_output behavior, and how it differs from the dedicated chart tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds nothing about parameters, while schema coverage is only 33% — theme, title, width, height, x_label, y_label, use_color, and force_mono are undocumented in both the schema and the description. The few schema descriptions that exist ('Серии данных', 'Тип терминального графика') are terse, so the description does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource — 'Рисует график для консоли' (draws a chart for the console) — and adds a specific rendering trait (ANSI with auto-fallback to monochrome). However, it does not distinguish this generic tool from its siblings create_line_chart, create_bar_chart, create_area_chart, and create_scatter_chart, despite the type parameter overlapping directly with those tools, so an agent cannot tell which to select.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the specific chart-type siblings (create_line_chart, create_bar_chart, create_scatter_chart, create_area_chart) or the dashboard tools. No conditions, exclusions, or alternative routing are mentioned, so the agent must infer the tool is a generic type-dispatching chart renderer from the schema alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_terminal_dashboardC

Рисует текстовый дашборд для консоли из нескольких панелей.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNo
titleNo
widthNo
heightNo
panelsYes
text_modeNoРежим текстового рендера: авто, strip ANSI из plotext, или fallbackauto
use_colorNo
force_monoNo
raw_outputNoВернуть только сырой текст дашборда без JSON-обёртки

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the desescription must carry the full burden. It conveys that the tool draws a text dashboard, but does not disclose output format, rendering behavior, failure modes, or any side effects, which is a significant gap for a 9-parameter tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no filler or redundant wording. It is front-loaded and easy to parse, though it sacrifices necessary detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters, no output schema, and no annotations, this description is far too sparse. It does not explain parameter usage, output behavior, or when to choose this over the many sibling visualization tools, leaving the agent without enough context to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 22%, and the description does not explain the meaning or format of key parameters like panels, theme, width, height, or raw_output. It only implies that multiple panels are involved, which is insufficient for an agent to construct valid arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('draws') and resource ('text dashboard for console') and highlights the multi-panel aspect, which helps distinguish it from single-chart siblings. However, it does not explicitly differentiate itself from closely related siblings like create_combined_dashboard or create_terminal_chart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as create_line_chart or create_combined_dashboard. The desciption only describes the action at a high level and leaves all usage decisions up to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_theme_presetsA

Возвращает список доступных тем для image и terminal графиков, чтобы выбрать тему без чтения документации.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It makes the read-only, non-mutating nature explicit by saying it returns a list, and it adds domain scope for image and terminal charts. It doesn't detail output format, but the behavior is low-risk and simple.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-formed sentence with no filler. It front-loads the core action and includes a purposeful clause explaining the intended use case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool, the description is essentially complete: it states the return type, scope, and intended use. It could be slightly stronger by confirming whether the list contains display names, identifiers, or both, but this is a minor gap without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and 100% schema coverage, so there is nothing for the description to document. Baseline 4 applies for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Возвращает список') and a concrete resource ('доступных тем'), scoped to image and terminal charts. This clearly differentiates it from the chart-creation sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context: call this to choose a theme without reading documentation. It doesn't list exclusions, but no sibling tool competes for the same purpose, so the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct chart type or output format: line, bar, pie, scatter, area, combined dashboard, terminal chart, and terminal dashboard. The only pair with potential overlap is the two dashboards, but one is explicitly image-based and the other is explicitly terminal-based.

Naming Consistency5/5

Tool names follow a consistent snake_case verb_noun pattern, with create_*_chart for individual chart types and create_*_dashboard for dashboard variants. The list_theme_presets tool also fits the pattern by using a list verb.

Tool Count5/5

Nine tools is well-scoped for a charting server, covering the main chart types, dashboards, terminal output, and theme discovery. Each tool has a clear responsibility and none feel redundant.

Completeness5/5

The tool surface covers the major standard chart types, multi-chart dashboards, terminal-specific charts, and theme selection. Since this is a stateless chart-generation server rather than a CRUD system, the absence of update/delete operations is not a gap.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that generates lightweight ASCII charts directly in terminal environments, supporting line charts, bar charts, scatter plots, histograms, and sparklines without GUI dependencies.
    5
    40
    9
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A MCP server for data visualization. It exposes tools to render charts (line, bar, pie, scatter, heatmap, etc.) from data and returns plots as either image/text/mermaid diagram.
    2
    4
    MIT

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/valderan/vvk-charts-mcp'

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