GraphMake

Turn data into infographics (PNG/SVG): 90+ templates, or KPI cards, charts, timelines and maps.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
87%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,734Tokens (tool definitions)
~2.1 KBTypical response size
Moderate attention impact (1.35% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "graphmake": {
      "url": "https://graphmake.com/api/mcp"
    }
  }
}

Remote endpoints

https://graphmake.com/api/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢render_infographic(script, format, width, height)

Render GraphMake Script into an infographic image (PNG or SVG). GraphMake Script is a short line-based format, e.g. `title "..."`, `kpi "Label" "Value" icon=users`, `bar_chart "T" { Jan: 42\n Feb: 68 }`, `timeline { 2024: "Event" "detail" }`, `style bold` and `row { ... }` for side-by-side blocks; the full syntax is in the GraphMake Script reference. Returns the image and a link that opens it in the GraphMake editor for hand-editing and export. Script errors come back with the line number.

Input Schema

{
  "type": "object",
  "properties": {
    "script": {
      "type": "string",
      "description": "The GraphMake Script to render."
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "svg"
      ],
      "description": "png (default) returns an image; svg returns the SVG markup as text, ready to save to a file."
    },
    "width": {
      "type": "number",
      "description": "Optional canvas width in px (max 4000)."
    },
    "height": {
      "type": "number",
      "description": "Optional canvas height in px (max 8000)."
    }
  },
  "required": [
    "script"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "enum": [
        "png",
        "svg"
      ]
    },
    "bytes": {
      "type": "integer",
      "description": "Size of the PNG or SVG in bytes. The image itself is in the content."
    },
    "editorUrl": {
      "type": "string",
      "description": "Opens the result in the free GraphMake editor, where it can be restyled and exported as PNG, SVG or PDF."
    }
  },
  "required": [
    "format",
    "bytes",
    "editorUrl"
  ]
}
🟢graphmake_script_reference

The full GraphMake Script language reference: every widget, chart, theme, style, size and syntax rule, with examples.

Input Schema

{
  "type": "object",
  "properties": {}
}

Output Schema

{
  "type": "object",
  "properties": {
    "reference": {
      "type": "string",
      "description": "The language reference as Markdown."
    }
  },
  "required": [
    "reference"
  ]
}
🟢list_templates(query, category)

List GraphMake's designed infographic templates: id, name, category, size and what each is for. An optional query such as "sales report", "timeline", "resume" or "comparison" ranks the best matches first; an optional category filters the list.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Optional words describing the infographic, e.g. \"sales report\"."
    },
    "category": {
      "type": "string",
      "enum": [
        "business",
        "education",
        "marketing",
        "health",
        "technology",
        "general"
      ],
      "description": "Optional category filter."
    }
  }
}

Output Schema

{
  "type": "object",
  "properties": {
    "count": {
      "type": "integer"
    },
    "templates": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "business",
              "education",
              "marketing",
              "health",
              "technology",
              "general"
            ]
          },
          "width": {
            "type": "integer",
            "description": "Canvas width in px."
          },
          "height": {
            "type": "integer",
            "description": "Canvas height in px."
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "category",
          "width",
          "height",
          "description"
        ]
      },
      "description": "Best match first when a query was given."
    }
  },
  "required": [
    "count",
    "templates"
  ]
}
🟢get_template(id, preview)

Read one template: its size, description and every editable text and number, as field keys with their current values (e.g. "w0.text": "Annual Report 2026", "w5.datasets.0.values": [820, 1050]). The same keys change the template when it is rendered. With preview set to true, the template's preview image is included.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Template id, e.g. \"business-stats\"."
    },
    "preview": {
      "type": "boolean",
      "description": "Also return the template preview image (default false)."
    }
  },
  "required": [
    "id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "category": {
      "type": "string",
      "enum": [
        "business",
        "education",
        "marketing",
        "health",
        "technology",
        "general"
      ]
    },
    "width": {
      "type": "integer",
      "description": "Canvas width in px."
    },
    "height": {
      "type": "integer",
      "description": "Canvas height in px."
    },
    "description": {
      "type": "string"
    },
    "previewUrl": {
      "type": "string",
      "description": "The template preview image."
    },
    "fields": {
      "type": "array",
      "description": "Every editable text and number, with the key that changes it.",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Field key, e.g. \"w0.text\" or \"w5.datasets.0.values\"."
          },
          "widget": {
            "type": "string",
            "description": "The widget type the field belongs to."
          },
          "value": {
            "description": "Current value: text, a number, or a list."
          }
        },
        "required": [
          "key",
          "widget",
          "value"
        ]
      }
    }
  },
  "required": [
    "id",
    "name",
    "category",
    "width",
    "height",
    "description",
    "previewUrl",
    "fields"
  ]
}
🟢render_template(id, changes, format)

Render a template filled with new content. "changes" maps the template's field keys to new values, e.g. {"w0.text": "Q3 Sales Review", "w5.labels": ["Jul","Aug","Sep"], "w5.datasets.0.values": [42, 51, 63]}. Fields not included keep the template's sample content. Replacing a whole list (e.g. "w7.values": [{"label": "A", "value": 40}, ...]) changes how many items it has; each item keeps the colours of the item it replaces. Returns the image and a link that opens the filled template in the GraphMake editor.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Template id, e.g. \"business-stats\"."
    },
    "changes": {
      "type": "object",
      "description": "Field key -> new value, e.g. {\"w0.text\": \"Q3 Sales Review\"}."
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "svg"
      ],
      "description": "png (default) returns an image; svg returns the SVG markup as text."
    }
  },
  "required": [
    "id"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "svg"
      ]
    },
    "bytes": {
      "type": "integer",
      "description": "Size of the PNG or SVG in bytes. The image itself is in the content."
    },
    "width": {
      "type": "integer",
      "description": "Width of the returned image in px (tall templates come back narrower)."
    },
    "editorUrl": {
      "type": "string",
      "description": "Opens the result in the free GraphMake editor, where it can be restyled and exported as PNG, SVG or PDF."
    }
  },
  "required": [
    "id",
    "name",
    "format",
    "bytes",
    "width",
    "editorUrl"
  ]
}
🟢open_in_editor(script)

Build a GraphMake editor URL that opens with the script already rendered on an editable canvas, where the infographic can be restyled by hand and exported as PNG, SVG or PDF.

Input Schema

{
  "type": "object",
  "properties": {
    "script": {
      "type": "string",
      "description": "The GraphMake Script to load."
    }
  },
  "required": [
    "script"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "editorUrl": {
      "type": "string",
      "description": "Opens the result in the free GraphMake editor, where it can be restyled and exported as PNG, SVG or PDF."
    }
  },
  "required": [
    "editorUrl"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools