Connect an AI assistant (MCP)

MCP is how AI assistants like Claude connect to other apps. Connect yours to Chartjuice and you can ask for a chart in plain words: the assistant makes it, shows it to you and saves it to your account.

On this page

What you need

A Chartjuice account, which is free. If you do not have one, you can make it while you connect. Connecting an assistant is part of every Chartjuice plan, Free included.

Claude, ChatGPT and most other assistants connect by signing you in. You give the assistant the address of Chartjuice, sign in to Chartjuice in your browser, and choose Allow. There is no key to copy and nothing to install.

An assistant that cannot sign you in connects with an API key instead. Connect with an API key covers that.

Connect your assistant

Every assistant asks for the same thing: the address of the Chartjuice server. Claude calls what you are adding a custom connector. ChatGPT, Cursor and VS Code call it an MCP server. Both names mean the same thing. This is the address:

https://chartjuice.com/mcp

Find your assistant below. Each one sends you to a Chartjuice page that names the assistant and lists what it will be able to do. Choose Allow there and you go back to the assistant, connected.

Add Chartjuice to Claude

This works in Claude on the web and in the Claude desktop app, on every Claude plan. On the Free plan, Claude lets you add one connector of your own.

  1. In Claude, open Customize, then Connectors.
  2. Choose Add, then Add custom connector.
  3. Enter a name, such as Chartjuice, and paste the address above. Choose Continue.
  4. Claude shows the sign-in settings it found. If there is a setting called OAuth client, set it to Register automatically. Choose Continue, then Add.
  5. Claude sends you to Chartjuice, either now or the first time it uses the connector. Sign in, check that the page names Claude, and choose Allow.

Then start a chat and ask for a chart. If Claude does not use Chartjuice, open the + menu in the chat, choose Connectors, and turn Chartjuice on.

On a Team or Enterprise plan, an owner adds the connector first, under Organization settings, then Connectors. After that, each person finds Chartjuice under Customize, then Connectors, and chooses Connect.

Add Chartjuice to ChatGPT

Use ChatGPT on the web. If you use ChatGPT through a workplace, its settings may not let you add a server yourself.

  1. Go to chatgpt.com/plugins.
  2. Choose the plus button, then Add custom MCP server.
  3. Enter a name, such as Chartjuice. Under Connection, paste the address above as the server URL.
  4. For authentication, choose OAuth.
  5. Read the warning, choose I understand and want to continue, then Create as a plugin.
  6. Install the plugin that this makes. When ChatGPT sends you to Chartjuice, sign in, check that the page names ChatGPT, and choose Allow.

To use it, type @ in a chat and pick Chartjuice.

Add Chartjuice to Claude Code

Claude Code is the assistant from Anthropic that runs in a terminal. Run this command in a terminal:

claude mcp add --transport http chartjuice --scope user https://chartjuice.com/mcp

That adds Chartjuice for every project on your computer. Start Claude Code and type /mcp. It shows that Chartjuice needs you to sign in: follow the steps in your browser, and choose Allow.

Add Chartjuice to Cursor

Open the file ~/.cursor/mcp.json, or create it if it does not exist yet, and put this in it:

{
  "mcpServers": {
    "chartjuice": {
      "url": "https://chartjuice.com/mcp"
    }
  }
}

Cursor signs you in to a server that asks for it. When it asks about Chartjuice, sign in in your browser and choose Allow. If the file already lists other servers, add the chartjuice entry beside them, inside mcpServers.

Add Chartjuice to VS Code

Open the Command Palette, run MCP: Open User Configuration, and put this in the file that opens:

{
  "servers": {
    "chartjuice": {
      "type": "http",
      "url": "https://chartjuice.com/mcp"
    }
  }
}

When VS Code starts the server, it registers itself with Chartjuice and asks you to sign in. Do that in your browser and choose Allow.

What a connected app can and can't do

An assistant you connect by signing in is listed on your account page, under Connected apps.

It can:

  • make, edit, export and delete your charts
  • read and set your brand palette
  • see your plan and the email address you sign in with

It can't:

  • see or change your billing or payment details
  • add or remove teammates
  • change your email address
  • delete your account
  • make an API key for itself

"Your charts" means every chart saved to your account, with its data, including the ones you made yourself in the editor.

Chartjuice holds every connected app to this list, whatever the app asks for. Your plan's limits apply to it as they do to you.

Disconnect an app

On your account page, under Connected apps, choose Disconnect beside the app. It stops being able to see or change your charts right away. Your charts stay as they are, and you can connect the app again later. Then remove Chartjuice from the assistant's own settings, so it stops trying.

Connect with an API key

Use a key when your assistant cannot sign you in, or when you want something that runs on its own, like a script.

