dsbridge
dsbridge
任意のアプリについて1つの質問に答える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 以降。1つのコマンドで、クローンは不要:
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
使用
2つのツールがあります。どちらもオプションの path を受け取り、デフォルトは作業ディレクトリです。
Tool | Returns |
| 上記のレポート: 質問ごとにテーブル、各リストに10行 |
| 同じレポートで、各リストの行数が10ではなく100、リクエストにより最大500 |
どちらかを言葉で尋ねます。「このアプリはデザインシステムからどこで逸脱していますか?」 と尋ねると2番目のツールに到達します。
どこにも書き込まれません。アプリは読み取られ、見つかったままの状態で残され、レポートがすべての答えです — 後で開くファイルはありません。
測定内容
書き込まれたすべての値とレンダリングされたすべてのコンポーネントを、その由来(デザインシステム、アプリ自身が名付けたもの、または何もない)で分類します。
値 — システムトークン、アプリが宣言したトークン、どちらでもないものを経由して来た数。手書きで書かれたものは、何の値であるかによって分類されます。誰も到達できないカラースケールは、誰も使わなかったスペーシングスケールとは異なる仕事です。
コンポーネント — アプリがシステムからレンダリングする種類の数、独自のものの数、および他の場所から来たものの数。アプリ独自のもののうち、システムが同じ名前で既に提供しているものと、システムに移行できるもの — ファイルがシステム、React、スタイルシートのみをインポートするコンポーネントは、このアプリの何も保持しません。
トークン — 宣言されたもの、読み取られたもの、アプリのブランドによって再指定されたもの、既存のものと並んでアプリが宣言したもの、または誰にも読み取られず宣言されなかったもの(壊れた参照)。2つのトークンが同じ種類のものに対して読み取られた場合のみ、1つの値として数えられます: 8ポイントグリッドでは、スペーシングと高さの両方が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