Skip to main content
Glama

GDS MCP

Levit 디자인 시스템(GDS) 메타데이터를 AI 코딩 도구(Claude Code, Cursor 등)에 노출하는 MCP 서버입니다.

신규 입사자나 AI 에이전트가 "우리 GDS에 어떤 색상이 있어?", "이 #30333d 무슨 토큰이야?", "SP-04 값이 뭐야?" 같은 질문을 했을 때, 항상 Figma에 실제 정의된 디자인 시스템 기준으로 답하게 만드는 것이 목표입니다.

제공 도구

Tool

시나리오

list_color_tokens

"컬러 토큰 어떤 게 있어?" — 전체 목록(이름·값·설명)

get_color_token

"Cool Gray/50 값이 뭐야?" — 이름으로 단건 조회

find_token_by_value

"이 #30333d 무슨 토큰이야?" — hex 역검색 (표기 차이 흡수)

list_tokens

"spacing 토큰 뭐 있어?" — color·spacing·typography·effect 등 토큰 통합 목록

get_token

"SP-04 값이 뭐야?" — 카테고리/이름으로 토큰 단건 조회

search_design_system

"Cool Gray, SP-04, Label 관련 뭐 있어?" — 토큰·컴포넌트·가이드라인 통합 검색

list_components

"컴포넌트 뭐 있어?" — 컴포넌트 목록

get_component_usage

"이 컴포넌트 어떻게 써?" — 확인된 사용 규칙, props, flat/compound 코드 패턴

get_component_code_usage

"Button 코드로 어떻게 써?" — import 상태, props 기반 flat pattern, 조립형 compound pattern

list_guidelines

"가이드 문서 뭐 있어?" — 가이드라인 목록

get_guideline

"색상 대비 가이드 보여줘" — 가이드라인 단건 조회

find_token_by_value#FFF / #FFFFFF / 대소문자 / # 유무를 정규화해서 비교하므로, 디자인 시안이나 코드에서 발견한 hex를 그대로 넣어도 매칭됩니다.

Related MCP server: grocers-design-mcp

동작 방식

서버(src/index.ts)는 data/design-system.json읽기만 합니다. 그 파일은 scripts/extract-metadata.ts가 디자인 시스템의 실제 소스 (Figma 변수 export 또는 Style Dictionary 산출물)로부터 생성합니다.

GDS 토큰 수정 → release 발행 → CI에서 extract + build → GitHub Packages publish → 팀원은 npx로 최신 실행

로컬 개발

pnpm install
pnpm dev      # tsx로 서버 직접 실행
pnpm build    # dist/ 생성
pnpm run validate:metadata
pnpm run smoke # build 이후 MCP stdio smoke test

Node 버전은 .node-version(22)에 고정돼 있습니다. fnm/mise/nvm 모두 이 파일을 읽어 자동으로 버전을 맞춥니다. 패키지 매니저는 packageManager 필드로 pnpm에 고정됩니다.

실제 Figma 토큰 소스 연결

원칙: Figma에서 확인되지 않은 토큰은 data/design-system.json에 넣지 않습니다. 예시나 추정값도 토큰 데이터로 저장하지 않습니다.

토큰은 아래 우선순위로 추출합니다.

  1. FIGMA_TOKEN + FIGMA_FILE_KEY: Figma Variables REST API에서 직접 조회

  2. FIGMA_VARIABLES_FILE: Figma Variables API 응답 JSON 파일

  3. TOKENS_SOURCE: Tokens Studio 또는 Style Dictionary JSON 파일

Figma API를 직접 쓰려면 personal access token에 file_variables:read scope가 필요합니다. Figma 공식 문서 기준으로 로컬 변수 조회 엔드포인트는 GET /v1/files/:file_key/variables/local입니다.

FIGMA_TOKEN=<figma_pat> FIGMA_FILE_KEY=<file_key> pnpm run extract
pnpm run build

API 접근 권한이 없거나 Enterprise 플랜 제한에 걸리면 Variables API 응답을 파일로 받아서 동일한 변환을 실행할 수 있습니다.

FIGMA_VARIABLES_FILE=./fixtures/figma-variables.json pnpm run extract

Style Dictionary 또는 Tokens Studio export를 쓰는 경우:

