mdma
This server provides AI assistants with access to the MDMA specification, authoring tools, package metadata, and live documentation.
Get the full MDMA spec (
get-spec): Retrieve the complete specification including component types, JSON schemas, binding syntax, and authoring rules.Retrieve authoring prompts (
get-prompt): Fetch named prompts (mdma-author,mdma-reviewer,mdma-fixer) to guide AI in creating, reviewing, or fixing MDMA definitions. Supports model-optimised variants formdma-author.List prompt variants (
list-prompt-variants): Discover all available variants of theMDMA_AUTHORprompt (e.g. for Gemini, GPT-4, etc.) without fetching full content.Build a custom system prompt (
build-system-prompt): Generate a tailored MDMA prompt from structured inputs such as domain context, component types, form fields, multi-step flow definitions, and business rules.Validate a custom prompt (
validate-prompt): Check a custom prompt against MDMA conventions, receiving warnings for anti-patterns and suggestions for improvement.List MDMA npm packages (
list-packages): Browse all MDMA npm packages with their purpose, install commands, usage examples, and categories.Discover documentation (
list-docs): Get a catalog of available MDMA documentation files (paths, titles, descriptions) from the public GitHub repository.Fetch live documentation (
get-doc): Retrieve the latest content of any MDMA documentation file directly from GitHub, with optional support for a specific branch, tag, or commit SHA.
@mobile-reality/mdma-mcp
MCP (Model Context Protocol) server for MDMA. Exposes the MDMA spec, authoring prompts, package metadata, and live GitHub documentation to AI assistants.
Tools
Tool | Purpose |
| Returns the full MDMA specification (component types, JSON schemas, binding syntax, authoring rules). |
| Returns a named MDMA prompt ( |
| Returns all available |
| Generates a custom MDMA prompt from structured input (domain, components, fields, steps, business rules). |
| Validates a custom prompt against MDMA conventions. |
| Returns all MDMA npm packages with purpose, install command, usage example, and category. |
| Returns the catalog of MDMA documentation files available for fetching from the public GitHub repo. |
| Fetches the latest version of a doc from |
Install
{
"mcpServers": {
"mdma": { "command": "npx", "args": ["@mobile-reality/mdma-mcp"] }
}
}Distribution venues
Places where MDMA's MCP server is published or should be published. Each venue has its own submission / update flow — when releasing a new version, check each one.
Venue | Identifier / URL | Notes |
npm |
| Publish via |
Official MCP Registry |
| Published via |
Glama | Quality + Security scores auto-evaluated periodically. Docker build config lives in the Glama admin page — re-deploy + re-release when bumping. | |
awesome-mcp-servers |
| Entry sits under Developer Tools alphabetically. |
Smithery Skills |
| Skills surface — not the MCP surface (Smithery's MCP flow is HTTP-only, unusable for stdio). |
MCPB Desktop Extensions | Anthropic intake form | Partner queue at Anthropic. Bundle built locally; not shipped in this repo. |
Release checklist — when bumping the version
Use this checklist every time you publish a new version (0.2.4 → 0.2.5, etc.).
1. Bump + test
Update
versionin package.json.Update
versionstring in src/index.ts (theMcpServer({ version: ... })call).Update top-level
versionandpackages[0].versionin server.json.Update top-level
versionandpackages[0].versionin manifest.json.Add a changeset:
pnpm changesetat repo root.Run
pnpm build && pnpm test && pnpm typecheckin this package.
2. Publish to npm
pnpm publish --access public --no-git-checksfrom this directory.Verify:
npm view @mobile-reality/mdma-mcp version mcpName— both should match.
3. Publish to the MCP Registry
Ensure
mcp-publisheris authenticated:mcp-publisher login github(re-auth if tokens expired).mcp-publisher publishfrom this directory.Verify:
curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.MobileReality/mdma"shows the new version.
Do not commit
.mcpregistry_github_token/.mcpregistry_registry_token— they are in .gitignore. GitHub's push protection will block the push anyway; this is a belt-and-braces reminder.
4. Tag the release
git tag '@mobile-reality/mdma-mcp@<version>'
git push origin '@mobile-reality/mdma-mcp@<version>'5. Build a fresh MCPB bundle (only if submitting a Desktop Extension update)
pnpm's virtual store (.pnpm/) gets stripped by mcpb pack, so you must build the bundle from a clean npm-installed directory or transitive deps (e.g. ajv) will be missing.
Output: <name>-<version>.mcpb. Test-install in Claude Desktop, then attach as a GitHub Release asset.
6. Glama — if tool descriptions or Dockerfile config changed
If you added / renamed / changed descriptions of tools: Glama's Quality score will re-evaluate on its next periodic scan. No manual trigger.
If
packages[0].versionbumped: go to the Glama admin page → update Build steps (npm install -g @mobile-reality/mdma-mcp@<version>) → Deploy → Make Release.
7. Downstream awareness
Update the MCP tools table in the root README.md if tools were added / renamed / removed.
Update this package's own tools table (above) the same way.
If a breaking change: note in the changeset; update consumers of
createMdmaMcpServer()if any.
Troubleshooting
MCP Registry publish fails with 403 Forbidden
If the error says permission to publish: io.github.gitsad/*, io.github.MobileReality/*. Attempting to publish: io.github.mobilereality/mdma (lowercase mismatch): the registry is case-sensitive and your mcpName / server.json name must exactly match GitHub's canonical MobileReality capitalization. Fix both files and republish to npm (versions on npm are immutable).
If the error says permission to publish: io.github.gitsad/* (org missing entirely): your MobileReality GitHub membership is private. Make it public at https://github.com/orgs/MobileReality/people, then mcp-publisher logout && mcp-publisher login github to refresh the JWT.
MCPB .mcpb crashes on install in Claude Desktop
Usually "missing module" errors in the Developer tab logs. Cause: pnpm's nested .pnpm/ virtual store got stripped at pack time, so transitive deps are missing. Fix: build the bundle from a clean npm-installed directory (see step 5 above). Do not run mcpb pack directly against packages/mcp/node_modules.
Secrets leaking into the bundle
mcpb pack does not respect .gitignore. Any .mcpregistry_*_token file next to the manifest at pack time gets zipped into the .mcpb. Always delete these before packing, and prefer the /tmp/mcpb-build workflow above which has no tokens in its directory.
Files in this package
File | Purpose | Tracked? |
TypeScript source for the server + tools. | ✅ | |
Compiled JavaScript. | ❌ (gitignored) | |
Vitest unit tests for tool logic. | ✅ | |
Contains the | ✅ | |
MCP Registry manifest consumed by | ✅ | |
MCPB (Desktop Extension) manifest. | ✅ | |
1024×1024 square icon for the MCPB submission. | ✅ | |
Screenshots bundled with the MCPB for the Claude Desktop install dialog. | ✅ | |
| Built Desktop Extension bundle (build artifact). | ❌ (gitignored) |
Latest Blog Posts
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/MobileReality/mdma'
If you have feedback or need assistance with the MCP directory API, please join our Discord server