Skip to main content
Glama
fusedashlabs

@fusedashlabs/ui9000-workspace

Official
by fusedashlabs

@fusedashlabs/ui9000-workspace

MCP server with one tool, show_workspace. Give it a table and a question. It returns a chart the host can draw. The cells stay on the server. The result is a chart spec plus a signed data link, not the rows.

npm: @fusedashlabs/ui9000-workspace

What it does

show_workspace reads one table, classifies the columns, and draws one chart.

  • When TYPESAFE_API_KEY is set, Jev chooses a class from the columns, then a chart inside that class. The result says why.

  • A named chart in that class is the one drawn.

  • A named chart in another class returns awaitingUser. Nothing is drawn. suggestion is the chart Jev would draw. The next call passes that chart as requestedChart with the same datasetId.

  • A named chart this server cannot draw returns awaitingUser and does not draw a substitute.

  • If Jev is unset, unreachable, or does not choose, the server picks a chart from the table.

The tool call must not include the table cells as data, rows, points, or series.

Related MCP server: OraViz MCP

Connect

Node.js 20 or newer for the npx install. Jev is optional. Without TYPESAFE_API_KEY the server still draws a chart. Put the key only in the env block below. Do not commit it.

On connect the server returns instructions for Cursor, Claude Desktop, and Claude.ai. The host puts that text in context before it picks a tool: for a table or a chart, call show_workspace and do not draw with the chat's built-in chart tools. Those other tools stay available. A host that ignores server instructions can still use them.

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "UI9000-Workspace": {
      "command": "npx",
      "args": ["-y", "@fusedashlabs/ui9000-workspace"],
      "env": {
        "TYPESAFE_API_KEY": "your-typesafe-key"
      }
    }
  }
}

Restart Cursor after saving.

Claude Desktop

claude_desktop_config.json:

{
  "mcpServers": {
    "UI9000-Workspace": {
      "command": "npx",
      "args": ["-y", "@fusedashlabs/ui9000-workspace"],
      "env": {
        "TYPESAFE_API_KEY": "your-typesafe-key"
      }
    }
  }
}

Claude.ai

Claude on the web cannot run npx. Add a custom connector:

  1. Customize → Connectors → Add custom connector

  2. Name: UI9000-Workspace

  3. URL: https://mcp.ui9000.com/workspace/mcp

Enable the connector in the chat. This hosted server accepts csv or datasetId. It does not accept url or path. The Jev key is not part of this connector. Use the npx install above when you want to pass TYPESAFE_API_KEY.

How to call show_workspace

intent is required. It is the question, not a chart name.

Intent

Use it for

spatial

Where something is: region, country, city, lat/lng. A map needs geo columns.

comparison

Which group is higher or lower, or how values spread.

summary

One number, its change, or current versus previous.

form

The user must enter or confirm labelled values.

evidence

Claims, sources, or a timeline of facts.

graph

What is connected to what.

Pass one source:

Field

When

csv

The table is in the message, header included.

url

A local or dev file URL. Not accepted on the hosted connector.

path

A local file path. Not accepted on the hosted connector.

datasetId

The same table as an earlier call.

Optional:

Field

When

utterance

The user's words, so Jev can read them.

requestedChart

Only when the user named a chart, such as bar or line. Omit it when they did not.

columns

Header names to keep. Later calls on the same datasetId keep that selection until a new csv omits columns.

Keep datasetId from the result for the next chart on the same table.

Environment

Variable

Default

What

TYPESAFE_API_KEY

unset

When set, Jev chooses the chart if the user named none.

WORKSPACE_DATA_PATH

shipped demo table

Table used only when the call has no csv, url, path, or datasetId.

MAPBOX_ACCESS_TOKEN or MAPBOX_TOKEN

a public map token

Lets a map draw. Set another token to replace it.

MCP_BASE_URL

https://mcp.ui9000.com

Where chart data is stored.

DATA_LINK_TTL_HOURS

24

How long a data link stays valid. Minimum 1.

MAX_PAYLOAD_SIZE_MB

1.5

Largest table the server will store.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to query Oracle AI Database read-only, profile tables, and render result sets as PNG charts.
    7
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables building dashboard widgets from natural-language instructions, returning a declarative UI spec for a Vue renderer. Supports chart-type selection via heuristics with LLM fallback for ambiguous cases.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables generating production-ready Tableau workbooks from natural language and CSV, including dataset profiling, publishing to Tableau Cloud, and workbook preview.
    1
    5
    25 npm
    MIT