Skip to main content
Glama

@mobile-reality/mdma-mcp

MDMA용 MCP(Model Context Protocol) 서버입니다. AI 어시스턴트에게 MDMA 사양, 작성 프롬프트, 패키지 메타데이터 및 라이브 GitHub 문서를 제공합니다.

도구

도구

목적

get-spec

전체 MDMA 사양(컴포넌트 유형, JSON 스키마, 바인딩 구문, 작성 규칙)을 반환합니다.

get-prompt

명명된 MDMA 프롬프트(mdma-author, mdma-reviewer, mdma-fixer)를 반환합니다. mdma-author의 경우, 모델 최적화 변형을 반환하기 위해 선택적으로 variantId(예: google/gemini-2.5-pro)를 허용합니다. 사용 가능한 모든 ID를 보려면 list-prompt-variants를 사용하세요.

list-prompt-variants

프롬프트 내용을 제외한 사용 가능한 모든 MDMA_AUTHOR 프롬프트 변형(ID, 레이블, 설명)을 반환합니다. 모델 최적화 프롬프트를 가져오려면 get-prompt와 함께 ID를 사용하세요.

build-system-prompt

구조화된 입력(도메인, 컴포넌트, 필드, 단계, 비즈니스 규칙)으로부터 사용자 지정 MDMA 프롬프트를 생성합니다.

validate-prompt

MDMA 규칙에 따라 사용자 지정 프롬프트를 검증합니다.

list-packages

목적, 설치 명령어, 사용 예시 및 카테고리와 함께 모든 MDMA npm 패키지를 반환합니다.

list-docs

공개 GitHub 저장소에서 가져올 수 있는 MDMA 문서 파일 카탈로그를 반환합니다.

get-doc

raw.githubusercontent.com/MobileReality/mdma에서 문서의 최신 버전을 가져옵니다. 선택적으로 ref(브랜치, 태그 또는 SHA)를 지원합니다.

Related MCP server: mcp-docs

설치

{
  "mcpServers": {
    "mdma": { "command": "npx", "args": ["@mobile-reality/mdma-mcp"] }
  }
}

배포 장소

MDMA의 MCP 서버가 게시되거나 게시되어야 하는 장소입니다. 각 장소마다 고유한 제출/업데이트 절차가 있으므로 새 버전을 릴리스할 때마다 확인하세요.

장소

식별자 / URL

참고

npm

@mobile-reality/mdma-mcp

pnpm publish --access public --no-git-checks를 통해 게시합니다.

공식 MCP 레지스트리

io.github.MobileReality/mdma

mcp-publisher를 통해 게시합니다. 네임스페이스는 대소문자를 구분하며, GitHub의 표준 대문자 표기법과 일치해야 합니다.

Glama

MobileReality/mdma

품질 및 보안 점수가 주기적으로 자동 평가됩니다. Docker 빌드 구성은 Glama 관리 페이지에 있으며, 버전 업데이트 시 재배포 및 재릴리스하세요.

awesome-mcp-servers

punkpeye/awesome-mcp-servers

Developer Tools 항목 아래 알파벳순으로 등록됩니다.

Smithery Skills

mobilereality/mdma

스킬 표면이며 MCP 표면이 아닙니다(Smithery의 MCP 흐름은 HTTP 전용이므로 stdio에는 사용할 수 없습니다).

MCPB 데스크톱 확장 프로그램

Anthropic 제출 양식

Anthropic의 파트너 대기열입니다. 번들은 로컬에서 빌드되며 이 저장소에는 포함되지 않습니다.

릴리스 체크리스트 — 버전 업데이트 시

새 버전을 게시할 때마다(0.2.4 → 0.2.5 등) 이 체크리스트를 사용하세요.

1. 버전 업데이트 및 테스트

  • [ ] package.json의 version을 업데이트합니다.

  • [ ] src/index.ts의 version 문자열(McpServer({ version: ... }) 호출)을 업데이트합니다.

  • [ ] server.json의 최상위 version 및 packages[0].version을 업데이트합니다.

  • [ ] manifest.json의 최상위 version 및 packages[0].version을 업데이트합니다.

  • [ ] 변경 사항 추가: 저장소 루트에서 pnpm changeset을 실행합니다.

  • [ ] 이 패키지에서 pnpm build && pnpm test && pnpm typecheck를 실행합니다.

2. npm에 게시

  • [ ] 이 디렉토리에서 pnpm publish --access public --no-git-checks를 실행합니다.

  • [ ] 확인: npm view @mobile-reality/mdma-mcp version mcpName — 둘 다 일치해야 합니다.

3. MCP 레지스트리에 게시

  • [ ] mcp-publisher가 인증되었는지 확인합니다: mcp-publisher login github (토큰이 만료된 경우 재인증).

  • [ ] 이 디렉토리에서 mcp-publisher publish를 실행합니다.

  • [ ] 확인: curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.MobileReality/mdma"가 새 버전을 표시하는지 확인합니다.

커밋하지 마세요 .mcpregistry_github_token / .mcpregistry_registry_token — 이 파일들은 .gitignore에 있습니다. GitHub의 푸시 보호 기능이 어차피 푸시를 차단할 것이지만, 이는 이중 확인을 위한 알림입니다.

4. 릴리스 태그 지정

git tag '@mobile-reality/mdma-mcp@<version>'
git push origin '@mobile-reality/mdma-mcp@<version>'

5. 새로운 MCPB 번들 빌드 (데스크톱 확장 프로그램 업데이트 제출 시에만)

pnpm의 가상 저장소(.pnpm/)는 mcpb pack에 의해 제거되므로, 깨끗한 npm 설치 디렉토리에서 번들을 빌드해야 합니다. 그렇지 않으면 전이적 의존성(예: ajv)이 누락됩니다.

출력: <name>-<version>.mcpb. Claude Desktop에 테스트 설치한 후 GitHub 릴리스 자산으로 첨부하세요.

6. Glama — 도구 설명이나 Dockerfile 구성이 변경된 경우

  • [ ] 도구를 추가/이름 변경/설명 변경한 경우: Glama의 품질 점수는 다음 주기적 스캔 시 재평가됩니다. 수동 트리거는 없습니다.

  • [ ] packages[0].version이 업데이트된 경우: Glama 관리 페이지로 이동 → Build steps 업데이트(npm install -g @mobile-reality/mdma-mcp@<version>) → Deploy → Make Release.

7. 다운스트림 인식

  • [ ] 도구가 추가/이름 변경/제거된 경우 루트 README.md의 MCP 도구 테이블을 업데이트하세요.

  • [ ] 이 패키지 자체의 도구 테이블(위)도 동일하게 업데이트하세요.

  • [ ] 주요 변경 사항이 있는 경우: 변경 사항(changeset)에 기록하고, createMdmaMcpServer()를 사용하는 소비자가 있다면 업데이트하세요.

문제 해결

MCP 레지스트리 게시가 403 Forbidden으로 실패하는 경우

오류 메시지에 permission to publish: io.github.gitsad/*, io.github.MobileReality/*. Attempting to publish: io.github.mobilereality/mdma (소문자 불일치)라고 표시되면: 레지스트리는 대소문자를 구분하며 mcpName / server.json의 name은 GitHub의 표준 MobileReality 대문자 표기법과 정확히 일치해야 합니다. 두 파일을 모두 수정하고 npm에 다시 게시하세요(npm의 버전은 변경할 수 없습니다).

오류 메시지에 permission to publish: io.github.gitsad/* (조직이 완전히 누락됨)라고 표시되면: MobileReality GitHub 멤버십이 비공개 상태입니다. https://github.com/orgs/MobileReality/people에서 공개로 변경한 다음 mcp-publisher logout && mcp-publisher login github를 실행하여 JWT를 새로 고치세요.

Claude Desktop 설치 시 MCPB .mcpb가 충돌하는 경우

보통 개발자 탭 로그에 "missing module" 오류가 발생합니다. 원인: pnpm의 중첩된 .pnpm/ 가상 저장소가 패킹 시 제거되어 전이적 의존성이 누락되었습니다. 해결 방법: 깨끗한 npm 설치 디렉토리에서 번들을 빌드하세요(위의 5단계 참조). packages/mcp/node_modules에 대해 직접 mcpb pack을 실행하지 마세요.

번들에 비밀 정보가 유출되는 경우

mcpb pack은 .gitignore를 준수하지 않습니다. 패킹 시 매니페스트 옆에 있는 모든 .mcpregistry_*_token 파일이 .mcpb로 압축됩니다. 패킹하기 전에 항상 이 파일들을 삭제하고, 디렉토리에 토큰이 없는 위의 /tmp/mcpb-build 워크플로우를 사용하는 것을 권장합니다.

이 패키지의 파일

파일

목적

추적 여부

src/

서버 + 도구를 위한 TypeScript 소스.

✅

dist/

컴파일된 JavaScript.

❌ (gitignored)

tests/

도구 로직을 위한 Vitest 단위 테스트.

✅

package.json

MCP 레지스트리에서 요구하는 mcpName 필드 포함.

✅

server.json

mcp-publisher가 사용하는 MCP 레지스트리 매니페스트.

✅

manifest.json

MCPB (데스크톱 확장 프로그램) 매니페스트.

✅

icon.png

MCPB 제출을 위한 1024×1024 정사각형 아이콘.

✅

screenshots/

Claude Desktop 설치 대화 상자를 위해 MCPB와 함께 번들된 스크린샷.

✅

*.mcpb

빌드된 데스크톱 확장 프로그램 번들 (빌드 아티팩트).

❌ (gitignored)

Available Tools

8 tools
build-system-promptA

Generates a custom MDMA prompt from structured input (domain, components, fields, steps). Returns only the custom prompt part — use buildSystemPrompt({ customPrompt }) in code to combine it with the base MDMA spec. When dataSources (an external data-source catalog) is passed, returns the full system prompt instead: base MDMA spec, the data-source catalog with the rule to reference it via { source, params }, and the custom part.

NameRequiredDescriptionDefault
stepsNoMulti-step flow definitions — each step becomes a separate conversation turn
domainNoDomain context (e.g. "HR onboarding", "expense approval")
fieldsNoForm field definitions
componentsNoComponent types to use (e.g. ["form", "approval-gate", "webhook"])
dataSourcesNoExternal data-source catalog. Each entry: name, optional description, kind ("rows" for table.data, "series" for chart.data, "options" for form select options), optional columns [{ key, type: string|number|boolean|date, description?, sensitive? }], optional params [{ name, type: string|number|boolean, required?, allowed? }]. Names must be unique, but the same data may appear as a rows and a series entry under different names. The model is told to reference sources via { source, params } instead of generating rows.
businessRulesNoBusiness rules or constraints

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does most of it: it discloses the two possible return shapes (custom part only vs. full system prompt including base spec and catalog) and the downstream combinination step. It omits failure modes, input validation behavior, or any side effects, which would round out a no-annotation mutation-free generator.

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?

Purpose and inputs are front-loaded in the first clause, followed by two compact sentences covering the two return modes and the in-code combination step. Every sentence carries distinct information with no restatement of the tool name or filler.

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?

There is no output schema, so the description must explain return values — and it does so precisely for both branches (custom-only vs. full prompt with base spec and catalog). With all parameters documented at 100% coverage and the integration contract spelled out, an agent has everything needed to invoke and consume the result.

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 schema already documents all six parameters in depth, including the dataSources catalog semantics and the { source, params } reference rule. The description adds framing ('external data-source catalog') and the behavioral consequence of passing it, but no syntax or format detail beyond the schema, so the baseline 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?

States a specific verb and resource ('Generates a custom MDMA prompt') and enumerates the structured inputs (domain, components, fields, steps) plus the conditional dataSources input. The generative framing clearly separates it from sibling read-style tools such as get-prompt and list-prompt-variants without the agent needing to open a schema.

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?

Gives concrete integration guidance ('use buildSystemPrompt({ customPrompt }) in code to combine it with the base MDMA spec') and a conditional usage rule (pass dataSources to get the full prompt instead). It never explicitly states when to prefer this over get-prompt or validate-prompt, so it stops short of naming alternatives or exclusions.

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

get-docA

Fetches the latest version of an MDMA documentation file from the public GitHub repo (raw.githubusercontent.com/MobileReality/mdma) and returns its contents as text. Allowed paths: any entry from list-docs, plus any *.md file under "docs/" or "blueprints/". Defaults to the "main" branch.

NameRequiredDescriptionDefault
refNoGit ref (branch, tag, or commit SHA). Defaults to "main".
pathYesRepo-relative path to the doc, e.g. "docs/getting-started/quick-start.md" or "blueprints/kyc-case/README.md"

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the fetch target (raw.githubusercontent.com/MobileReality/mdma), that the repo is public (implying no auth), the allowed path whitelist, the 'latest version' semantics, and that content comes back as text. It omits failure behavior for a disallowed or missing path and any size/rate considerations.

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

Conciseness4/5

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

Three sentences, front-loaded with the verb and source, then constraints, then the default. No filler. Slightly dense but every clause carries 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?

No output schema exists, and the description compensates by stating the return is raw text content. Path restrictions and branch default are covered. Remaining gap is error/edge-case behavior on invalid paths, which is minor for a read-only fetch 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?

Schema description coverage is 100%, so the schema already documents both 'ref' and 'path' including the 'main' default. The description restates the default branch and adds the allowed-path constraint, but adds no format or syntax detail beyond what the schema provides. Baseline 3 applies.

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?

States a specific verb and resource ('Fetches the latest version of an MDMA documentation file') plus the source location and return format. It implicitly separates itself from get-spec/get-prompt by scoping to documentation files, but never names those siblings explicitly, so differentiation requires a small inference.

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?

Gives real selection context: allowed paths are 'any entry from list-docs, plus any *.md file under docs/ or blueprints/', which routes the agent to list-docs for discovery. Missing an explicit 'use get-spec instead when you need a spec' exclusion, so it stops short of full when/when-not guidance.

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

get-promptA

Returns a named MDMA prompt (mdma-author, mdma-reviewer, or mdma-fixer). For mdma-author, pass an optional variantId (e.g. "anthropic/sonnet-5.5", "openai/gpt-6-sol") to get the model-optimised variant — use list-prompt-variants to see all available ids.

NameRequiredDescriptionDefault
nameYesPrompt name: mdma-author, mdma-reviewer, or mdma-fixer
variantIdNoModel-specific variant id for mdma-author (e.g. "google/gemini-2.5-pro", "openai/gpt-5"). Falls back to the default variant if omitted or unknown.

TDQS

A3.8/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden, yet it discloses almost nothing beyond the identity of the resource — no error behavior for an unknown name, no note on caching, auth, or whether the returned prompt is text or a structured object. The fallback-on-unknown-variant behavior is present only in the schema, not the description.

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 tight sentences, front-loaded with the core purpose, then the conditional variant guidance. Every clause earns its place and nothing is padded.

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 two-parameter retrieval tool with full schema coverage and no output schema, the description covers purpose, valid inputs, and the sibling needed for variant discovery. Only the shape of the returned prompt is left unstated, which is a minor gap.

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 both parameters are already documented, including the fallback rule; the description largely restates this with different example variant ids. Baseline 3 is warranted because it adds little beyond the structured field text.

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?

States a specific verb and resource ('Returns a named MDMA prompt') and enumerates the three valid names, so the agent knows exactly what it fetches without opening the schema. It also implicitly distinguishes itself from retrieval siblings like get-doc/get-spec by naming the MDMA prompt domain.

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?

Gives a clear conditional rule: pass variantId only when name is mdma-author, and routes the agent to list-prompt-variants to discover valid ids. There is no explicit when-not/exclusion guidance, but the conditional covers the main decision point.

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

get-specB

Returns the full MDMA specification: component types, schemas (as JSON Schema), binding syntax, external data sources ({ source, params } refs, the DataSourceDescriptor shape, and the rows / series / options kinds), and authoring rules

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/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 that the return is the full spec (unfiltered, complete) and enumerates its sections, which implies a safe read-only retrieval, but it says nothing about size or caching behavior. For a zero-parameter, zero-risk retrieval tool this is adequate but thin.

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

Conciseness4/5

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

A single front-loaded sentence that leads with the return value and then lists contents. The nested parenthesis with DataSourceDescriptor and the rows/series/options kinds is dense but every item earns its place as an inventory of the spec.

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?

With no output schema, the description effectively substitutes for one by enumerating the spec's sections, which is the key information an agent needs. For a parameterless reference-retrieval tool this is nearly complete; only the response format/size is unspecified.

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

Parameters4/5

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

The tool takes no parameters, so there is nothing to document; baseline 4 applies. The description correctly implies no input is needed by describing only the returned content.

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?

Names a specific resource (the MDMA specification) and enumerates exactly what it contains: component types, JSON Schemas, binding syntax, DataSourceDescriptor, and authoring rules. It is distinguishable from get-doc/list-docs by content, though it never explicitly contrasts itself with those siblings.

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 when-to-use guidance, no prerequisites, and no mention of alternatives such as get-doc or list-docs. The agent must infer that this is the reference-spec lookup.

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

list-docsA

Returns the catalog of MDMA documentation files available for fetching from the public GitHub repo (path, title, description). Use this to discover what docs you can pass to get-doc.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It effectively describes the tool's behavior: it returns a catalog with specific fields (path, title, description) from a public GitHub repository. However, it doesn't mention potential limitations like rate limits, authentication requirements, or pagination behavior, which would be valuable for a read operation.

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 perfectly concise with two sentences that each serve distinct purposes: the first explains what the tool does and what it returns, the second explains when to use it. There is zero wasted language or redundancy.

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 zero-parameter read operation with no annotations and no output schema, the description provides good context about what the tool returns (catalog with path, title, description) and its relationship to other tools. However, without an output schema, additional details about the return format structure would be helpful for completeness.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the baseline would be 4. The description appropriately doesn't waste space discussing parameters that don't exist, maintaining focus on the tool's purpose and usage.

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 specific action ('Returns the catalog'), resource ('MDMA documentation files'), and scope ('available for fetching from the public GitHub repo'). It explicitly distinguishes from its sibling 'get-doc' by explaining this tool is for discovery while 'get-doc' is for fetching specific documents.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Use this to discover what docs you can pass to get-doc') and names the alternative tool ('get-doc') for the subsequent action. This clearly establishes the workflow relationship between these two tools.

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

list-packagesA

Returns all MDMA npm packages with their purpose, install command, usage example, and category

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it states what data is returned, it doesn't describe important behavioral aspects like whether results are paginated, sorted, filtered, or cached. It also doesn't mention performance characteristics, error conditions, or authentication requirements.

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, efficient sentence that communicates the core functionality without any wasted words. It's appropriately sized for a zero-parameter tool and front-loads the essential information about what the tool returns.

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 zero-parameter read operation with no output schema, the description adequately covers what data is returned. However, it lacks important contextual information about the return format (array structure, field types), potential limitations (number of packages, sorting), and how this tool relates to sibling tools in the MDMA ecosystem.

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

Parameters4/5

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

The tool has zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't waste space discussing non-existent parameters, though it could theoretically mention that no filtering options are available.

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 specific action ('Returns') and resource ('all MDMA npm packages'), including the exact data fields returned (purpose, install command, usage example, category). It distinguishes itself from siblings like 'list-docs' by focusing specifically on npm packages rather than documentation.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate versus using 'get-doc' or 'list-docs', nor does it specify any prerequisites or contextual constraints for its use.

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

list-prompt-variantsA

Returns all available MDMA_AUTHOR prompt variants with their id, label, and description. Pass the id to get-prompt as variantId to retrieve the model-optimised prompt.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 implies a safe read-only listing and discloses the return shape, but says nothing about authentication, result size, or whether ordering is guaranteed. Adequate but thin for a listing operation.

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 sentences, zero waste. The purpose and return content come first, and the follow-up call to get-prompt is placed after, which is the right ordering.

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?

There is no output schema, so the description's enumeration of returned fields (id, label, description) is genuinely valuable. Combined with the explicit handoff to get-prompt, an agent has what it needs; only pagination/edge-case behavior is unaddressed.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description does not need to compensate for any parameter gap.

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?

States a specific verb (Returns) and a well-scoped resource (MDMA_AUTHOR prompt variants) and enumerates the returned fields (id, label, description). It is distinguishable from siblings like list-docs and list-packages by resource, though it does not explicitly name what it is not.

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 routes the agent to the next step: pass the returned id to get-prompt as variantId. That gives clear context for when to call this tool. It stops short of naming exclusions or when not to use it versus related listing tools.

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

validate-promptA

Validates a custom prompt against MDMA conventions. Returns warnings for anti-patterns and suggestions for improvements.

NameRequiredDescriptionDefault
promptYesThe custom prompt text to validate

TDQS

A3.6/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 behavioral burden. It usefully discloses the return shape (warnings for anti-patterns, suggestions for improvements) and, given there is no output schema, that is genuine added value. However it never confirms the operation is non-mutating, states failure/error behavior, or says whether validation blocks anything.

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 tight sentences with the core action front-loaded and the return behavior second. Nothing is redundant, and the second sentence earns its place because no output schema exists.

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, read-style validation tool with no output schema, the description covers both what it does and what it returns, which is most of what an agent needs. It could be fuller on failure modes and on how the prompt input should be sourced.

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?

There is a single parameter and schema description coverage is 100%, so the schema already defines 'prompt' as the custom prompt text to validate. The description adds no format, size, or syntax detail beyond that, so the baseline 3 applies.

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?

States a specific verb (validates) and resource (custom prompt) and names the standard being checked (MDMA conventions), which distinguishes it from the get-prompt/build-system-prompt siblings. It stops short of explicitly contrasting itself with those siblings, so it is clear but not maximally differentiated.

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 description implies usage — call it to check a prompt for anti-patterns — but never states when to use it versus alternatives like get-prompt or build-system-prompt, nor any prerequisites or exclusions. Usage is inferable from the verb but not spelled out.

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. 5 tool updatesv0.1.2
    • Changedbuild-system-prompt4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / dataSources
        Added value: +{
        +  "description": "External data-source catalog. Each entry: name, optional description, kind (\"rows\" for table.data, \"series\" for chart.data, \"options\" for form select options), optional columns [{ key, type: string|number|boolean|date, description?, sensitive? }], optional params [{ name, type: string|number|boolean, required?, allowed? }]. Names must be unique, but the same data may appear as a rows and a series entry under different names. The model is told to reference sources via { source, params } instead of generating rows.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "columns": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "description": {
        +              "type": "string"
        +            },
        +            "key": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "sensitive": {
        +              "default": false,
        +              "type": "boolean"
        +            },
        +            "type": {
        +              "enum": [
        +                "string",
        +                "number",
        +                "boolean",
        +                "date"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "key",
        +            "type"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "description": {
        +        "type": "string"
        +      },
        +      "kind": {
        +        "enum": [
        +          "options",
        +          "rows",
        +          "series"
        +        ],
        +        "type": "string"
        +      },
        +      "name": {
        +        "minLength": 1,
        +        "type": "string"
        +      },
        +      "params": {
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "allowed": {
        +              "items": {
        +                "type": [
        +                  "string",
        +                  "number",
        +                  "boolean"
        +                ]
        +              },
        +              "type": "array"
        +            },
        +            "name": {
        +              "minLength": 1,
        +              "type": "string"
        +            },
        +            "required": {
        +              "default": false,
        +              "type": "boolean"
        +            },
        +            "type": {
        +              "enum": [
        +                "string",
        +                "number",
        +                "boolean"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "type"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "name",
        +      "kind"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / fields / items / additionalProperties
        Added value: +false
      • addedInput schema / properties / steps / items / additionalProperties
        Added value: +false
    • Changedget-doc1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedget-prompt2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / variantId
        Added value: +{
        +  "description": "Model-specific variant id for mdma-author (e.g. \"google/gemini-2.5-pro\", \"openai/gpt-5\"). Falls back to the default variant if omitted or unknown.",
        +  "type": "string"
        +}
    • Addedlist-prompt-variants
    • Changedvalidate-prompt1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  2. 7 tool updatesv0.1.0
    • First observedbuild-system-prompt
    • First observedget-doc
    • First observedget-prompt
    • First observedget-spec
    • First observedlist-docs
    • First observedlist-packages
    • First observedvalidate-prompt

TDQS

A3.9/5.0

Scored across 8 tools

Disambiguation4/5

Most tools target clearly distinct resources (spec, prompt, docs catalog, doc contents, packages, variants). However, get-spec, get-prompt, and build-system-prompt all revolve around producing prompt/spec text and could be confused at a glance, though the detailed descriptions clarify when each applies.

Naming Consistency4/5

All names follow a kebab-case verb_noun pattern (get-*, list-*, build-*, validate-*), which is predictable and readable. Minor deviation only in that some names extend to three tokens (list-prompt-variants, build-system-prompt), but the convention holds.

Tool Count5/5

Eight tools is well-scoped for a prompt/spec authoring assistant. Each tool earns its place, covering retrieval, generation, validation, and discovery without redundancy.

Completeness4/5

The surface covers the authoring lifecycle well: discovering docs and packages, fetching the spec, retrieving/building/validating prompts, and reading documentation. Minor gaps exist (no direct component-listing or search tool, no way to actually render/execute MDMA output), but the core workflow is covered.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to discover, fetch, and search through Tambo documentation from docs.tambo.co. Provides intelligent content parsing with caching for improved performance when accessing technical documentation.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Generic MCP server that exposes Markdown documentation to LLMs, enabling them to search and answer questions about any software documentation.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for structured document management of markdown and YAML files, with RBAC, git-based approval workflows, and semantic search, enabling agents to read, edit, and maintain documents under governance.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that exposes one or more documentation folders (Markdown, MDX, TXT) to AI agents, enabling listing, reading, and searching of documentation files.
    -