A side-by-side look at the Semiotic and Tableau Graphql MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Semiotic for data visualization work as a local process; choose Tableau Graphql MCP for data visualization as a local process. You can also run both side by side in one mcpServers block.
renderChart, renderInteractiveChart, getSchema.TABLEAU_SERVER, TABLEAU_SITE_CONTENT_URL, TABLEAU_PAT_NAME, TABLEAU_PAT_SECRET, TABLEAU_AUTH_TOKEN, TABLEAU_COOKIE, TABLEAU_TIMEOUT, TABLEAU_API_VERSION.graphql_query, introspect_schema, lineage_examples.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Data Visualization | Data Visualization |
| Quality signal | 67/100 · Great | 51/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | TABLEAU_SERVERTABLEAU_SITE_CONTENT_URLTABLEAU_PAT_NAMETABLEAU_PAT_SECRETTABLEAU_AUTH_TOKENTABLEAU_COOKIETABLEAU_TIMEOUTTABLEAU_API_VERSION |
| Verified owner | Community listing | Community listing |
| GitHub stars | 2,714 | 1 |
| Directory activity | 5 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 18 | 7 |
| Full listing | View Semiotic | View Tableau Graphql MCP |
renderChartRender a Semiotic chart to static SVG. Supports the components returned by `getSchema` that are marked `[renderable]`. Pass `{ component: "LineChart", props: { data: [...], xAccessor: "x", yAccessor: "y" } }`. Returns SVG string plus a "Render evidence" JSON block (mark counts by scene type, resolv…renderInteractiveChartRender a static-data chart as a ChatGPT Apps widget. Uses the same Semiotic server render path as `renderChart`, then hydrates an iframe UI with fit, zoom, data, hover, and render-evidence controls.getSchemaReturn the prop schema for a specific component. Pass `{ component: "LineChart" }` to get its props, or omit `component` to list the complete schema-backed catalog. Components marked `[renderable]` are available through `renderChart`; realtime charts require a browser/live environment.suggestChartSample-row recommender. Pass `{ data: [{...}, ...] }` with 1–5 sample objects plus optional broad intent/capability filters.suggestChartsCapability-based recommender for bounded row data. Returns ranked chart suggestions with scores, reasons, caveats, import paths, and ready-to-use props.suggestStreamChartsRecommend streaming charts from a schema (shape, key, throughput). Returns `{ suggestions, excluded, stretchSuggestions }`.suggestStreamDashboardCompose a multi-panel dashboard from stream schemas and an audience layout policy.suggestDashboardBuild a multi-panel dashboard suggestion that covers distinct analytical intents.suggestStretchChartsRecommend audience-literacy stretch picks from an `AudienceProfile`.repairChartConfigCheck whether a requested chart fits a dataset and return ranked alternatives when it does not.interrogateChartReturn a statistical summary and chart-aware context for answering natural-language questions with optional annotations.diagnoseConfigCheck a chart configuration for common problems — empty data, bad dimensions, missing accessors, wrong data shape, and more. Returns a human-readable diagnostic report with actionable fixes.graphql_queryRun **any** read-only Metadata API GraphQL query. The general tool for any lineage question.introspect_schemaLive schema introspection: list entry points, or a type's exact fields.lineage_examplesA schema cheat-sheet plus 28 curated question-to-GraphQL templates (8 categories).where_usedWhich workbooks/datasources use given column / field / table names (robust one-hop core-lineage resolution).impact_analysisFull transitive **multi-hop** blast radius of a column/field/table: every dependent field, plus affected sheets, dashboards, workbooks, and **owners to notify**.search_contentFind content whose **name contains** a term (case-insensitive substring), across workbooks, datasources, tables (and optionally fields/columns), with coverage numbers.server_infoConnected server, site, versions, endpoint, auth, and whether Catalog lineage is available.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"nteract-semiotic": {
"command": "npx",
"args": [
"-y",
"semiotic-mcp"
]
}
}
}
{
"mcpServers": {
"tableau-graphql-mcp": {
"command": "uvx",
"args": [
"tableau-graphql-mcp"
],
"env": {
"TABLEAU_SERVER": "YOUR_TABLEAU_SERVER_HERE",
"TABLEAU_SITE_CONTENT_URL": "YOUR_TABLEAU_SITE_CONTENT_URL_HERE",
"TABLEAU_PAT_NAME": "YOUR_TABLEAU_PAT_NAME_HERE",
"TABLEAU_PAT_SECRET": "YOUR_TABLEAU_PAT_SECRET_HERE",
"TABLEAU_AUTH_TOKEN": "YOUR_TABLEAU_AUTH_TOKEN_HERE",
"TABLEAU_COOKIE": "YOUR_TABLEAU_COOKIE_HERE",
"TABLEAU_TIMEOUT": "YOUR_TABLEAU_TIMEOUT_HERE",
"TABLEAU_API_VERSION": "YOUR_TABLEAU_API_VERSION_HERE"
}
}
}
}