Skip to main content
Glama

mcp-highcharts

在 AI 聊天中内联渲染交互式 Highcharts 图表 — 适用于 VS Code、GitHub Copilot、Claude Desktop 或任何支持 MCP Apps 的 MCP 客户端。

在 VS Code 中安装 在 VS Code Insiders 中安装 npm

Code_-_Insiders_15uBYM8FHt

设置

点击上方的徽章,或将其添加到您的 MCP 配置中:

{
  "mcp": {
    "servers": {
      "highcharts": {
        "command": "npx",
        "args": ["-y", "mcp-highcharts@latest"]
      }
    }
  }
}

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "highcharts": {
      "command": "npx",
      "args": ["-y", "mcp-highcharts@latest"]
    }
  }
}
npx mcp-highcharts@latest --http          # http://localhost:3001/mcp
PORT=8080 npx mcp-highcharts@latest --http  # custom port

Related MCP server: Chart-Output MCP Server

工具

工具

描述

render_chart

任意图表类型 — 折线图、柱状图、饼图、散点图、热力图、桑基图、仪表盘、树状图、词云以及 60 多种其他类型

render_stock_chart

带有导航器、范围选择器和 40 多种技术指标的金融图表

render_dashboard

包含图表、KPI 和数据网格的多组件布局

render_map

等值区域图、气泡地图、地图点(自动从 CDN 获取地图数据)

render_gantt

带有任务、依赖关系和里程碑的项目时间轴

render_grid

带有排序、分页和格式化的独立数据表格

所有工具均接受完整的 Highcharts Options API。

提示词

提示词

功能

chart_from_data

粘贴数据 → 获取最佳图表

dashboard_layout

构建仪表盘框架

stock_analysis

K 线图 + 成交量 + 指标

comparison_chart

并排比较模式

project_timeline

带有依赖关系的甘特图

live_chart

从数据 URL 获取实时更新的图表

配置

主题

图表会自动适应宿主的浅色/深色模式。可通过环境变量进行覆盖:

{
  "env": {
    "HIGHCHARTS_THEME": "dark-unica",
    "HIGHCHARTS_OPTIONS": "./my-theme.json"
  }
}

HIGHCHARTS_OPTIONS 接受 .json、.js、.mjs、.ts 或内联 JSON。

内置主题: adaptive (默认), avocado, brand-dark, brand-light, dark-blue, dark-green, dark-unica, gray, grid, grid-light, high-contrast-dark, high-contrast-light, sand-signika, skies, sunset

模式深度

控制发送给 LLM 的类型信息量:

{ "env": { "SCHEMA_DEPTH": "1" } }

深度

描述

0

仅属性名称 — 零上下文开销

1 (默认)

顶级类型 + 描述 + 示例

2

一层类型的子级

3

两层深度 — 完整的递归 Highcharts 类型树

数据源

对于实时更新的图表,请使用带有 data.csvURL 和 data.enablePolling: true 的 Highcharts 数据模块。

图像导出(非 App 回退)

对于不支持 MCP Apps 的 MCP 客户端,请启用服务端图像导出,以便在工具响应中包含每张图表的 PNG 截图:

{
  "env": {
    "IMAGE_EXPORT": "true"
  }
}

图表将渲染为 PNG 并作为 base64 图像内容块返回。交互式 MCP 应用仍会提供给支持的客户端。

渲染策略(自动):

  1. 本地 (Puppeteer) — 如果安装了 highcharts-export-server,图表将通过无头浏览器在本地渲染。无网络调用,速度最快。

  2. 远程回退 — 如果本地不可用,图表配置将 POST 到 Highcharts Export Server。

要启用本地渲染,请安装可选的对等依赖项:

npm install highcharts-export-server

要使用自定义远程导出服务器:

{
  "env": {
    "IMAGE_EXPORT": "true",
    "EXPORT_SERVER_URL": "https://your-export-server.example.com/"
  }
}

您也可以通过编程方式启用它:createServer({ imageExport: true })。

注意: 图像导出适用于标准图表、股票图表和甘特图。仪表盘、数据网格以及带有基于字符串的地图键(例如 "custom/world")的地图无法导出,并将返回纯文本结果。

开发

npm install
node scripts/generate-from-tree.mjs --multi   # generate Zod schemas at depths 0, 1, 2
npm run build
npm test

项目结构

