MCP server for MDMA β exposes spec, prompts, docs, and package metadata to AI assistants.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Mdma.
get-specReturns the full MDMA specification: component types, JSON schemas, binding syntax, and authoring rules
get-promptReturns a named prompt (`mdma-author`, `mdma-reviewer`, or `mdma-fixer`). For `mdma-author`, accepts an optional `variantId` (e.g. `google/gemini-2.5-pro`) to return the model-optimised variant
list-prompt-variantsReturns all available `MDMA_AUTHOR` prompt variants (id, label, description) β use the id with `get-prompt` to fetch the model-optimised prompt
build-system-promptGenerates a custom MDMA prompt from structured input (domain, components, fields, steps, business rules)
validate-promptValidates a custom prompt against MDMA conventions β returns warnings, suggestions, and constraint reference
list-packagesReturns all MDMA packages with purpose, install command, and usage example
Markdown Document with Mounted Applications
Interactive documents from Markdown. Built for next gen-apps
π Website Β Β Β·Β Β π Live Demo Β Β Β·Β Β π Docs Β Β Β·Β Β π¬ Discord Β Β Β·Β Β π€ Model
AI conversations today are plain text β the user reads a response and manually acts on it. MDMA changes that. When an LLM knows the MDMA spec, it can respond with interactive components (forms, tables, approval gates) instead of just text. The conversation becomes actionable: the user fills out a form, approves a step, or reviews structured data β all inline, with a predictable schema that your app already knows how to render and process.
No custom UI per use case. No parsing free-form text. The AI generates structured, validated components and your frontend renders them instantly.
MDMA extends Markdown with interactive components defined in fenced mdma code blocks. A regular Markdown file becomes an interactive application:
Same scenario, two models. GPT-5.5 and our own hosted MDMA-IL model.
Our model is available on Hugging Face: MobileReality/mdma-gemma4-26b-dsl-unsloth-v1
| GPT-5.5 | Our own hosted model |
|---|---|
![]() | ![]() |
Each cell shows the pass rate of the model-specialized MDMA_AUTHOR prompt variant on the listed eval suite.
β 100% on the suite.
π‘ Scoring between 80β99% on the suite.
π΄ Scoring below 80% on the suite.
| Variant | one-shot | one-shot with custom prompt | conversation | specific flow of conversation |
|---|---|---|---|---|
| OpenAI | ||||
gpt-5.6-sol | β | β | β | β |
gpt-5.6-terra | β | β | β | β |
gpt-5.6-luna | β | β | β | β |
gpt-5.5 | β | β | β | β |
gpt-5.4 | β | β β | β β | β β |
gpt-5.4-mini | β | β | β * | β * |
gpt-5.4-nano | β | β | β * | β * |
gpt-5.2 | β | β | β | β |
gpt-5.1 | β | β | β | β |
gpt-5 [i] | β | β | β | β |
gpt-5-mini [i] | β | β | β * | β * |
gpt-5-nano [i] | β | β | π‘ * | π‘ * |
gpt-4.1 | β | β | β | β |
gpt-4.1-mini | β | β | β * | β * |
gpt-4.1-nano | β | β | β * | π‘ * |
| Anthropic | ||||
claude-opus-4.8 | β | β | β | β |
claude-opus-4.7 | β | β | β | β |
claude-opus-4.6 | β | β | β | β |
claude-sonnet-4.6 | β | β | β | β |
claude-haiku-4.5 | β | β | β * | β * |
claude-fable-5 | β | β | β | β |
gemini-3.5-flash | β | β | β | β |
gemini-3.1-pro-preview | β | β | β | π‘ β‘ |
gemini-3.1-pro-preview-customtools | β | β | β | β |
gemini-3.1-flash-lite-preview | β | β | β * | β * |
gemini-3-flash-preview | β | β | β * | β * |
gemini-2.5-pro | β | β | β | β |
gemini-2.5-flash | β | β | β * | β * |
gemini-2.5-flash-lite | β | β | β * | β * |
| xAI | ||||
grok-4.3 [i] | π‘ | π΄ | π΄ | π΄ |
grok-4.20 | β | β | β | β |
grok-4.5 | β | β | β | β |
| Zhipu (z.ai) | ||||
glm-4-plus | TBD | TBD | TBD | TBD |
| Moonshot | ||||
kimi-k2 | TBD | TBD | TBD | TBD |
| Alibaba | ||||
qwen3-max | TBD | TBD | TBD | TBD |
| MiniMax | ||||
minimax-m1 | TBD | TBD | TBD | TBD |
| Other | ||||
| model | β | β | β | β |
Don't see your model? Add a prompt variant under
packages/prompt-pack/src/prompts/mdma-author/<vendor>/and open a PR β we'll run the eval suite and add it to this table.
β gpt-5.4 intermittent duplication bug β gpt-5.4 passes one-shot evals reliably but shows a non-deterministic output duplication in multi-turn, custom-prompt, and flow evals (~7β15% of runs). The model generates a complete, correct response and then immediately re-emits the entire output verbatim, causing [duplicate-ids] validation errors. This is a known model-level issue unrelated to the prompt variant. See the OpenAI community thread for details. If this affects your use case, prefer gpt-5.5 or gpt-5.2.
β‘ gemini-3.1-pro-preview stochastic preamble loop β on ~7β15% of flow-eval runs, the model emits a chain-of-thought as visible Markdown prose (e.g. **Investigating Production Errors** repeated 3β5 times) instead of opening a ```mdma block, producing either [yaml-correctness: outside fenced block] or [duplicate-ids] errors. Per Google's official Gemini 3 prompting guide, this is a model-level behavior driven by temperature/sampling β prompt-level fixes shift which test loops rather than eliminating the loops. If deterministic flow output matters, prefer gemini-2.5-pro for production multi-step flows.
* Smaller / lower-tier models from any lab (OpenAI mini Β· nano, Anthropic Haiku, Google Gemini Flash, etc.) pass our eval suites, which exercise short, structured test cases. In longer real-world conversations they tend to hallucinate, forget earlier turns, or drift from the spec. For production use that involves multi-turn dialogue or stateful flows, prefer the flagship-tier model from the same family.
[i] Noticeably slow response times β single-turn responses commonly take tens of seconds and full eval runs measure in minutes.
Each cell shows the pass rate of the model-specialized MDMA_FIXER prompt variant on the single-block fixer eval (16 tests covering structural fixes, bindings, PII, forms, tables/charts, approvals, and custom-component extraction). The fixer is what powers automatic repair of LLM output that fails validate() β every supported model lands at β
via model-tailored inline guards (no-leading-separator, preserve-input-structure, table-key-direction, replace-all-placeholders, fix-all-listed-errors, etc.).
β 100% on the single-block fixer eval (16/16).
| Variant | single-block fixer | notes for testing |
|---|---|---|
| OpenAI | ||
gpt-5.6-sol | β | |
gpt-5.6-terra | β | |
gpt-5.6-luna | β | |
gpt-5.5 | β | |
gpt-5.4 | β | |
gpt-5.4-mini | β | |
gpt-5.4-nano | β | |
gpt-5.2 | β | |
gpt-5.1 | β | |
gpt-5 | β | |
gpt-5-mini | β | |
gpt-5-nano | β | |
gpt-4.1 | β | |
gpt-4.1-mini | β | |
gpt-4.1-nano | β | |
| Anthropic | ||
claude-opus-4.8 | β | |
claude-opus-4.7 | β | |
claude-opus-4.6 | β | |
claude-sonnet | β | catch-all variant β matches claude-sonnet-4-5, claude-sonnet-4-6, etc. |
claude-haiku | β | |
claude-fable-5 | β β‘ | requires reasoning.exclude: true (wired in evals/promptfooconfig.fixer.js) |
gemini-3.5-flash | β β‘ | requires reasoning.exclude: true; adds an inline no-leading-separator guard |
gemini-3.1-pro-preview | β β‘ | requires OpenRouter reasoning.exclude: true (already wired in evals/promptfooconfig.fixer.js) |
gemini-3.1-pro-preview-customtools | β β‘ | same reasoning.exclude requirement |
gemini-3.1-flash-lite-preview | β | |
gemini-3-flash-preview | β | |
gemini-2.5-pro | β β‘ | same reasoning.exclude requirement |
gemini-2.5-flash | β | |
gemini-2.5-flash-lite | β | |
| xAI | ||
grok-4.3 | β β‘ | minimal prompt + reasoning.exclude: true β extra framing regresses Grok 4.3 |
grok-4.20 | β | |
grok-4.5 | β β‘ | requires reasoning.exclude: true (hidden-reasoning model) |
β‘ Reasoning-token leak suppression β for reasoning-flavoured Gemini Pro variants and Grok 4.3, the fixer would otherwise see visible "Thinking: Topic" prose prepended to every response. The eval config sets passthrough.reasoning.exclude: true (and the demo's usePreviewValidation does the same per-provider) to strip reasoning tokens from the response body at the API layer rather than at the prompt layer.
10 built-in component types, all rendered out of the box by @mobile-reality/mdma-renderer-react:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mdma)<a href="https://allmcps.com/mcp/mdma"><img src="https://allmcps.com/api/badge/mdma?style=directory" alt="Mdma on AllMCPs" /></a>