A key is a password for programs: it lets your assistant work with your charts without signing in as you. Create one on your account page, under API keys. Copy it when it appears, because it is shown once.

In each example, put your own key in place of YOUR_API_KEY. When you make a new key, the panel that shows it has these examples with the key already in them.

Claude Code, with a key

Run this command in a terminal:

claude mcp add --transport http chartjuice --scope user https://chartjuice.com/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

That adds Chartjuice for every project on your computer. Start Claude Code and type /mcp to check that it is connected.

Cursor, with a key

Open the file ~/.cursor/mcp.json, or create it if it does not exist yet, and put this in it:

{
  "mcpServers": {
    "chartjuice": {
      "url": "https://chartjuice.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

To use Chartjuice in one project only, save the same file as .cursor/mcp.json in that project. If the file already lists other servers, add the chartjuice entry beside them, inside mcpServers.

VS Code, with a key

Open the Command Palette, run MCP: Open User Configuration, and put this in the file that opens:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "chartjuice-api-key",
      "description": "Chartjuice API key",
      "password": true
    }
  ],
  "servers": {
    "chartjuice": {
      "type": "http",
      "url": "https://chartjuice.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:chartjuice-api-key}"
      }
    }
  }
}

VS Code asks for your key the first time it starts the server and keeps it for you, so the key is never written into the file. To set it up for one project only, save the same content as .vscode/mcp.json in that project.

Claude, with a key

Signing in, as described at the top of this page, is the shorter way to connect Claude. Claude can also connect with a key. Anthropic is still rolling that out, so your account may not have it yet.

  1. In Claude, open Customize, then Connectors, and choose Add custom connector.
  2. Enter a name, such as Chartjuice, and the address above.
  3. For Authentication, choose No sign-in.
  4. Open Request headers. Pick authorization as the header name, and for its value enter the word Bearer, a space, and your key.
  5. Choose Add.

If the window has no Request headers section, your account does not have this yet.

Another assistant

Any assistant that can connect to an MCP server at a web address can use Chartjuice. If it can sign you in (the feature is often called OAuth), give it the address above and nothing else. If it cannot, give it the address and this header:

Authorization: Bearer YOUR_API_KEY

What you can ask for

Once the assistant is connected, ask in plain words. For example:

  • "Make a bar chart of these sales figures", with your data pasted underneath.
  • "Turn it sideways and put the biggest bar at the top."
  • "Make the bars dark green and add the title Q3 revenue."
  • "Show me the chart."
  • "Is it easy to read? Fix anything that is not."
  • "Find my chart about churn and put this month's numbers in it."
  • "Make a copy as a line chart so I can compare the two."
  • "Give me a link to that chart as a picture, for my newsletter."

The assistant shows you the chart as a picture and gives you a link. The chart is saved to your account, so you can open the link and carry on by hand in the editor.

An example, start to finish

Say you paste four rows of data and type this:

Make a bar chart from this data, make it horizontal, sort it, and show me.

Product,Units
Tea,420
Coffee,910
Juice,650
Water,300

The assistant decides which tools to use and in what order. Here is what it does. You never have to name a tool or write any of this yourself. Where a step shows $CHART_ID, the assistant sends the id that Chartjuice gave the new chart in step 1.

  1. Create a chart. Makes a bar chart from the data, gives it a title and saves it to your account. The tool is create_chart, and this is what the assistant sends:

    {
      "type": "bar",
      "data": "Product,Units\nTea,420\nCoffee,910\nJuice,650\nWater,300",
      "ops": [
        {
          "op": "setTitle",
          "title": {
            "text": "Units sold by product"
          }
        }
      ]
    }
  2. Edit a chart. Turns the bars sideways and sorts them by size. The tool is apply_ops, and this is what the assistant sends:

    {
      "id": "$CHART_ID",
      "ops": [
        {
          "op": "setVariants",
          "variants": {
            "bar": {
              "orientation": "horizontal"
            }
          }
        },
        {
          "op": "addTransform",
          "transform": {
            "type": "sort",
            "column": "c2",
            "direction": "desc"
          }
        }
      ]
    }
  3. Render a chart. Draws the chart as a picture, so the assistant can check it and show it to you. The tool is render_chart, and this is what the assistant sends:

    {
      "id": "$CHART_ID",
      "scale": 2
    }

Then it answers you with the picture and a link like https://chartjuice.com/charts/7b0c9f1e-6c1d-4c57-9a47-2f1f0a3b8e21, which opens the chart in the editor.

What the assistant can do

Each thing the assistant can do is called a tool. It picks the tools itself. They are listed here so you know what you are letting it do: some only read, some change your charts, and one deletes.

The assistant reads these same descriptions, so they are written to it: "you" is the assistant, and "the person" is you.

Charts

List charts

list_chartsOnly reads

