dsbridge
dsbridge
MCP-сервер, который отвечает на один вопрос о любом приложении: соблюдается ли контракт между установленной дизайн-системой и приложением. Каждое значение, которое записывает приложение, и каждый компонент, который оно рендерит, отсортированы по источнику: дизайн-система, имя, которое приложение дало себе, или ничего, — и что делает собственный бренд приложения для контраста.
Спрашивайте изнутри потребляющего приложения на простом языке — «проверь моё использование дизайн-системы» — и получайте отчёт в виде таблиц в терминале, с файлом и строкой для каждой строки.
web · 2026-08-26
@acme/tokens · @acme/react — 67% of written values came through the system
values written count share
------------------------------------ ----- -----
through a design system token 234 67%
through a token the app named itself 112 32%
through no token at all 2 1%
Values with no token behind them (2)
kind written a token already holds
---- ------- ---------------------
size 2 —
components rendered kinds places
------------------------------------------- ----- ------
from the design system 63 511
the app's own 144 649
of those, could move into the system 14 —
of those, a name the system already ships 0 —
from another package 9 132
shipped by the system, never rendered 9 —
The app's own components (144)
component rendered in files note
----------- -------- -------- --------------------------
AuthorLine 9 4 could move into the system
TagList 6 4 could move into the system
Section 4 4 could move into the system
MemberList 16 3 could move into the system
CountBadge 8 3 could move into the system
FilterChips 8 3 could move into the system
ActionBar 3 3 could move into the system
RailCard 4 3 could move into the system
SplitPane 5 2 could move into the system
Byline 3 2 could move into the system
… and 134 more
Never rendered (9)
Container, DateTimePicker, Popover, ProgressBar, Spinner, Tab, TabList, TabPanel, Tabs
tokens count
-------------------------------------- -----
declared by the design system 268
read by the app 67
re-pointed by the app's brand 60
declared by the app itself 47
of those, read anywhere 46
read by the app and declared by nobody 0
Tokens the app named itself (47)
where token value read the system holds this value too
---------------------------------- ------------- --------------------- ---- -------------------------------
…/web/src/app/frames.module.css:13 --logo-height var(--acme-logo-md) 1
…/web/src/app/frames.module.css:28 --logo-height var(--acme-logo-lg) 1
…/Logo/Logo.module.css:27 --logo-height var(--acme-logo-sm) 1
…/Logo/Logo.module.css:41 --logo-height var(--acme-icon-slot… 1
…/src/tokens/brand.css:17 --brand-red #990100 1
…/src/tokens/brand.css:18 --brand-rose #ecdbdb 1
…/src/tokens/brand.css:19 --brand-paper #fdfaf1 2
…/src/tokens/brand.css:20 --brand-white #ffffff 1 --acme-color-on-accent
… and 39 more
WCAG 1.4.3 contrast pairs in the system in the app
------------------------------------------------ ----- ------------- ----------
pass 107 97 10
fail 3 3 0
exempt: an inactive control is not asked to pass 7 7 0
not measurable 17 17 0
text over media, where no ratio exists 5 — —
Contrast failures (3)
where selector text on surface light dark needs fails
--------------------------- ------------------------ -------------------------------- ----- ----- ----- -----
…/react/dist/index.css:2559 .acme-ImageCarousel__co… --acme-text-on-media on --acme-… 2.60 19.88 4.5 light
…/react/dist/index.css:2782 .acme-VideoPlayer__start --acme-text-on-media on --acme-… 2.60 19.88 4.5 light
…/react/dist/index.css:530 .acme-Chip__variant-soft --acme-text-accent on --acme-ac… 6.67 4.39 4.5 darkУстановка
Node 20 или новее. Одна команда, ничего клонировать не нужно:
claude mcp add --scope user dsbridge -- npx -y github:blumaa/dsbridge--scope user записывает ~/.claude.json, поэтому сервер доступен в каждом репозитории без установки в каком-либо из них. Никаких хуков, ничего, что запускается само по себе, ничего не добавляется в потребляющее приложение. Перезапустите сеанс, и claude mcp list должен показать его подключённым.
Первый запуск клонирует этот репозиторий и компилирует его — скрипт prepare собирает при установке, поэтому dist/ не закоммичен. Последующие запуски берутся из кэша npx. Чтобы получить новую версию, очистите его: npx clear-npx-cache.
Работает любой MCP-клиент. Сервер говорит по stdio, и команда — npx -y github:blumaa/dsbridge.
Чтобы работать над ним, а не просто использовать:
git clone git@github.com:blumaa/dsbridge.git
cd dsbridge && pnpm install
claude mcp add --scope user dsbridge -- node "$PWD/dist/server.js"Related MCP server: GDS MCP
Использование
Два инструмента. Оба принимают необязательный path и по умолчанию используют рабочую директорию.
Tool | Returns |
| Отчёт выше: таблица на каждый вопрос, по десять строк в каждом списке |
| Тот же отчёт со ста строками в каждом списке вместо десяти и до пятисот по запросу |
Попросите любой из них словами. «Где это приложение отклоняется от дизайн-системы?» обращается ко второму.
Ничего нигде не записывается. Приложение читается и остаётся точно таким, каким было найдено, а отчёт — это весь ответ: после него не нужно открывать никакой файл.
Что он измеряет
Каждое записанное значение и каждый отрендеренный компонент, отсортированные по источнику: дизайн-система, что-то, что приложение назвало само, или ничего.
Значения — сколько прошло через системный токен, через токен, объявленный приложением, и через ни один из них, причём написанные вручную разбиты по тому, значениями чего они являются. Цветовая шкала, до которой никто не может добраться, — это другая задача, чем шкала отступов, которую никто не использовал.
Компоненты — сколько видов приложение рендерит из системы, сколько своих собственных и сколько из других источников. Из собственных: какие система уже поставляет под этим именем, а какие могли бы перейти в неё — компонент, файл которого импортирует только систему, React и таблицу стилей, не хранит ничего от этого приложения.
Токены — объявленные, прочитанные, перенаправленные брендом приложения, объявленные приложением рядом с существующим, или не прочитанные и не объявленные никем, что является битой ссылкой. Два токена считаются одним значением только тогда, когда они читаются для одного и того же вида: на восьмиточечной сетке отступ и высота будут оба равны 8px, не означая одного и того же.
Контраст — каждая пара текста и фона, которую приложение может отрендерить, вычисленная под собственным брендом приложения в светлой и тёмной темах, по стандартам WCAG 1.4.3 и 1.4.11, и разделённая по тому, чья таблица стилей написала пару.
Ничего не отбрасывается из-за сложности. Текст поверх градиента или изображения сообщается отдельно, а пара, которую невозможно вычислить, сообщается с причиной. Неактивные элементы управления показываются как освобождённые, а не засчитываются против приложения, потому что WCAG не требует, чтобы они проходили.
Без конфигурации
Нет файла конфигурации и нечего называть. Дизайн-система находится по форме: пакет токенов — это установленная зависимость, которая объявляет больше всего пользовательских свойств, а пакет компонентов — это член семейства, который только их расходует. Любая дизайн-система, любое приложение.
Разработка
pnpm verify # build, typecheck, testТесты запускаются на фикстурных приложениях в src/__fixtures__, включая их node_modules, которые намеренно закоммичены — то, как пакет объявляет свои экспорты, и есть предмет тестирования.
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Query and audit AppSheet apps in natural language via Knotrik's pre-scanned definitions.
Statically audits MCP tool surfaces for token cost, schema quality, and design issues.
Query your SEO data in plain language: rankings, audits, backlinks, competitors and AI visibility.
Access and maintain design system docs, tokens, components, skills, and contexts across any project.
Related MCP Servers
- AlicenseAqualityFmaintenanceQueries Aurum design system components, tokens, icons, Figma node IDs, and changelog via LLM clients.9MIT
- FlicenseAqualityDmaintenanceExposes Levit design system (GDS) metadata to AI coding tools, enabling queries about color tokens and component usage via natural language.11
- FlicenseNot gradedqualityDmaintenanceEnforces agent design system compliance with tools to check guards, explain gaps, issue receipts, suggest fixes, and export audits.
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to score live URLs against a 40-check design contract, validate DTCG tokens and Lottie animations, audit accessibility, and retrieve design-system contracts, catalogs, and review rubrics.35MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blumaa/dsbridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server