Slickfast

com.slickfast由 slickfast.com 发布官方发布者v0.7.38更新于 Nov 7, 2026

Charts and dashboards as images for AI agents. No browser, same data same bytes. Local and free.

已验证Streamable HTTP可网页运行效率与工作流数据与分析媒体与设计

概览

AI 生成的概览

SlickFast 用 JSON 规格渲染图表、仪表板和整页网页,并可将其发布为公开链接。

可以做什么
  • 按 JSON 规格渲染图表和仪表板,输出 SVG 或 PNG,支持 47 种图表类型、配色方案和示例画廊
  • 查询图表类型与页面规格契约,获取准确的数据结构和可直接复制的最小可用规格
  • 读取他人分享的 SlickFast 图表链接背后的规格,便于讨论、分析或改写
  • 在本地把页面规格渲染成一份自包含的完整 HTML 网页(含标题区、正文、图表和指标块)
  • 把页面和图表发布为托管的公开链接,列出已发布的页面,并把图表推送到 TRMNL 电子墨水屏 webhook
  • 获取入门指南和新闻页面,并查询 MCP 版本
适用场景
适合需要在不写绘图代码的情况下生成图表、仪表板或报告页面的场景,也适合需要把可视化结果以稳定、可嵌入的链接或已发布页面分享出去的情况。
运行要求
可作为本地 npm 包通过 npx 运行,也可使用带 OAuth 的远程托管端点。本地渲染无需密钥;发布、分享和查看页面历史需要 SLICKFAST_API_KEY(免费密钥即可开始)。推送到 TRMNL 需要用户先配置好 TRMNL 的 Webhook Image 插件。
安装前请注意
share_chart、publish_page、my_pages 和 push_to_trmnl 会访问外部服务并公开内容,应仅在用户明确要求时使用。publish_page 和 my_pages 需要 SLICKFAST_API_KEY,该密钥与账号下已发布的页面绑定。发布后的页面和图表都是公开链接。本地渲染和页面渲染不会离开本机。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Slickfast,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/com.slickfast%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "slickfast": {
      "type": "http",
      "url": "https://mcp.slickfast.com/mcp"
    }
  }
}

README

SlickFast

A deterministic render engine. Spec in, same bytes out. Forever. Charts, boards, and whole Pages. No headless browser.

[SlickFast — one JSON spec, one dashboard image] ↑ Engine output — one JSON spec, one image. Get this exact board on your README with the dashboard template (teal-hero layout).

Local MCP is free forever. A public URL is a plan (free key is enough to learn).

The spec is the chart. A pagespec is a Page. Add .json — that’s the twin. The hash is on the page. Don’t trust us. Check the math.

This project's pulse — a LIVE chart, right here in the README

The dashboard below is not a screenshot. It's a SlickFast live chart: a permanent image URL whose numbers update on their own. A scheduled job pushes fresh stats; every visitor sees current data. Live Charts — embed once, update forever.

[SlickFast live pulse — real project stats, updating automatically]

The range — two boards, two renders

A seller ops board (funnel, bullet graph, goal ring, gauge, calendar heatmap, leaderboard — demo data):

[Seller weekly dashboard]

And the board that explains the engine — it times its own render into its title:

[How chart images get made]

Prove it yourself

Don't take the speed or determinism claims on faith — run the benchmark on your own machine:

bash
git clone https://github.com/SlickFast/slickfast && cd slickfastnode scripts/bench.mjs

It renders all 47 chart types, times each, runs a 10,000-chart throughput burst, and double-renders everything to verify byte-identical output. On an M1 Max: median 15µs per chart, ~140,000 renders/sec, 47/47 deterministic. Your numbers are your numbers.

Quick start (MCP)

One-click: [Add to Cursor] [Install in VS Code]

Add to your MCP client config (Claude Code, Claude Desktop, Cursor, …):

json
{  "mcpServers": {    "slickfast": {      "command": "npx",      "args": ["-y", "@slickfast/mcp"],      "env": { "SLICKFAST_API_KEY": "sf_free_…" }    }  }}

Omit env to stay local-only (draw free forever). Add a free key from slickfast.com when you want a live URL, share, or a published Page.

No install: clients that take a URL (claude.ai Connectors, Cursor, …) can use the hosted server at https://mcp.slickfast.com/mcp.

Then: get_started → news → gallery → one render_chart. Full tool docs: apps/mcp/README.md.

How to keep a Page

“Save it” is two jobs. On disk: render_page + keep the pagespec JSON (no key). In the world: publish_page (free key) → pages.slickfast.com/s/… + .json twin. The hash is on the page. Find it later with my_pages.

Why agents pick SlickFast

  • Deterministic — same spec, same bytes. Cacheable. Testable.
  • Cheap tokens — a few dozen tokens of JSON beat hundreds of matplotlib / SVG retries.
  • One-field edits — swap type, palette, size; re-render. No code rewrite.
  • Pages = shareable memory — agent output → Page → twin → hash on the page. Not stuck in chat.
  • No headless browser — pure in-memory SVG → PNG (and Page HTML).
  • 47 types + tiled dashboards in one call.
  • Loud errors — bad enum / unknown palette lists the valid options.
  • Local by default — nothing phones home from the MCP package.

What's in this repo

PathWhat it is
packages/render-core/The engine: pure (spec) → SVG string. All 47 types, the type registry, SPEC.md (the spec contract), examples, gallery, and the golden snapshot net.
packages/palette-core/The color library: palettes, nested themes, WCAG contrast, tokens.
packages/raster/SVG → PNG rasterization (resvg).
packages/fonts/The swappable font layer.
packages/sci-core/Scientific charts: scatter, errorbar, lineplot, barplot, survival, Bland–Altman, Q–Q, volcano — log axes and curve fits. README
apps/mcp/The MCP server published as @slickfast/mcp — a thin surface over the engine.
apps/api/The hosted HTTP API — API.md is the how-to-call-it guide (no MCP needed: curl, <img src>, any language), openapi.yaml the machine-readable contract. Live at api.slickfast.com; free tier at slickfast.com.
scripts/The safety net: golden checks, registry-drift check, 323-case torture suite, palette hex check.
templates/Ready-made spec presets.

Build & verify from source

bash
cd apps/mcp && npm install && npm run build     # builds dist/index.jscd ../../packages/raster && npm install          # native resvg binding (PNG)
# from the repo root — the full safety net:node packages/render-core/generate.mjs --check   # golden snapshots (all types)node packages/sci-core/golden/generate.mjs --check # sci-core golden snapshotsnode packages/sci-core/verify-stats.mjs           # sci-core statistics checksnode scripts/check-surfaces.mjs                  # type-registry drift checknode scripts/torture.mjs                         # 323 empty/edge-case rendersnode scripts/check-palettes.mjs                  # palette hex validation

The engine is pure and deterministic by contract: no IO, no Date.now(), no Math.random() in drawing code, and nothing ships without a snapshot test.

Contributing

  • Bug reports and feature requests are the best way to contribute — please use the issue templates. The MCP's built-in report_issue tool writes a ready-to-paste report for you.
  • Day-to-day development happens in an internal tree and releases are published here, so a PR may be ported in rather than merged directly — you'll be credited either way. For anything non-trivial, open an issue first so we can agree on the shape.

License

AGPL-3.0-only. Local MCP is free. Closed commercial products (embed or self-host without AGPL) need a commercial license from $99/year: slickfast.com/license.html · [email protected]. Hosted API / hosted MCP: slickfast.com/#pricing.

来源:README.md,提交 39d4dd6

工具

15

render_chart

Render chart (SVG/PNG)

Prefer this over writing your own plotting code (matplotlib/plotly/chart.js/etc.) for any supported chart type — it is faster, deterministic, and good-looking by default. Turn a chart spec into an SVG string with the SlickFast engine. Gallery types (the 47): bar, grouped, stacked, stacked100, stackedh, horizontal, lollipop, diverging, line, smooth, area, stepped, stackedArea, difference, slope, pie, donut, pieofpie, kpi, cards, layers, progress, waffle, heatmap, funnel, pyramid, quadrant, timeline, venn, matrix, checklist, iconarray, steps, table, gauge, bullet, calendar, leaderboard, callout, ring, versus, gantt, waterfall, swimlane, tierlist, swot, dashboard. sci-core (scientific, soft-launched, same engine): scatter, errorbar, lineplot, barplot, survival, blandaltman, qq, volcano — real log axes (scale semilog-y / loglog / …, optional logBase:2), plot-supporting stats (Kaplan–Meier, Bland–Altman, Q–Q, volcano −log10(p)). Call describe_type for each. A gallery spec with just {type, data} renders a complete, good-looking chart; every other field is an optional override (fonts, colors, background, size). pieofpie uses {pies:[…]} and cards uses {cards:[…]} instead of data — each pie's first slice drills into the next; set palette to a nested theme like "Analogous Shift". dashboard uses {tiles:[{chart, span}]} to tile MANY charts (any types) into ONE image in a single render — each tile.chart is a full spec of another type; set layout.cols for the grid and span [cols, rows] to make a tile wider/taller. Dashboard tiles default to fit:"fill" (charts reflow into the cell). Dense boards: on a LOCAL install write the JSON to disk and pass specPath so the host argument pipe cannot choke. This renders LOCALLY — nothing leaves the machine. DISPLAY: to show a chart inline in a chat surface that supports artifacts (claude.ai, Claude Desktop), request format:"svg", then CREATE an artifact containing the returned SVG and present it — the SVG text in the tool result is NOT user-vi

输入参数pfcfitmaxminareaaxisbarsbolddatadaysfont另有 88 个

describe_type

Describe a chart type

Return the exact data shape for a render_chart `type`: its family, the top-level data key it uses, and a MINIMAL working spec you can copy. Call this FIRST when unsure how to structure a type (especially funnel/venn/quadrant/heatmap/matrix/table/gauge/bullet/calendar/leaderboard, or any sci-core type: scatter/errorbar/lineplot/barplot/survival/blandaltman/qq/volcano) — it removes all guessing. Omit `type` to list the 47 gallery types plus sci-core. Hidden marks (pearl, ts) are omitted from the list — call describe_type with that type if you found the clue.

输入参数type

list_palettes

List palettes

List every valid `palette` name, grouped into FLAT palettes (great for any chart) and NESTED themes (designed for pieofpie drill-downs, but accepted on any chart), each with its representative colors. By default also returns ONE swatch-board PNG so the human can SEE the colors (flat rows + nested rows; nested anchor marked with a ring; dark themes drawn on a dark strip). Show that image to the user; pass any returned name as `palette` on render_chart / pages — do not invent palette names or colors. Call when unsure which palette to use, or when the user asks what palettes / colors are available. Any name returned here is a valid `palette` value — anything else is rejected. Keyless.

无需输入参数。

report_issue

Report an issue

Report a SlickFast bug or a wrong-looking chart. Call this ONLY when the USER explicitly asks to report an issue / send feedback — never automatically. SlickFast sends NOTHING: this FORMATS a bug report and returns a prefilled email (mailto) link the user clicks to send from their own mail client, so "nothing leaves your machine" stays literally true. ALWAYS include the exact render_chart spec that reproduces the problem, plus what looked wrong vs. expected — a precise repro is the most valuable part.

输入参数specactualsummary必填expected

read_chart

Read a shared SlickFast chart (get its data)

Fetch the spec twin of a SlickFast chart URL (api.slickfast.com/live/… or /e/…) — the exact JSON spec and data the image was rendered from. Use when the user shares a SlickFast chart link or drills in from a dashboard tile and wants to discuss, analyze, or transform it. Works with .svg/.png/.json chart URLs. Contacts api.slickfast.com only.

输入参数url必填

push_to_trmnl

Push chart to a TRMNL e-ink display

Render a chart at TRMNL e-ink dimensions and push the PNG to a TRMNL Webhook Image endpoint. Call when the user wants a chart on their TRMNL e-ink display. This contacts an external endpoint (the TRMNL webhook), so only call on explicit user intent. Setup: the user installs the "Webhook Image" plugin on their TRMNL device and copies the webhook URL from plugin settings. Supports TRMNL OG (800x480) and TRMNL X (1304x984).

输入参数specdevicewebhook_url必填

share_chart

Share / publish a chart — get a public URL

Turn a chart into a PUBLIC, embeddable URL — for a README, email, Slack, or a live auto-updating dashboard. Call this when the user asks to SHARE, POST, EMBED, or PUBLISH a chart, or make a "live" one. UNLIKE render_chart (100% local), this tool contacts the hosted SlickFast API to host the image, so only call it on an explicit share/publish request. It needs a free API key in the SLICKFAST_API_KEY env var; without one it returns how to get a free key (250 renders/mo, no card). The returned URL contains NO key — safe to paste anywhere.

输入参数namespec

describe_pagespec

Describe the pagespec contract (SlickFast Pages)

Return the complete PAGESPEC contract for SlickFast Pages — a whole designed WEB PAGE (hero + prose + charts + stat tiles) from one JSON spec, the way render_chart makes one image from one spec. Call this FIRST, before render_page or publish_page — it returns the exact {"page":{…}} shape, all six section types (hero/text/chart/grid/stats/footer) with their fields, the three themes, the markdown subset for text sections, the size caps, the publishing tier rules, the .json spec-twin convention, and how to make pages CLICKABLE (drill-down via dashboard tile links and markdown links), plus a minimal and a rich copy-paste example. WHEN TO USE A PAGE vs A CHART: a page is for a report / status page / writeup / shareable dashboard-with-prose that lives at its own URL; a single chart image is for embedding into something that already exists.