The account's saved charts, most recently changed first. Returns each chart's id, name, type and the address a person opens it at. Use it to find a chart someone names, then read it with get_chart. Page through with cursor.

Get a chart

get_chartOnly reads

A chart as it is now, without its rows: its type and options, which column plays which role, the columns, the steps applied to the data, the main style settings and any warnings. Read this before editing a chart you did not make in this conversation, to get the column ids that ops use and to see what is already set. To see how the chart looks, call render_chart.

Create a chart

create_chartChanges your charts or account

Save a new chart. Start from a chart type and your own data (type with data), from a chart type with sample data (type alone), or from a gallery example (example). ops are applied before it is saved, so one call can make and style a chart. Columns get the ids c1, c2, c3 and so on, in the order they appear in the data, so ops can name them in the same call. The answer has the chart's id to use from then on, its url to give the person, its columns with their ids, and its warnings, which are what lint_chart would report. Call render_chart next to look at the result, and apply_ops to change it. If you are not sure which type suits the data, list_chart_types says what each is for. On the Free plan this is refused with chart_limit_reached once the account has its limit of saved charts.

Edit a chart

apply_opsChanges your charts or account

Change a chart with ops, the same edits the editor makes: its type, which columns it charts, steps such as sort and top N, titles, axes, colors, and the data itself. get_op_catalog lists every op and its fields: read it once before the first edit. The ops apply together or not at all; if one is wrong the answer is invalid_ops with what to fix, and the chart is unchanged. Returns the chart's warnings after the change, which are what lint_chart would report, so there is no need to call that as well. Use column ids (c1, c2), not column names: create_chart answers with them, and get_chart has them for any chart. Afterwards call render_chart to check how the chart looks.

Rename a chart

rename_chartChanges your charts or account

Change a chart's name in My charts. The title drawn on the chart is separate: change that with the setTitle op.

Duplicate a chart

duplicate_chartChanges your charts or account

Save a copy of a chart, named "Copy of" and the original's name. Use it to try another design without changing the original. The copy counts toward the Free plan's saved charts like any other chart.

Delete a chart

delete_chartDeletes

Delete a chart for good. There is no undo, so use it only when the person asked for that chart to be deleted.

Check a chart

lint_chartOnly reads

Readability problems with a chart as it is now: too many slices, colors too faint to see, an axis that misleads. An empty list means none were found. create_chart, apply_ops and set_data already answer with the same list as warnings, so call this for a chart you have not just changed. Fix a warn with apply_ops. An info is a suggestion: leave it when it is about something the person asked for, such as a color they chose. A pie reads best with 6 slices or fewer: a topN step with n set to 5 keeps the five largest and adds the rest up as a sixth.

Render a chart

render_chartOnly reads

A saved chart as a PNG image, at 1 or 2 times its size, so you can see what the person will see. Look at it after creating or editing a chart: check that the labels fit, the colors can be told apart and the chart says what it should. The warnings that create_chart and apply_ops answer with cover the problems that are easy to miss by eye; for a chart you have not just changed, lint_chart gives them. Counts toward the daily renders. With data, the chart is drawn with that data in place of its own, in the same design: the saved chart is a template and is not changed, and the image counts toward the month's image renders instead, once for each different picture. On the Free plan the image carries a small chartjuice.com mark, as downloads from the editor do.

Data

Replace the data

set_dataChanges your charts or account

Replace a chart's data with CSV, TSV or JSON rows, read the way a pasted or uploaded file is (header row, numbers and dates detected). Use it to show new numbers in a chart that is already designed. If the new data has the columns the chart had, by name, the chart keeps its roles, steps and colors. If the columns are different, roles are picked again: read the chart with get_chart to see what it charts now.

Describe the data

describe_dataOnly reads

A summary of each column the chart is drawn from, after its steps: numbers get their lowest, highest and average; text and dates get their most common values. Use it to understand data you haven't seen. For the rows themselves, use query_data.

Query the data

query_dataOnly reads

Rows of the chart's data after its steps, with extra steps of your own if you like (they are tried, not saved). Use it to check what a sort, filter or total would give before adding it with apply_ops.

Images

Render a chart from data

render_imageOnly reads

A PNG of a chart drawn from a chart type and data you give, with nothing saved to the account. Use it when the person wants a picture and not a chart to keep or edit; to make a chart they can open later, use create_chart. ops style it before it is drawn. Counts toward the month's image renders, once for each different picture: 100 on the Free plan and 1,000 on Pro. On the Free plan the image carries a small chartjuice.com mark.

Create an image link

create_image_urlChanges your charts or account