main.ts                  Entry point (stdio + HTTP transports)
server.ts                MCP server — tool registrations and handlers
src/
  export-image.ts        Server-side PNG export (local Puppeteer + remote fallback)
  input-schema.ts        Depth-based schema selection + LLM-friendly overrides
  mcp-app.ts             Client-side Highcharts rendering
  module-loader.ts       Dynamic Highcharts module loading
  generated/             Auto-generated from Highcharts API (do not edit)
    highcharts-depth-{0,1,2}.gen.ts   Zod schemas at each depth
    module-map.json                   Chart type → Highcharts module mapping
scripts/
  generate-from-tree.mjs   Generate Zod schemas from Highcharts tree.json
  generate-module-map.mjs  Generate module-map.json from Highcharts
  example-providers.mjs    Example extraction for schema generation
  measure-schema.ts        Measure tool context size at each depth

图表类型、模块映射和模式均根据已安装的 Highcharts 版本自动生成 — 只需运行 npm update highcharts 并重新生成即可。

许可证

MIT

Available Tools

6 tools
render_chartRender ChartB
Read-only

Render an interactive Highcharts chart inline. Input is a Highcharts Options object (https://api.highcharts.com/highcharts/).

ParametersJSON Schema
NameRequiredDescriptionDefault
accessibilityNoOptions for configuring accessibility for the chart. Requires the accessibility module to be loaded. For a description of the module and information on its features, see Highcharts Accessibility.
annotationsNoA collection of annotations to add to the chart. The basic annotation allows adding custom labels or shapes. The items can be tied to points, axis coordinates or chart pixel coordinates. General options for all annotations can be set using the `Highc
boostNoOptions for the Boost module. The Boost module allows certain series types to be rendered by WebGL instead of the default SVG. This allows hundreds of thousands of data points to be rendered in milliseconds. In addition to the WebGL rendering it save
captionNoThe chart's caption, which will render below the chart and will be part of exported charts. The caption can be updated after chart initialization through the `Chart.update` or `Chart.caption.update` methods.
chartNoGeneral options for the chart.
colorAxisNoA color axis for series. Visually, the color axis will appear as a gradient or as separate items inside the legend, depending on whether the axis is scalar or based on data classes. For supported color formats, see the docs article about colors. A sc
colorsNoAn array containing the default colors for the chart's series. When all colors are used, new colors are pulled from the start again. Default colors can also be set on a series or series.type basis, see column.colors, pie.colors. In styled mode, the c
creditsNoHighcharts by default puts a credits label in the lower right corner of the chart. This can be changed using these options.
dataNoThe Data module provides a simplified interface for adding data to a chart from sources like CVS, HTML tables or grid views. See also the tutorial article on the Data module. It requires the `modules/data.js` file to be loaded. Please note that the d
defsNoOptions for configuring markers for annotations. An example of the arrow marker: { arrow: { id: 'arrow', tagName: 'marker', refY: 5, refX: 5, markerWidth: 10, markerHeight: 10, children: [{ tagName: 'path', attrs: { d: 'M 0 0 L 10 5 L 0 10 Z', 'strok
drilldownNoOptions for drill down, the concept of inspecting increasingly high resolution data through clicking on chart items like columns or pie slices.
exportingNoOptions for the exporting module. For an overview on the matter, see the docs and read our Fair Usage Policy.
globalNoGlobal options that don't apply to each chart. These options must be set using the `Highcharts.setOptions` method. ```js Highcharts.setOptions({ global: { buttonTheme: { fill: '#d0d0d0' } } }); ```
langNoAn object containing language-related strings and settings. A typical setup uses `Highcharts.setOptions` to make the options apply to all charts in the same page. ```js Highcharts.setOptions({ lang: { locale: 'fr' } }); ```
legendNoThe legend is a box containing a symbol and name for each series item or point item in the chart. Each series (or points in case of pie charts) is represented by a symbol and its name in the legend. It is possible to override the symbol creator funct
loadingNoThe loading options control the appearance of the loading screen that covers the plot area on chart operations. This screen only appears after an explicit call to `chart.showLoading()`. It is a utility for developers to communicate to the end user th
navigationNoA collection of options for buttons and menus appearing in the exporting module or in Stock Tools.
noDataNoOptions for displaying a message like "No data to display". This feature requires the file no-data-to-display.js to be loaded in the page. The actual text to display is set in the lang.noData option.
paneNoThe pane serves as a container for axes and backgrounds for circular gauges and polar charts. When used in `Highcharts.setOptions` for theming, the pane must be a single object, otherwise arrays are supported.
plotOptionsNoThe plotOptions is a wrapper object for config objects for each series type. The config objects for each series can also be overridden for each series item as given in the series array. Configuration options for the series are given in three levels.
responsiveNoAllows setting a set of rules to apply for different screen or chart sizes. Each rule specifies additional chart options.
seriesNoSeries options for specific data and the data itself. In TypeScript you have to cast the series options to specific series types, to get all possible options for a series. ```ts // TypeScript example Highcharts.chart('container', { series: [{ color:
sonificationNo
subtitleNoThe chart's subtitle. This can be used both to display a subtitle below the main title, and to display random text anywhere in the chart. The subtitle can be updated after chart initialization through the `Chart.setTitle` method.
timeNoTime options that can apply globally or to individual charts. These settings affect how `datetime` axes are laid out, how tooltips are formatted, how series pointIntervalUnit works and how the Highcharts Stock range selector handles time. The common
titleNoThe chart's main title.
tooltipNoOptions for the tooltip that appears when the user hovers over a series or point.
xAxisNoThe X axis or category axis. Normally this is the horizontal axis, though if the chart is inverted this is the vertical axis. In case of multiple axes, the xAxis node is an array of configuration objects. See the Axis class for programmatic access to
yAxisNoThe Y axis or value axis. Normally this is the vertical axis, though if the chart is inverted this is the horizontal axis. In case of multiple axes, the yAxis node is an array of configuration objects. See the Axis object for programmatic access to t
zAxisNoThe Z axis or depth axis for 3D plots. See the Axis class for programmatic access to the axis.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=true, suggesting a safe read operation. The description adds context by specifying that it renders 'inline' and references the Highcharts API, but doesn't disclose behavioral traits like performance implications, rendering constraints, or what 'interactive' entails. No contradiction with annotations exists.

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, efficient sentence that front-loads the core action ('Render an interactive Highcharts chart inline') and provides essential context (input type and API link). Every word earns its place with no redundancy.

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?

Given the complexity (30 parameters, no output schema) and rich schema coverage, the description is adequate but lacks details on output format, error handling, or integration context. It assumes familiarity with Highcharts, which might be insufficient for users without prior knowledge.

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 (97%), so the schema already documents most parameters thoroughly. The description adds minimal value by mentioning the input is a 'Highcharts Options object' and linking to the API, but doesn't explain parameter usage beyond what's in the schema. Baseline 3 is appropriate given the comprehensive schema.

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 the verb ('Render') and resource ('an interactive Highcharts chart inline'), specifying the chart type and interactivity. However, it doesn't explicitly differentiate from siblings like render_stock_chart or render_dashboard, which might also render charts but with different libraries or contexts.

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 like render_stock_chart or render_dashboard. The description mentions the input is a Highcharts Options object but doesn't specify contexts, prerequisites, or exclusions for usage.

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

render_dashboardRender DashboardB
Read-only

Render a Highcharts Dashboard with multiple components (charts, KPIs, data grids) in a synced layout. Uses @highcharts/dashboards.

ParametersJSON Schema
NameRequiredDescriptionDefault
guiNoDashboard layout: layouts → rows → cells. Each cell has an id matched by component renderTo.
componentsYesArray of dashboard components (Highcharts charts, KPIs, DataGrid, HTML)
dataPoolNoData connectors for shared data between components
editModeNoEdit mode configuration

TDQS

B3.3/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, indicating this is a safe read operation. The description adds context about rendering a dashboard with synced layout and multiple components, which is useful behavioral information beyond the annotation. However, it doesn't disclose performance characteristics, output format, or any limitations.

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, efficient sentence that clearly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded with the core functionality.

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?

Given the complex nested input schema (4 parameters with deep structure) and no output schema, the description is somewhat incomplete. It doesn't explain what the tool returns (e.g., HTML, image, URL) or provide guidance on the complex parameter structures, though annotations cover the safety aspect.

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 100%, so the schema already documents all 4 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score for high schema coverage.

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 the action ('Render') and resource ('Highcharts Dashboard with multiple components'), specifying it creates a synced layout using @highcharts/dashboards. It distinguishes from siblings by mentioning 'multiple components' and 'synced layout', though not explicitly naming alternatives.

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 on when to use this tool versus sibling tools like render_chart or render_grid. The description mentions 'multiple components' and 'synced layout' but doesn't provide explicit when/when-not criteria or alternative recommendations for simpler use cases.

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

render_ganttRender Gantt ChartB
Read-only

Render a Highcharts Gantt chart for project timelines and task scheduling. Uses Highcharts.ganttChart() (https://api.highcharts.com/gantt/).

ParametersJSON Schema
NameRequiredDescriptionDefault
accessibilityNoOptions for configuring accessibility for the chart. Requires the accessibility module to be loaded. For a description of the module and information on its features, see Highcharts Accessibility.
annotationsNoA collection of annotations to add to the chart. The basic annotation allows adding custom labels or shapes. The items can be tied to points, axis coordinates or chart pixel coordinates. General options for all annotations can be set using the `Highc
boostNoOptions for the Boost module. The Boost module allows certain series types to be rendered by WebGL instead of the default SVG. This allows hundreds of thousands of data points to be rendered in milliseconds. In addition to the WebGL rendering it save
captionNoThe chart's caption, which will render below the chart and will be part of exported charts. The caption can be updated after chart initialization through the `Chart.update` or `Chart.caption.update` methods.
chartNoGeneral options for the chart.
colorAxisNoA color axis for series. Visually, the color axis will appear as a gradient or as separate items inside the legend, depending on whether the axis is scalar or based on data classes. For supported color formats, see the docs article about colors. A sc
colorsNoAn array containing the default colors for the chart's series. When all colors are used, new colors are pulled from the start again. Default colors can also be set on a series or series.type basis, see column.colors, pie.colors. In styled mode, the c
creditsNoHighcharts by default puts a credits label in the lower right corner of the chart. This can be changed using these options.
dataNoThe Data module provides a simplified interface for adding data to a chart from sources like CVS, HTML tables or grid views. See also the tutorial article on the Data module. It requires the `modules/data.js` file to be loaded. Please note that the d
defsNoOptions for configuring markers for annotations. An example of the arrow marker: { arrow: { id: 'arrow', tagName: 'marker', refY: 5, refX: 5, markerWidth: 10, markerHeight: 10, children: [{ tagName: 'path', attrs: { d: 'M 0 0 L 10 5 L 0 10 Z', 'strok
drilldownNoOptions for drill down, the concept of inspecting increasingly high resolution data through clicking on chart items like columns or pie slices.
exportingNoOptions for the exporting module. For an overview on the matter, see the docs and read our Fair Usage Policy.
globalNoGlobal options that don't apply to each chart. These options must be set using the `Highcharts.setOptions` method. ```js Highcharts.setOptions({ global: { buttonTheme: { fill: '#d0d0d0' } } }); ```
langNoAn object containing language-related strings and settings. A typical setup uses `Highcharts.setOptions` to make the options apply to all charts in the same page. ```js Highcharts.setOptions({ lang: { locale: 'fr' } }); ```
legendNoThe legend is a box containing a symbol and name for each series item or point item in the chart. Each series (or points in case of pie charts) is represented by a symbol and its name in the legend. It is possible to override the symbol creator funct
loadingNoThe loading options control the appearance of the loading screen that covers the plot area on chart operations. This screen only appears after an explicit call to `chart.showLoading()`. It is a utility for developers to communicate to the end user th
navigationNoA collection of options for buttons and menus appearing in the exporting module or in Stock Tools.
noDataNoOptions for displaying a message like "No data to display". This feature requires the file no-data-to-display.js to be loaded in the page. The actual text to display is set in the lang.noData option.
paneNoThe pane serves as a container for axes and backgrounds for circular gauges and polar charts. When used in `Highcharts.setOptions` for theming, the pane must be a single object, otherwise arrays are supported.
plotOptionsNoThe plotOptions is a wrapper object for config objects for each series type. The config objects for each series can also be overridden for each series item as given in the series array. Configuration options for the series are given in three levels.
responsiveNoAllows setting a set of rules to apply for different screen or chart sizes. Each rule specifies additional chart options.
seriesYesGantt series with task data
sonificationNo
subtitleNoThe chart's subtitle. This can be used both to display a subtitle below the main title, and to display random text anywhere in the chart. The subtitle can be updated after chart initialization through the `Chart.setTitle` method.
timeNoTime options that can apply globally or to individual charts. These settings affect how `datetime` axes are laid out, how tooltips are formatted, how series pointIntervalUnit works and how the Highcharts Stock range selector handles time. The common
titleNoThe chart's main title.
tooltipNoOptions for the tooltip that appears when the user hovers over a series or point.
xAxisNoThe X axis or category axis. Normally this is the horizontal axis, though if the chart is inverted this is the vertical axis. In case of multiple axes, the xAxis node is an array of configuration objects. See the Axis class for programmatic access to
yAxisNoThe Y axis or value axis. Normally this is the vertical axis, though if the chart is inverted this is the horizontal axis. In case of multiple axes, the yAxis node is an array of configuration objects. See the Axis object for programmatic access to t
zAxisNoThe Z axis or depth axis for 3D plots. See the Axis class for programmatic access to the axis.
connectorsNoDependency connector styling

TDQS

B3.3/5.0
Behavior3/5

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

The annotation provides readOnlyHint=true, indicating this is a safe read operation. The description adds context about using Highcharts.ganttChart() and provides a link to documentation, which is useful behavioral information beyond the annotation. However, it doesn't mention performance characteristics, output format, or any limitations.

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 extremely concise with just two sentences that directly state the tool's purpose and underlying technology. Every word earns its place, and it's front-loaded with the core functionality.

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 tool with 31 parameters and no output schema, the description is minimal. While annotations cover safety and the schema documents parameters well, the description doesn't address what the tool returns (image, HTML, data URL) or provide high-level guidance for using such a complex visualization tool.

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?

With 97% schema description coverage, the schema already documents most parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate given the comprehensive schema coverage.

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 the tool renders a Highcharts Gantt chart for project timelines and task scheduling, specifying the exact chart type and underlying library. It distinguishes from siblings by mentioning 'Gantt chart' specifically, though it doesn't explicitly contrast with other render_* tools.

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 the sibling tools (render_chart, render_dashboard, render_grid, render_map, render_stock_chart). The description mentions the specific chart type but doesn't explain when a Gantt chart is appropriate compared to other visualization types.

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

render_gridRender Data GridA
Read-only

Render a Highcharts Grid Lite data table for tabular data display. Standalone component — no chart required.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNoColumn definitions array with id, header, cells options, sorting config
dataNoData provider options. Use data.columns (Record<columnId, values[]>) for column-oriented data
dataTableNoDataTable options. Deprecated — use data instead
headerNoHeader structure for grouped column headers
columnDefaultsNoDefault options applied to all columns
paginationNoPagination options (enabled, pageSize)
renderingNoRendering options (rows.strictHeights, columns.distribution)
captionNoGrid caption options
descriptionNoGrid description options for accessibility
langNoLanguage/localization options
rowsNoRow data as array of objects (convenience — converted to column-oriented data internally)

TDQS

A3.5/5.0
Behavior3/5

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

The annotation provides readOnlyHint=true, indicating this is a safe read operation. The description adds context by specifying it renders a data table as a standalone component, which is useful beyond the annotation. However, it doesn't disclose other behavioral traits like performance considerations, error handling, or output format details, leaving room for improvement.

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 extremely concise with just two short sentences that directly state the tool's purpose and key constraint ('no chart required'). Every word earns its place, and it's front-loaded with essential information without any fluff or redundancy.

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?

Given the high complexity (11 parameters, nested objects) and lack of output schema, the description is somewhat incomplete. It explains what the tool does but doesn't cover return values, error cases, or detailed usage scenarios. With annotations only covering read-only status, more context would be helpful for effective tool invocation.

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?

With 100% schema description coverage, the input schema thoroughly documents all 11 parameters. The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3. It doesn't compensate for any gaps because there are none, but also doesn't enhance understanding further.

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 the tool renders a 'Highcharts Grid Lite data table for tabular data display' and specifies it's a 'standalone component — no chart required', which distinguishes it from chart-related siblings. However, it doesn't explicitly differentiate from other non-chart siblings like render_dashboard or render_gantt, keeping it from a perfect score.

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 by stating it's for 'tabular data display' and 'standalone component — no chart required', which suggests when to use it (for tables without charts) versus alternatives like render_chart. However, it lacks explicit guidance on when not to use it or comparisons to other non-chart siblings, making the guidance incomplete.

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

render_mapRender MapB
Read-only

Render an interactive Highcharts Map for geographic data visualization. Uses Highcharts.mapChart(). Input is a Highcharts Maps Options object (https://api.highcharts.com/highmaps/).

ParametersJSON Schema
NameRequiredDescriptionDefault
accessibilityNoOptions for configuring accessibility for the chart. Requires the accessibility module to be loaded. For a description of the module and information on its features, see Highcharts Accessibility.
annotationsNoA collection of annotations to add to the chart. The basic annotation allows adding custom labels or shapes. The items can be tied to points, axis coordinates or chart pixel coordinates. General options for all annotations can be set using the `Highc
boostNoOptions for the Boost module. The Boost module allows certain series types to be rendered by WebGL instead of the default SVG. This allows hundreds of thousands of data points to be rendered in milliseconds. In addition to the WebGL rendering it save
captionNoThe chart's caption, which will render below the chart and will be part of exported charts. The caption can be updated after chart initialization through the `Chart.update` or `Chart.caption.update` methods.
chartNoChart configuration — use chart.map to set the base map for all series
colorAxisNoA color axis for series. Visually, the color axis will appear as a gradient or as separate items inside the legend, depending on whether the axis is scalar or based on data classes. For supported color formats, see the docs article about colors. A sc
colorsNoAn array containing the default colors for the chart's series. When all colors are used, new colors are pulled from the start again. Default colors can also be set on a series or series.type basis, see column.colors, pie.colors. In styled mode, the c
creditsNoHighcharts by default puts a credits label in the lower right corner of the chart. This can be changed using these options.
dataNoThe Data module provides a simplified interface for adding data to a chart from sources like CVS, HTML tables or grid views. See also the tutorial article on the Data module. It requires the `modules/data.js` file to be loaded. Please note that the d
defsNoOptions for configuring markers for annotations. An example of the arrow marker: { arrow: { id: 'arrow', tagName: 'marker', refY: 5, refX: 5, markerWidth: 10, markerHeight: 10, children: [{ tagName: 'path', attrs: { d: 'M 0 0 L 10 5 L 0 10 Z', 'strok
drilldownNoOptions for drill down, the concept of inspecting increasingly high resolution data through clicking on chart items like columns or pie slices.
exportingNoOptions for the exporting module. For an overview on the matter, see the docs and read our Fair Usage Policy.
globalNoGlobal options that don't apply to each chart. These options must be set using the `Highcharts.setOptions` method. ```js Highcharts.setOptions({ global: { buttonTheme: { fill: '#d0d0d0' } } }); ```
langNoAn object containing language-related strings and settings. A typical setup uses `Highcharts.setOptions` to make the options apply to all charts in the same page. ```js Highcharts.setOptions({ lang: { locale: 'fr' } }); ```
legendNoThe legend is a box containing a symbol and name for each series item or point item in the chart. Each series (or points in case of pie charts) is represented by a symbol and its name in the legend. It is possible to override the symbol creator funct
loadingNoThe loading options control the appearance of the loading screen that covers the plot area on chart operations. This screen only appears after an explicit call to `chart.showLoading()`. It is a utility for developers to communicate to the end user th
navigationNoA collection of options for buttons and menus appearing in the exporting module or in Stock Tools.
noDataNoOptions for displaying a message like "No data to display". This feature requires the file no-data-to-display.js to be loaded in the page. The actual text to display is set in the lang.noData option.
paneNoThe pane serves as a container for axes and backgrounds for circular gauges and polar charts. When used in `Highcharts.setOptions` for theming, the pane must be a single object, otherwise arrays are supported.
plotOptionsNoThe plotOptions is a wrapper object for config objects for each series type. The config objects for each series can also be overridden for each series item as given in the series array. Configuration options for the series are given in three levels.
responsiveNoAllows setting a set of rules to apply for different screen or chart sizes. Each rule specifies additional chart options.
seriesYesMap series array. Use type:'map' with mapData (GeoJSON/TopoJSON FeatureCollection). Also supports mapline, mappoint, mapbubble series types.
sonificationNo
subtitleNoThe chart's subtitle. This can be used both to display a subtitle below the main title, and to display random text anywhere in the chart. The subtitle can be updated after chart initialization through the `Chart.setTitle` method.
timeNoTime options that can apply globally or to individual charts. These settings affect how `datetime` axes are laid out, how tooltips are formatted, how series pointIntervalUnit works and how the Highcharts Stock range selector handles time. The common
titleNoThe chart's main title.
tooltipNoOptions for the tooltip that appears when the user hovers over a series or point.
xAxisNoThe X axis or category axis. Normally this is the horizontal axis, though if the chart is inverted this is the vertical axis. In case of multiple axes, the xAxis node is an array of configuration objects. See the Axis class for programmatic access to
yAxisNoThe Y axis or value axis. Normally this is the vertical axis, though if the chart is inverted this is the horizontal axis. In case of multiple axes, the yAxis node is an array of configuration objects. See the Axis object for programmatic access to t
zAxisNoThe Z axis or depth axis for 3D plots. See the Axis class for programmatic access to the axis.
mapNavigationNoMap navigation: zoom buttons, mouse wheel zoom, etc.
mapViewNoMap view: projection (name, rotation), center, zoom

TDQS

B3.3/5.0
Behavior3/5

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

The annotations declare readOnlyHint=true, indicating a safe read operation. The description adds that it 'Render[s] an interactive Highcharts Map,' which implies visual output generation but doesn't contradict the read-only hint. However, it lacks behavioral details like performance characteristics, output format (e.g., returns HTML, image, or URL), or any side effects. With annotations covering safety, the description adds minimal context beyond that.

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 extremely concise—two sentences that directly state the tool's function and input format. Every word contributes essential information without redundancy. It is front-loaded with the core purpose and efficiently references external resources for details.

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?

Given the tool's complexity (32 parameters, nested objects, no output schema) and rich schema coverage, the description is minimal but not incomplete. It correctly identifies the tool as a map renderer and references external API docs. However, it doesn't explain the return value or provide usage examples, which could aid an agent in understanding what to expect after invocation. The annotations help with safety, but more context on output would improve completeness.

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 97%, meaning the schema thoroughly documents the 32 parameters. The description only adds that the input is a 'Highcharts Maps Options object' with a link to external documentation. This provides high-level context but no specific parameter semantics beyond what the schema already offers. Given the high coverage, a baseline score of 3 is appropriate.

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 the tool's purpose: 'Render an interactive Highcharts Map for geographic data visualization.' It specifies the verb ('Render'), resource ('Highcharts Map'), and context ('geographic data visualization'). However, it doesn't explicitly differentiate from sibling tools like render_chart or render_stock_chart, which likely render different chart types.

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?

The description provides no guidance on when to use this tool versus alternatives. It mentions the technical implementation ('Uses Highcharts.mapChart()') but doesn't indicate scenarios where a map is preferred over other chart types, nor does it reference sibling tools. This leaves the agent without context for tool selection.

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

render_stock_chartRender Stock ChartB
Read-only

Render a Highcharts Stock chart for financial/time-series data. Input is a Highcharts Stock Options object (https://api.highcharts.com/highstock/).

ParametersJSON Schema
NameRequiredDescriptionDefault
accessibilityNoOptions for configuring accessibility for the chart. Requires the accessibility module to be loaded. For a description of the module and information on its features, see Highcharts Accessibility.
annotationsNoA collection of annotations to add to the chart. The basic annotation allows adding custom labels or shapes. The items can be tied to points, axis coordinates or chart pixel coordinates. General options for all annotations can be set using the `Highc
boostNoOptions for the Boost module. The Boost module allows certain series types to be rendered by WebGL instead of the default SVG. This allows hundreds of thousands of data points to be rendered in milliseconds. In addition to the WebGL rendering it save
captionNoThe chart's caption, which will render below the chart and will be part of exported charts. The caption can be updated after chart initialization through the `Chart.update` or `Chart.caption.update` methods.
chartNoGeneral options for the chart.
colorAxisNoA color axis for series. Visually, the color axis will appear as a gradient or as separate items inside the legend, depending on whether the axis is scalar or based on data classes. For supported color formats, see the docs article about colors. A sc
colorsNoAn array containing the default colors for the chart's series. When all colors are used, new colors are pulled from the start again. Default colors can also be set on a series or series.type basis, see column.colors, pie.colors. In styled mode, the c
creditsNoHighcharts by default puts a credits label in the lower right corner of the chart. This can be changed using these options.
dataNoThe Data module provides a simplified interface for adding data to a chart from sources like CVS, HTML tables or grid views. See also the tutorial article on the Data module. It requires the `modules/data.js` file to be loaded. Please note that the d
defsNoOptions for configuring markers for annotations. An example of the arrow marker: { arrow: { id: 'arrow', tagName: 'marker', refY: 5, refX: 5, markerWidth: 10, markerHeight: 10, children: [{ tagName: 'path', attrs: { d: 'M 0 0 L 10 5 L 0 10 Z', 'strok
drilldownNoOptions for drill down, the concept of inspecting increasingly high resolution data through clicking on chart items like columns or pie slices.
exportingNoOptions for the exporting module. For an overview on the matter, see the docs and read our Fair Usage Policy.
globalNoGlobal options that don't apply to each chart. These options must be set using the `Highcharts.setOptions` method. ```js Highcharts.setOptions({ global: { buttonTheme: { fill: '#d0d0d0' } } }); ```
langNoAn object containing language-related strings and settings. A typical setup uses `Highcharts.setOptions` to make the options apply to all charts in the same page. ```js Highcharts.setOptions({ lang: { locale: 'fr' } }); ```
legendNoThe legend is a box containing a symbol and name for each series item or point item in the chart. Each series (or points in case of pie charts) is represented by a symbol and its name in the legend. It is possible to override the symbol creator funct
loadingNoThe loading options control the appearance of the loading screen that covers the plot area on chart operations. This screen only appears after an explicit call to `chart.showLoading()`. It is a utility for developers to communicate to the end user th
navigationNoA collection of options for buttons and menus appearing in the exporting module or in Stock Tools.
noDataNoOptions for displaying a message like "No data to display". This feature requires the file no-data-to-display.js to be loaded in the page. The actual text to display is set in the lang.noData option.
paneNoThe pane serves as a container for axes and backgrounds for circular gauges and polar charts. When used in `Highcharts.setOptions` for theming, the pane must be a single object, otherwise arrays are supported.
plotOptionsNoThe plotOptions is a wrapper object for config objects for each series type. The config objects for each series can also be overridden for each series item as given in the series array. Configuration options for the series are given in three levels.
responsiveNoAllows setting a set of rules to apply for different screen or chart sizes. Each rule specifies additional chart options.
seriesNoSeries options for specific data and the data itself. In TypeScript you have to cast the series options to specific series types, to get all possible options for a series. ```ts // TypeScript example Highcharts.chart('container', { series: [{ color:
sonificationNo
subtitleNoThe chart's subtitle. This can be used both to display a subtitle below the main title, and to display random text anywhere in the chart. The subtitle can be updated after chart initialization through the `Chart.setTitle` method.
timeNoTime options that can apply globally or to individual charts. These settings affect how `datetime` axes are laid out, how tooltips are formatted, how series pointIntervalUnit works and how the Highcharts Stock range selector handles time. The common
titleNoThe chart's main title.
tooltipNoOptions for the tooltip that appears when the user hovers over a series or point.
xAxisNoThe X axis or category axis. Normally this is the horizontal axis, though if the chart is inverted this is the vertical axis. In case of multiple axes, the xAxis node is an array of configuration objects. See the Axis class for programmatic access to
yAxisNoThe Y axis or value axis. Normally this is the vertical axis, though if the chart is inverted this is the horizontal axis. In case of multiple axes, the yAxis node is an array of configuration objects. See the Axis object for programmatic access to t
zAxisNoThe Z axis or depth axis for 3D plots. See the Axis class for programmatic access to the axis.
navigatorNoNavigator configuration for data overview pane at bottom of chart
rangeSelectorNoRange selector buttons and date input (1m, 3m, 6m, YTD, 1y, All)
scrollbarNoScrollbar configuration
stockToolsNoStock tools toolbar configuration for technical analysis

TDQS

B3.3/5.0
Behavior3/5

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

The annotation declares readOnlyHint=true, indicating this is a safe read operation. The description adds that it 'renders' a chart, which aligns with this being a visualization tool rather than a data mutation tool. However, it doesn't provide additional behavioral context like performance characteristics, output format (image vs. interactive), or any constraints beyond the Highcharts API reference.

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 extremely concise—just two sentences that directly state the tool's purpose and input format. Every word serves a clear purpose with no redundancy or unnecessary elaboration. It's front-loaded with the core functionality.

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?

Given the complex 34-parameter schema with rich descriptions and the readOnlyHint annotation, the description is minimally adequate. However, it lacks information about what the tool actually returns (chart image, HTML, interactive widget) since there's no output schema. For a visualization tool, knowing the output format is crucial for proper usage.

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?

With 97% schema description coverage, the input schema already documents the 34 parameters extensively. The description adds minimal value by stating the input is a 'Highcharts Stock Options object' and providing a URL reference. This doesn't significantly enhance understanding beyond what's in the schema, meeting the baseline for high schema coverage.

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 the tool's purpose: 'Render a Highcharts Stock chart for financial/time-series data.' It specifies the chart type (Highcharts Stock) and the data domain (financial/time-series). However, it doesn't explicitly differentiate from sibling tools like 'render_chart' or 'render_dashboard' beyond mentioning 'Stock' specifically.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or specify scenarios where this stock chart tool is preferred over general chart rendering tools. The only contextual clue is 'financial/time-series data,' but this isn't framed as explicit usage guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv2.4.1
    • First observedrender_chart
    • First observedrender_dashboard
    • First observedrender_gantt
    • First observedrender_grid
    • First observedrender_map
    • First observedrender_stock_chart

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific Highcharts chart types or components (e.g., standard chart, dashboard, Gantt, grid, map, stock chart). There is no overlap in functionality, and the descriptions clearly differentiate each tool's use case, preventing misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with 'render_' as the prefix, followed by the specific chart or component type (e.g., render_chart, render_dashboard). This predictable naming scheme enhances readability and usability across the tool set.

Tool Count5/5

With 6 tools, the server is well-scoped for rendering various Highcharts visualizations, covering key chart types and components. Each tool earns its place by addressing distinct visualization needs, making the count appropriate for the domain without being overwhelming or insufficient.

Completeness5/5

The tool set provides complete coverage for rendering Highcharts visualizations, including standard charts, dashboards, Gantt charts, data grids, maps, and stock charts. This covers the core Highcharts library and major extensions, leaving no obvious gaps for the server's purpose of chart rendering.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers