Dembrandt for Claude Code: Pull Design Tokens From Any Website

Dembrandt for Claude Code: Pull Design Tokens From Any Website

Dembrandt is a local MCP server that opens a website in a real browser and reads its colors, fonts, spacing and radii, so Claude Code can build with them. We added it to Claude Code, pulled the design tokens from a public site, and had Claude build a small page from the result. This guide shows what worked, what it cost in context, and one gotcha that can flood your session with a quarter of a megabyte of data.

This guide is part of our Claude Code tutorials. Find more servers in our MCP servers directory.

Tested with Claude Code v2.1.322 on November 12, 2026, using dembrandt 0.39.2 from github.com/dembrandt/dembrandt at commit 90e2691. That is the repository the npm package lists.

The repo uses the MIT license, was not archived, and its latest commit was from October 22, 2026. We read the package scripts and the MCP server file before running anything, and we saw no install-time hook.

The server is local and needs no account or key. The tool definitions cost about 1.8k tokens once used, but one wrong polling call can return a result of about 249 KB, so tell Claude how to wait.

Quick Summary: What We Tested

QuestionAnswer
What is it?An MCP server with 21 tools that extracts design tokens from live websites
Does it need an account or key?No. It runs on your machine with npx. An optional DEMBRANDT_KEY syncs results to the maker’s service, and we did not set it
What did we run?Adding the server, listing tools, one extraction, one brand guide export, one page built from it, and a /context check
Full extraction size248,789 bytes of JSON for one site, as measured with the command line version
Brand guide sizeA 10,004-byte DESIGN.md file
Context cost1.8k tokens for the three tools we used, as measured with /context
Our verdictWorks well for your own site or a client site. Tell Claude how to poll, or it may pull the whole result

One honest note. We ran each step once on one site, so treat the numbers as one demo and not a benchmark.

What Dembrandt Is and Why It Exists

Dembrandt started as a command-line tool. You give it a web address, and it returns the design system the page uses: color palette, type scale, spacing, border radii, shadows and component styles.

The MCP mode wraps the same engine as a server. MCP is the Model Context Protocol, a standard way to give Claude extra tools. If it is new to you, our MCP guide explains it.

Why would you want this? Say a client sends you their website and asks for a matching landing page. Instead of picking colors with an eyedropper, you ask Claude to read the real values from the live page and build from them.

How to Add the Dembrandt MCP to Claude Code

We worked in a throwaway demo folder and used local scope, so the server exists only in that folder. We also pinned the version, so a later release cannot change what runs. Your normal setup stays unchanged.

claude mcp add --scope local --transport stdio dembrandt -- npx -y [email protected] mcp

The part after -- is the command Claude Code runs to start the server. This is the same command the project’s README shows, with the version added. Stdio servers run as local processes on your machine, as the MCP docs explain, and the general steps are in the MCP quickstart.

Terminal showing claude mcp add for dembrandt pinned at 0.39.2 and claude mcp list showing it Connected
The server was added at local scope, pinned to 0.39.2, and shows as connected
Claude Code docs page with the Option 3 Add a local stdio server heading highlighted
The docs section that covers local stdio servers like this one

No sign-in prompt and no key. The first start of npx took about 17 seconds on our Mac while it fetched the package, and later starts were quicker.

One setup detail from the project’s code:

Dembrandt drives a browser through the playwright-core library, which does not download a browser by itself. The project ships an install-browser script for that. Our Mac already had a matching Playwright Chromium, so we did not test the fresh install, and you may need that extra step.

The 21 Tools Claude Code Sees

We started claude in the folder and ran /mcp. The server appeared under local MCPs with 21 tools.

Claude Code /mcp screen with dembrandt listed under Local MCPs with 21 tools
Dembrandt is listed as a local server with 21 tools

Opening the server and choosing the tools view listed them. The first ones are the extraction tools.

Claude Code tools list for dembrandt showing get_design_tokens, get_color_palette, get_typography and more
The tools list starts with the extraction tools, and six more are below the fold

From the project’s tool descriptions, they fall into three groups.

GroupToolsWhat they do
Extract from a siteget_design_tokens, get_color_palette, get_typography, get_component_styles, get_surfaces, get_spacing, get_motion, get_brand_identityOpen a real browser and read one slice of the design
Convert and checkgenerate_design_md, export_tailwind, export_shadcn, export_dtcg, validate_dtcg, check_contrast, compute_drift, get_findings, render_reportWork on a finished extraction without a browser
Jobs and rulesget_job_status, list_jobs, cancel_job, check_robotsTrack extractions and check a site’s robots.txt

Extraction tools return a job ID by default, because a real page load can take a while. The tool description says a single page can take 15 to 40 seconds when you wait for it directly. You then hand that job ID to the conversion tools instead of pasting the data back.

Is the Dembrandt MCP Safe to Add?

It runs locally through npx, so there is no hosted service in the middle of an extraction. It does visit the website you name, from your machine, with a headless browser.

The README says the server honors robots.txt the same way the command line does, and the project’s CI doc describes a DEMBRANDT_ENFORCE_ROBOTS setting to refuse disallowed pages. We left it at the default and did not test it. The check_robots tool exists if you want to look before you extract.

The README also carries a clear request. It says to run Dembrandt only against sites whose terms permit automated access, or against your own properties, and not to use extracted material to reproduce third-party brand identities, logos or trademarks.

We took that seriously. Our demo used a big public site for the extraction, but the page we built is for a made-up product, and we are not publishing it. For real work, point the tool at your own site or a client who asked for it.

Test 1: Extract the Design Tokens

For the first run, we asked Claude to extract the tokens from stripe.com and used get_job_status to wait. That went badly, and it taught us the most useful thing in this guide.

The status tool returns the full result once the job is done.

When we measured the same extraction with the command line version, the JSON came to 248,789 bytes. Colors alone were 114,335 bytes. That is far more than you want pasted into a chat.

Claude Code after calling dembrandt, running a Bash command that opens a saved tool-results file because the result was too large
In our first try, the big result was saved to a file and Claude went to Bash to inspect it

In our first attempt, Claude Code did not drop the whole payload into the chat. It saved the result to a file and then asked permission to run a Bash command to look inside it. That is a sensible safety net, but it still turns one request into a pile of extra steps.

So we started over with a prompt that tells Claude how to wait without pulling the data.

Use the dembrandt get_design_tokens tool on stripe.com; it returns a job id. Do NOT call get_job_status because it returns the whole huge result. Instead wait by calling list_jobs until the job is completed, then call generate_design_md with that job id and save the output as DESIGN.md here. Reply with one line when saved.

The list_jobs tool returns only job names and statuses, so it is a cheap way to wait. The generate_design_md tool takes the job ID and turns the stored result into a short markdown guide.

Claude Code saving the generated markdown to DESIGN.md, 395 lines, after waiting with list_jobs
The job finished, and the brand guide was written to DESIGN.md. The whole run took 58 seconds

It worked.

Claude called the tools, waited, and wrote a 395-line DESIGN.md. Our CLI export of the same site measured 10,004 bytes, so the guide is about 4% of the full data.

Claude Code also tried a plain sleep command to wait once, and the tool blocked it. It then carried on using the server tools.

The guide starts with the main colors. For this site it listed a primary of #533AFD, a secondary of #E2E4FF and a tertiary of #FF6118. The site redirected to its India page during our run, and the guide says so in its description, so check which page you actually measured.

Flow diagram: your prompt goes to get_design_tokens, which returns a job ID, which feeds generate_design_md for a 10 KB brand guide
The big result stays on the server, and only the job ID and the short guide travel through Claude

Test 2: Build a Page From the Tokens

Next, we asked Claude to use the guide and nothing else.

Now create index.html in this folder: a clean pricing-card page for a made-up product called Orbit, built only from the colors, fonts and radii in DESIGN.md. No external files. Reply with one line when done.
Claude Code writing an 82-line index.html using colors from DESIGN.md
Claude wrote an 82-line page that defines the extracted colors as CSS variables

It took 12 seconds and wrote an 82-line, self-contained HTML file. We opened it in a headless browser to see the result.

A three-plan pricing page named Orbit, with a purple primary button, a light blue background and an orange Popular badge
The finished demo page, made with the extracted colors, spacing and radii

The page uses the purple primary for the main button and highlighted card, the pale secondary for the other buttons, and the orange tertiary for the Popular badge. Claude said it used a 4px radius.

One limit to know about:

The guide names the original font, sohne-var, which is a custom font we do not have. The page falls back to a system font, so the type looks close in weight but not identical. Tokens tell you what a site uses, not that you can use it.

What It Costs in Context

Every MCP server adds tool definitions to your session. We ran /context at the end of the session to see what Dembrandt added.

Context usage output with MCP tools at 1.8k tokens and the three loaded dembrandt tools listed with token counts
MCP tools came to 1.8k tokens, and the three dembrandt tools we used are listed under Loaded

The screen lists MCP tools as loaded on demand. Under Loaded, it showed three Dembrandt tools: generate_design_md at 377 tokens, get_design_tokens at 1.3k tokens and list_jobs at 128 tokens. The category total was 1.8k tokens, or 0.2% of a 1m-token window.

The other 18 tools sat under Available with no token count, because they were never loaded in that session. We cannot say what they would cost if loaded, and we did not add them up.

The bigger number was Messages, at 21.9k tokens.

Both the guide and the page code went through the chat, and that is the real price of the workflow. A short DESIGN.md keeps it small, but a full dump would have been far worse. Our context window guide explains how to read these numbers.

What We Could Not Test

We stayed inside what one run on one machine can show.

  • We tried one site only. Other sites, especially ones that block automated visitors, may behave differently.
  • We did not test multi-page crawls, dark mode, mobile mode or sites that need a login.
  • We did not run export_tailwind, export_shadcn, export_dtcg, compute_drift or render_report.
  • We did not set DEMBRANDT_KEY, so we do not know what the sync feature does.
  • We did not test a fresh install of the browser on a clean machine.
  • We did not check how closely the page matches the real site beyond looking at the colors and shapes.

Who Should Add the Dembrandt MCP to Claude Code?

Your situationOur advice
You build pages for your own site or a client who asked for a matchAdd it. Real values beat guessing from a screenshot
You want to keep a design record for your own productGood fit. Save the DESIGN.md in your repo and point Claude at it
You want to copy a competitor’s lookDo not. The README itself asks you not to reproduce other brands
You only need a few colors from one pageProbably skip it. A browser inspector is faster

Common Mistakes

  • Letting Claude poll with get_job_status. It returns the whole result, which was about 249 KB for our site.
  • Adding the server at user scope for a quick test. Use --scope local to keep it in one folder.
  • Leaving the version unpinned, so npx can pull a newer release later.
  • Running it on sites that do not allow automated access.
  • Forgetting to remove the server when the test is done.

Pro Tips

  • Say in the prompt how to wait: use list_jobs, then a conversion tool with the job ID.
  • Save the guide as DESIGN.md in your project, so later sessions read ten kilobytes and not a live extraction.
  • Run /mcp to confirm the server is connected before you start.
  • Ask Claude to check which page address was measured, since sites often redirect.
  • Look at the page it builds, and check the fonts. Custom fonts will not load without the files.

Try It Yourself

Run this in a throwaway folder, on a website you own. Remove the server when you are done.

claude mcp add --scope local --transport stdio dembrandt -- npx -y [email protected] mcp
claude
# inside Claude Code:
Use the dembrandt get_design_tokens tool on my-site.example; it returns a job id. Do NOT call get_job_status. Wait by calling list_jobs until the job is completed, then call generate_design_md with that job id and save the output as DESIGN.md. Then list the primary color, the font and the border radius.
# when finished:
claude mcp remove dembrandt -s local

Cheat Sheet

Cheat sheet card with the commands to add, check and remove the Dembrandt MCP and its main tools
The commands and tools from this guide on one card

Frequently Asked Questions

Does the Dembrandt MCP need an account or API key?

No. It runs locally through npx, and we entered no key. An optional key syncs results to the maker’s service.

How much context does it use?

The three tools we used added up to 1.8k tokens in our /context output. The tools are loaded on demand.

Why did my extraction fill the chat or end up in a file?

The get_job_status tool returns the entire result. Ask Claude to wait with list_jobs and then use generate_design_md or another export tool with the job ID.

Can I use it on any website?

Technically it opens public pages, but the README asks you to use it only where automated access is allowed, or on your own sites. Do not use it to copy another brand.

How do I remove it?

Run claude mcp remove dembrandt -s local from the folder where you added it.

Conclusion

The Dembrandt MCP is easy to add, needs no account, and turned a live website into a 10 KB brand guide that Claude used to build a page in 12 seconds. The context cost was small at 1.8k tokens, but the full extraction was about 249 KB, so you need to tell Claude how to wait. The other trade-offs are that you must respect the sites you point it at and that fonts do not come along with the tokens. If you build pages for your own brand, try it on your site first.

Next, browse more tested add-ons in our skills directory, or read our Claude overview.

Newsletter

New AI tools in your inbox

The best new tools and the AI news that matters, in one short email. Unsubscribe any time.

Free · No spam · Unsubscribe any time

✓ Looks like you’re subscribed

Loading Google’s sign-up form…

Looks like you’re already subscribed

Thanks for reading! New AI tools and the AI news that matters will land in your inbox.

Not subscribed yet? Refresh the page to load the sign-up form.

The sign-up form couldn’t load. If you use an ad or content blocker, allow news.google.com and reload the page.

Free instant check before you pay. Takes a few seconds.

Scroll to Top