TOKENS_SOURCE=../gds/dist/tokens.json pnpm run extract

Figma Variables API는 COLORtokens.color, FLOATtokens.spacing 또는 tokens.number, STRINGtokens.string, BOOLEANtokens.boolean으로 분류합니다. SP-*, spacing, gap, padding, margin, radius, corner 계열 이름/collection/scope는 spacing으로 분류합니다. 소스가 연결되기 전까지는 Figma에서 이미 확인된 기존 값만 유지합니다.

컴포넌트/가이드라인 연결

컴포넌트 사용 규칙과 가이드라인은 아직 자동 추출 대상이 아니므로, Figma나 별도 공식 문서에서 확인된 항목만 data/design-system.jsoncomponents, guidelines에 유지합니다. 실제 Figma 컴포넌트를 연결할 때는 각 컴포넌트 또는 Component Set의 node URL을 기준으로 props, variants, usage, 예시를 확인해서 이 JSON에 반영합니다.

개발자가 "실제로 코드로 어떻게 써?"라고 물었을 때 답할 수 있도록 각 컴포넌트에는 선택적으로 codeUsage를 둡니다. 여기에는 확정된 props, 구현 매핑 상태, flat pattern, compound pattern 예시를 넣습니다. 단, Figma에서 component property로 확인되지 않은 API는 확정값처럼 쓰지 않고 "구현체와 매핑 필요" 상태로 분리합니다.

codeUsage는 디자이너 구현 가이드가 아니라 실제 소비처에서 GDS를 가져다 쓰는 방법을 우선합니다. 응답 우선순위는 다음 순서입니다.

  1. recommendedUsage: 실제 페이지에서 가장 먼저 써야 하는 API

  2. prerequisites: Provider, CSS import, overlay root 같은 전제 조건

  3. api: 실제 export/props/hook 시그니처

  4. whenToUse / avoid: 언제 쓰고 무엇을 피해야 하는지

  5. flatPattern / compoundPattern: 복붙 가능한 예시

  6. sourceRefs: 기준이 된 실제 코드 파일

단순 컴포넌트는 direct-component로 분류하고 직접 렌더링 예시를 우선합니다. Toast처럼 overlay lifecycle이 중요한 컴포넌트는 overlay-hook-first로 분류하고 useRewardToast, useTextToast 같은 훅 사용법을 직접 컴포넌트 렌더링보다 먼저 안내합니다.

importPath는 실제 UI 컴포넌트 패키지의 export가 확인된 뒤에만 확정합니다. 현재 이 repo는 MCP 서버 패키지이므로, 실제 UI 패키지나 소스 repo에서 export가 확인되지 않은 컴포넌트 import 경로는 임의로 만들지 않습니다. pattaya의 @wetripod/game-design-system에서 확인된 컴포넌트는 해당 export 기준으로 importPath를 확정합니다.

팀원 사용법

private 패키지이므로 read:packages 스코프를 가진 personal access token이 필요합니다. 홈 디렉토리 ~/.npmrc:

@supin-kim-ilevit-com:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=<개인 PAT>

MCP 클라이언트 설정(예: Claude Code):

{
  "mcpServers": {
    "gds": {
      "command": "npx",
      "args": ["-y", "@supin-kim-ilevit-com/gds-mcp"]
    }
  }
}

Available Tools

11 tools
find_token_by_valueA

hex 색상 값으로 어떤 컬러 토큰인지 역검색합니다. 디자인 시안이나 코드에서 발견한 hex가 어떤 토큰에 해당하는지 확인할 때 사용하세요. #FFF / #FFFFFF / 대소문자 차이를 자동으로 흡수합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYes찾을 hex 값 (예: #30333d 또는 30333d)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses important normalization behavior (#FFF / #FFFFFF / case differences are handled). However, it does not mention return format, multiple-match behavior, or what happens when no token matches, which would be useful for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, with three sentences that each add value: purpose, usage context, and normalization behavior. No unnecessary detail or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, single-parameter lookup tool with no output schema, the description provides adequate context: purpose, usage scenario, and input normalization. It lacks an explicit statement about return values, but the purpose implies it returns the token identifier. Overall, complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with the parameter description already providing examples of accepted formats (#30333d or 30333d). The description adds normalization context but does not significantly expand on semantics beyond what the schema already documents. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: reverse-searching color tokens by hex value. It uses a specific verb ('역검색합니다') and a distinct resource ('color token'), distinguishing it from sibling tools like get_color_token or search_design_system.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete usage scenario: 'when you want to check which token a hex found in design drafts or code corresponds to.' This implies when to use the tool, though it doesn't explicitly mention alternatives or exclusion criteria. Since the tool is highly specific, this is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_color_tokenA

