Skip to main content
Glama
neocortex

QuickChart MCP Server

by neocortex

QuickChart MCP Server

An Python MCP server implementation for QuickChart.io, allowing you to generate and download charts directly through Claude Desktop and other MCP clients.

Sample Chart

Installation

# Clone the repository
git clone https://github.com/yourusername/quickchart-mcp.git
cd quickchart-mcp

Related MCP server: Quick Chart MCP Server

Usage

Running as a standalone MCP server

uv run src/server.py

Configuring in Claude Desktop and other MCP clients

Add the following configuration to your Claude Desktop configuration file or equivalent for other MCP clients:

"quickchart": {
  "command": "/path/to/uv",
  "args": [
    "run",
    "--directory",
    "/path/to/quickchart-mcp/src",
    "server.py"
  ]
}

Make sure to replace /path/to/uv with the actual path to your uv executable and /path/to/quickchart-mcp/src with the path to your quickchart-mcp source directory.

Available Tool

generate_chart

Generates a chart using QuickChart and optionally downloads it.

Features:

  • Generate a wide variety of chart types: bar, line, pie, doughnut, radar, polarArea, scatter, bubble, radialGauge, and speedometer

  • Easily customize your charts with data labels, multiple datasets, custom colors, and extensive configuration options

  • Retrieve a URL to view your chart online or download it directly as an image file

  • Uses Pydantic models for robust input validation and type checking

Basic Parameters:

  • chart_input: Chart configuration object

  • download: Whether to download the chart (default: False)

  • output_path: Path to save the chart image (optional)

Example:

QuickChart uses Chart.js configurations as input to render images:

  {
    "type": "line",
    "datasets": [
      {
        "label": "ETH Options Open Interest",
        "data": [2756584.1, 2277777.2, 3131823.3, 2806715.4, 2798619.4, 2795944.7],
        "fill": true,
        "borderColor": "#3498db",
        "backgroundColor": "rgba(52, 152, 219, 0.1)"
      }
    ],
    "labels": ["Apr 20", "Apr 25", "May 1", "May 5", "May 10", "May 15"],
    "options": {
      "plugins": {
        "title": {
          "display": true,
          "text": "ETH Options Open Interest"
        }
      },
      "scales": {
        "y": {
          "beginAtZero": false,
          "title": {
            "display": true,
            "text": "Open Interest (ETH)"
          }
        }
      }
    }
  }

The tool returns a QuickChart URL (e.g., https://quickchart.io/chart?c=...) that can be accessed directly in a browser, displayed inline in applications, or embedded in web pages. When download is enabled, it returns the local path to the saved image file instead. Output of above config shown in extras/output_chart.png.

See the QuickChart documentation for more configuration options.

Requirements

  • Python 3.12+

  • Dependencies: httpx, mcp, python-dotenv, pydantic, quickchart-io

Available Tools

1 tool
generate_chartA
Generate a chart using QuickChart.

Args:
    chart_input: Chart configuration including type, datasets, labels, title, and options
    download: If True, download the chart image and return the saved file path; otherwise return the URL
    output_path: Path where the chart image should be saved if download=True. If not provided,
                the chart will be saved to the script directory.
    
Returns:
    The URL of the generated chart if download=False, otherwise the path where the chart was saved
ParametersJSON Schema
NameRequiredDescriptionDefault
downloadNo
chart_inputYes
output_pathNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly explains the two output modes (URL vs. file path), the default output_path behavior, and the return value. It also implicitly discloses file-writing side effects when download=True, which is valuable context.

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 well-structured with Args and Returns sections, and every sentence provides essential information. It is concise with no redundancy, making it easy for an AI agent to parse and act upon.

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?

The description covers the core aspects: inputs, download options, and return values. It does not mention potential network dependencies or error conditions, but for a tool of this complexity, the provided context is largely adequate. The presence of a detailed input schema further fills in the gaps.

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

Parameters5/5

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

The schema's top-level parameters have 0% description coverage, so the description must compensate. It fully does: chart_input is summarized as 'configuration including type, datasets, labels, title, and options', download explains its boolean effect, and output_path clarifies its optional nature and default destination. This adds significant meaning beyond the raw schema.

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 'Generate a chart using QuickChart', which is a specific verb+resource combination. It unambiguously identifies the tool's purpose and the service it wraps, leaving no room for confusion about what the tool does.

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 does not discuss when to use this tool versus alternatives, and no sibling tools are provided for context. It offers indirect usage guidance through parameter descriptions (e.g., download=True to save), but there is no explicit statement of when this tool should be chosen.

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

TDQS

A4.4/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap. The tool's purpose is singular and clear.

Naming Consistency5/5

The single tool name 'generate_chart' follows a clear verb_noun pattern, and with only one tool, consistency is inherently maintained.

Tool Count3/5

The server has only one tool, which is borderline for typical expectations. However, for the narrow domain of chart generation, it may be sufficient, though it feels thin.

Completeness5/5

The tool covers both URL generation and file download, with configurable output paths, fully addressing the core chart generation workflow without obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

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/neocortex/quickchart-mcp-server'

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