A link that shows a saved chart as an image to anyone who has it, with no key and no sign-in: for an <img> tag in an email, a doc, a dashboard or another site's page. The link is a live image. It shows the chart as it is now and changes when the chart is edited, so the picture in the email stays current. With data, the link draws the chart with that data in place of its own. The link is signed, so nobody can change it to show another chart. It works until its signing key is rotated or revoked on the account page, or for expires_in seconds if you give that. The link is for the site it was made on. Making a link costs nothing. Its picture counts toward the month's image renders once each time the chart changes, and once at the start of each month, however many people open it. On the Free plan the image carries a small chartjuice.com mark.

Brand palette

Get the brand palette

get_brand_paletteOnly reads

The account's saved brand palette: the colors it uses for its own charts. null when none is saved. Apply it to a chart with the setPalette op.

Set the brand palette

set_brand_paletteChanges your charts or account

Save the account's brand palette, replacing the one it had, or clear it with null. Saving a palette needs the Pro plan (forbidden_plan otherwise).

Get colors from a website

extract_brand_paletteOnly reads

The brand colors a website uses, read from its page and stylesheets. Nothing is saved: look at the colors, then save the ones you want with set_brand_palette. Needs the Pro plan, and an account can look up 20 websites a day.

Account

Get the account

get_accountOnly reads

The plan, how many charts are saved against the plan's limit, and what is left of the request, render and image allowances. Check it before making many charts or images, and to explain a chart_limit_reached, render_limit_reached or image_limit_reached refusal.

Reference

List chart types

list_chart_typesOnly reads

Every chart type: what it is for, the data it needs (one column per role), and a short guide to its options. Read it to choose a chart for some data, then make it with create_chart.

List examples

list_examplesOnly reads

The gallery of example charts, each with sample data and a finished design. Pass an id as example to create_chart to start from one.

List palettes

list_palettesOnly reads

The preset color palettes. Apply one to a chart with the setPalette op and its colors.

Get the op catalog

get_op_catalogOnly reads

Every op apply_ops takes, with its fields: as a compact text reference, and as a JSON Schema per op. Read it once before editing charts.

Look up the docs

lookup_docsOnly reads

Search Chartjuice's reference: which chart suits what, how to shape data for each chart, palettes, number formats, plans and limits. Use it when unsure, before guessing.

Good to know

Your plan's limits apply

The assistant works within the same limits as the editor: how many charts you can save, how many pictures it can draw in a day, and how many requests it can send in a minute. Limits and errors has the numbers. Each picture the assistant draws of a saved chart counts toward the day's images. A picture drawn from new data, and a picture shown by an image link, count toward the month's image renders, which Chart images explains.

Your charts stay yours

Everything the assistant makes is saved to your account. Open the link it gives you to see the chart in the editor.

Deleting is for good

The assistant can delete a chart when you ask it to, and there is no undo. Chartjuice marks that tool as one that deletes, so an assistant can check with you first.

What you send is seen twice

The data you give your assistant for a chart goes to the company that makes the assistant as well as to Chartjuice, as everything you type to it does. Our privacy policy says what Chartjuice does with it, under Connected apps. What the assistant's maker does with it is in that company's own policy.

How to disconnect

If you connected by signing in, choose Disconnect beside the app on your account page, under Connected apps. If you connected with a key, revoke the key there, under API keys. Either way the assistant stops working with your charts at once. Then remove Chartjuice from the assistant's settings.

If it does not connect

When you connect by signing in, the page that asks you to allow the app works once and for ten minutes. If it says the request has expired, go back to the assistant and connect again.

When you connect with a key, check the key. It starts with cj_live_, it has to be pasted whole, and the word Bearer and a space come before it. A key that was revoked no longer works, so make a new one.

Where these steps come from

The steps for each assistant follow its maker's own instructions, as they stood on October 11, 2026: Anthropic's for Claude and Claude Code, OpenAI's for ChatGPT, and the docs for Cursor and VS Code. Menus change. If a step here does not match what you see, go by the assistant's own page. MCP is an open standard, described at modelcontextprotocol.io.

For developers

The Chartjuice MCP server is a remote server that we host, so there is nothing to install or run on your own machine. It speaks Streamable HTTP at the address above. It keeps no session: each request stands alone and is answered as JSON. It offers tools and two kinds of resource: chartjuice://ops, the list of chart edits, and chartjuice://chart-types/{type}, a guide to each chart type. The tools are the operations of the REST API under the same names, with the same limits and the same error codes. A refused tool call comes back as a result marked as an error, with the code and what to do about it.

A request with no key or token is answered 401 with a WWW-Authenticate header that points to the server's OAuth protected resource metadata, at https://chartjuice.com/.well-known/oauth-protected-resource/mcp. That names the authorization server, which supports the authorization code flow with PKCE and dynamic client registration. Ask for the scope email. An access token lasts a short time and comes with a refresh token.