컬러 토큰 이름으로 정확한 값과 설명을 조회합니다 (예: Cool Gray/50).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes토큰 이름 (예: Cool Gray/50, Label/Normal)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It discloses that the tool returns the exact value and description and gives an example, but it does not explicitly state that the operation is read-only or describe behavior for invalid/missing tokens. The verb '조회' implies a non-mutating lookup, but the disclosure is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-structured sentence, front-loaded with the action ('조회합니다'), and includes a useful example. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup tool with no output schema, the description is complete: it states what the tool does, the input format, and the return content (exact value and description). Error handling details are not essential for a simple read operation like this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a complete description of the 'name' parameter, including examples. The description adds little beyond restating the purpose and includes an example that is a subset of the schema's example, so it does not meaningfully enhance the semantic understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb '조회' (query) and names the resource 'color token name' with a concrete example 'Cool Gray/50', clearly distinguishing it from siblings like find_token_by_value (by value) and list_color_tokens (list all).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you know a color token name and need its exact value and description, providing clear context. It does not explicitly mention alternatives or when not to use it, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_code_usageA

특정 컴포넌트의 실제 코드 사용법만 반환합니다. import, props 기반 flat pattern, 조립형 compound pattern 예시가 필요할 때 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFigma에서 확인된 컴포넌트 이름

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of behavioral disclosure. It discloses that the tool returns only code usage examples, not general component documentation, and specifies the categories of examples. It does not address error cases or return format, but for a read-only lookup this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise, front-loaded sentences with no filler. The main purpose is stated immediately, followed by a specific usage condition. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description provides essential purpose and usage context. It could mention the return format explicitly, but the listed example types give a sufficient sense of what the output contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the sole parameter 'name' as a Figma-verified component name, giving 100% schema coverage. The description adds no additional parameter semantics beyond the schema, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns only actual code usage examples for a specific component, listing specific example types (import, props-based flat pattern, compound pattern). This distinguishes it from the sibling tool get_component_usage, which likely provides broader usage documentation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool: when the agent needs import, props-based flat pattern, or compound pattern examples. This gives clear contextual guidance, though it does not explicitly name alternative tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_component_usageA

특정 컴포넌트의 사용 규칙(usage)과 스펙을 반환합니다. 컴포넌트를 언제·어떻게 써야 하는지 확인할 때 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesFigma에서 확인된 컴포넌트 이름

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only operation via 'returns' but does not disclose error behavior, prerequisites, or side effects. For a simple getter, this is minimal but adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the function, the second gives usage context. No redundant words, perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one parameter, read-only, no output schema), the description covers purpose and usage. It could mention limitations or errors, but these are not critical for this type of tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully describes the single parameter ('Component name confirmed in Figma'), so baseline is 3. The description adds no additional parameter semantics, just calls it a 'specific component'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool returns usage rules and specs for a specific component. It does not explicitly differentiate from the sibling 'get_component_code_usage', so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear 'when to use' context: 'Use it when you need to check when and how to use a component.' No alternatives or exclusions are mentioned, which fits the 'clear context, no exclusions' level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_guidelineB

가이드라인 ID로 상세 내용을 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes가이드라인 ID (예: a11y-color-contrast)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says 'retrieves', which indicates a read operation, but it does not disclose return format, error behavior, or any other behavioral details. For a simple getter this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded and contains no filler. It is appropriately sized for a tool with one parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one required parameter, no output schema), the description is minimally viable. It conveys the core action but lacks details on return values, not-found behavior, or other context that could be useful. Sibling tools provide some context, but the description itself is sparse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the only parameter (id) with a description and example, so schema coverage is 100%. The description adds no extra meaning about the parameter, matching the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieves' and the resource 'detailed contents by guideline ID', making the purpose unambiguous. However, it does not explicitly distinguish this tool from siblings like list_guidelines or search_design_system, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied by the required 'id' parameter—use this when you have a specific guideline ID. There is no explicit guidance on when to use this vs alternatives, and no exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_tokenB