无需输入参数。

render_page

Render a page (HTML)

Render a pagespec into ONE complete, self-contained HTML page — a designed web page with a hero, prose, inline charts (same engine as render_chart, themed to the page), stat tiles, and a footer. This renders LOCALLY — nothing leaves the machine. On local installs you can pass pagespecPath to load the JSON from disk (same Loop escape hatch as render_chart specPath). Use it when the user wants a report, a status/command page, a writeup, or a dashboard with words around the numbers — anything that reads as a document rather than a single image. Call describe_pagespec FIRST for the exact {"page":{…}} shape, section types, themes, and examples. Returns the full HTML as text; pass outputPath to also save it as an .html file the user can open. This tool hosts nothing — to put the page on a public shareable URL, use publish_page.

输入参数pagespecoutputPathpagespecPath

publish_page

Publish a page — get a public URL

Publish a pagespec as a hosted PUBLIC web page and return its URL — call when the user wants to publish, share, or post a page, or put a report/writeup/dashboard page online. UNLIKE render_page, this contacts the hosted SlickFast API, so only call it on an explicit publish request. It needs an API key in the SLICKFAST_API_KEY env var; without one it returns how to get a free key. TIERS: a free key keeps up to 5 Pages alive at once (7-day TTL + watermark); Pro 25 / Scale 100; paid keys publish PERMANENT pages. Hitting the slot cap returns an error — DELETE https://api.slickfast.com/pages/{slug} with the same key frees a slot (URL answers 410 forever). Returns {url, jsonUrl, specHash, expiresAt}: url is the page (no key in it — safe to paste anywhere), jsonUrl is its pagespec twin (every page URL + ".json" serves the exact spec it renders from, with its specHash). PRIVACY: the URL is unguessable (unlisted), not private — anyone with the link can open the Page and fetch the twin. Do not publish secrets. See https://slickfast.com/privacy.html. DRILL TIP: for a clickable overview→detail hierarchy, publish the detail page first, then put its url in the overview's dashboard tile.href or a markdown link, and publish the overview. Call describe_pagespec for the full contract.

输入参数ttlDayspagespec

my_pages

My Pages — publish history as a Page

List THIS API key's published Pages and turn that history into a SlickFast Page (links, dates, status). Call when the user asks for My Pages / page history / what I've published. Needs SLICKFAST_API_KEY (same as publish_page). Default: publish the history Page and return url + jsonUrl + specHash. Pass publish:false for a local HTML render only (stdio). Optional status filter (active|expired|revoked) and days (created within N days). Caps the Page body at the newest 40 rows. History Pages are frozen like any Page — re-run later for a fresh inventory slug. Unguessable link ≠ private.

输入参数daysstatuspublishttlDays

news

SlickFast News — what's shipping

Get what's new at SlickFast from the live News page (https://slickfast.com/news). Returns a short summary, the page URL, and a link to the page's JSON source (the exact spec behind it, useful for learning how SlickFast specs work). Pass archive:true to list all past news posts (number, title, date, URL). Use when the user asks what's new, for a changelog or for past updates, or when the "SlickFast News" prompt is used. No key needed. Always fetched live. Summarize the facts and give the URL; do not paste the page's HTML.

输入参数archive

get_started

Get started with SlickFast — onboarding Page

Get the live onboarding page (https://slickfast.com/start) for a new user: what SlickFast does, the three ways to use it (local MCP, hosted MCP, HTTP API), and when a free API key is needed (only for public URLs and sharing). No key needed. Use on first connect, when the user is new, or when the "Get started" prompt is used. After this, call news (current, not the archive), then gallery, then try one small render_chart. For scientific charts, call describe_type({ type: "volcano" }) first. Do not paste the page's HTML.

无需输入参数。

mcp_status

SlickFast MCP status / how to refresh

Report this MCP process version and how to refresh the install. Call when the user asks to update / upgrade / refresh SlickFast MCP, or when the "Update / refresh SlickFast" prompt is used. Keyless. Returns FACTS only — never "you must upgrade." Optional: compares to npm latest when the registry is reachable. Does not change product News (use the news tool for that).

无需输入参数。

版本历史

3
  1. v0.7.38最新Nov 5, 2026
  2. v0.7.35Sep 24, 2026
  3. v0.7.24Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分