카테고리와 토큰 이름으로 디자인 토큰의 정확한 값과 메타데이터를 조회합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes토큰 이름 (예: Cool Gray/50, SP-04)
categoryNo토큰 카테고리. 생략하면 전체 카테고리에서 검색.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It implies a read-only operation via '조회합니다' and states that both value and metadata are returned. However, it does not disclose error behavior, optionality of category, or any side effects, though the query nature mitigates this.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-formed sentence that conveys the core function without redundancy. Every word contributes to the meaning, and it is appropriately front-loaded with the action and object.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation with two parameters and no output schema, the description is adequate but not rich. It explains the primary purpose but lacks differentiation from sibling tools (e.g., get_color_token) and omits details like return format or failure modes. The optional category is not mentioned, which could lead to under-specification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reuses the parameter meanings (category and token name) from the schema without adding new semantic detail. The category parameter's optionality is not highlighted in the description, but the schema covers it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves design token values and metadata by category and token name, using a specific verb ('조회합니다' = retrieves). It distinguishes from list-type siblings by indicating exact lookup, but does not explicitly contrast with get_color_token or find_token_by_value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention alternatives, exclusions, or prerequisites, leaving the agent to infer usage from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_color_tokensA

Levit 디자인 시스템의 모든 컬러 토큰을 이름·값·설명과 함께 목록으로 반환합니다. 어떤 색상이 정의되어 있는지 전체를 파악할 때 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo이름 키워드로 필터링 (예: 'gray'). 생략하면 전체 반환.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It states the basic behavior (returns a list) but does not add non-obvious context such as whether results are sorted, if the filter is case-insensitive, or if any permissions are needed. However, for a simple list tool, the behavior is mostly self-evident.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise Korean sentences, front-loaded with the action and output, followed by a usage scenario. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one optional parameter and no output schema, the description is complete. It specifies the return fields (name, value, description), the resource, and a usage context. No critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully covers the only parameter 'filter' with a clear description and example. The tool description adds no additional parameter details. Since schema coverage is 100%, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'returns all color tokens as a list with name, value, and description.' It is specific about the resource (color tokens) and distinguishes itself from siblings like list_tokens (broader) and get_color_token (single token) by focusing on the complete set of color tokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case: 'use this when you want to understand the entire set of defined colors.' This provides clear context for when to use the tool. It does not explicitly exclude alternatives, but the scenario is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_componentsA

Levit 디자인 시스템에 정의된 컴포넌트 목록을 반환합니다. 특정 컴포넌트 이름을 모를 때 먼저 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo컴포넌트 이름이나 설명 키워드로 필터링합니다.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It states the tool returns a list and suggests it as a starting point for unknown components, but provides no details on default behavior (e.g., returns all components when no filter is given), sorting, pagination, or authentication requirements. This is adequate for a simple read-only list tool but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, front-loaded with the primary purpose followed by a concise usage tip. Every sentence earns its place, with no superfluous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional parameter, no output schema), the description is sufficient: it communicates what the tool returns and when to use it. It could mention that the list includes all components when no filter is applied, but this is a minor gap given the schema already documents the filter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the parameter 'filter' with a clear description of filtering by component name or description keyword. The tool description adds no additional parameter semantics, so it meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the list of components defined in the Levit design system ('Levit 디자인 시스템에 정의된 컴포넌트 목록을 반환합니다'). It also provides a distinguishing use case ('특정 컴포넌트 이름을 모를 때 먼저 사용하세요'), which separates it from sibling tools like search or get_component.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this tool first when you don't know a specific component name, giving a clear 'when to use' signal. However, it does not explicitly name alternative tools or say when not to use it, so it falls short of the highest standard.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_guidelinesA

Levit 디자인 시스템 가이드라인 목록을 반환합니다. 접근성, 컬러 사용, 컴포넌트 원칙 같은 문서를 찾을 때 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo가이드라인 제목이나 본문 키워드로 필터링합니다.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden but only states that it returns a list. It does not disclose whether pagination, ordering, or return format details are provided. This is adequate for a simple list operation, but it lacks deeper behavioral context beyond the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences: the first states what the tool does, and the second gives usage context. There is no redundant filler, and the most critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderately simple list tool with one optional parameter and no output schema, the description covers the main purpose and usage context. It does not explicitly describe the return list structure, but the sibling tool `get_guideline` implies that detailed content is fetched separately, and the filter description hints at title/body fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter `filter` has a complete description in the schema ('Filters by guideline title or body keyword'), resulting in 100% schema coverage. The description itself does not mention the parameter, but since the schema fully documents it, the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the list of Levit design system guidelines, with a specific verb ('returns') and resource ('guideline list'). It also enumerates example document types (accessibility, color usage, component principles), which distinguishes it from sibling tools like list_tokens or list_components.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'use it when looking for documents such as accessibility, color usage, component principles,' providing a clear context for when to use this tool. It does not explicitly exclude alternatives, but the 'when looking for' phrasing gives a strong usage indication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tokensA

Levit 디자인 시스템의 토큰을 카테고리별로 조회합니다. color, spacing, typography, effect 등 전체 토큰을 탐색할 때 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNo토큰 이름, 값, 설명, collection, mode 키워드 필터.
categoryNo토큰 카테고리 (예: color, spacing, typography, effect). 생략하면 전체.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It conveys a read-only retrieval operation with category-based listing, which implies safety, but it does not disclose default behavior when no filters are supplied or how filtering matches tokens. Some behavioral context is present beyond the bare tool name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that states the action, resource, and usage context. No wasted words or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two optional parameters and no output schema, the description provides enough context for selection and invocation. It lacks deeper output details, but the input schema and simple nature of the tool keep the description adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already explains filter and category parameters. The description adds only high-level category examples and does not introduce new parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves Levit design system tokens by category and is intended for exploring all tokens. It differentiates from sibling tools like list_color_tokens by covering all categories, though it does not explicitly contrast with get_token or find_token_by_value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use this tool when exploring all tokens (color, spacing, typography, effect). It gives a clear use case but does not mention when not to use it or name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_design_systemA

컬러 토큰, 컴포넌트, 가이드라인을 한 번에 키워드 검색합니다. 어떤 도구를 써야 할지 모를 때 먼저 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo섹션별 최대 결과 수. 기본값 10.
queryYes검색어 (예: Cool Gray, SP-04, Label, #30333d)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It implies a read-only operation through the verb 'search' and mentions the combined search scope, but it does not disclose return format, pagination, or any limitations. This is adequate for a simple search tool but lacks richer context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences with no redundancy. It states the core function and a usage tip efficiently, earning a perfect score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, with well-described parameters and a clear purpose. The description covers what it searches and when to use it, but since there is no output schema, a brief note on the result format would enhance completeness. Nevertheless, for a keyword search tool, the provided context is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for both parameters, with clear descriptions for 'query' and 'limit'. The tool description adds no additional parameter meaning beyond what the schema already offers, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches 'color tokens, components, and guidelines at once' using keywords. The verb 'search' is specific, the resource is explicit, and the scope distinguishes it from sibling tools that focus on individual item types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'When you don't know which tool to use, use this first,' giving clear context for when to choose this tool. However, it does not name specific alternatives or provide explicit when-not-to-use guidance, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv0.1.0
    • First observedfind_token_by_value
    • First observedget_color_token
    • First observedget_component_code_usage
    • First observedget_component_usage
    • First observedget_guideline
    • First observedget_token
    • First observedlist_color_tokens
    • First observedlist_components
    • First observedlist_guidelines
    • First observedlist_tokens
    • First observedsearch_design_system

TDQS

A4/5.0

Scored across 11 tools

Disambiguation4/5

The tools are mostly distinct, but get_component_usage and get_component_code_usage have very similar names and both relate to component usage, though one focuses on code examples and the other on rules/specs. The token tools also have generic/specific pairs, but descriptions clarify their scope.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (get, list, search, find), making the API predictable and easy to navigate.

Tool Count5/5

With 11 tools, the server is well-scoped for a design system, covering guidelines, tokens, and components without unnecessary bloat.

Completeness5/5

The tool set provides complete read-only coverage for a design system: list and get for each entity, cross-cutting search, reverse token lookup, and specialized color token access. There are no obvious dead ends for common queries.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers