io. github. MDMagic-MCP/ mdmagic-mcp-server
by MDMagic-MCP · remote · local (npm) · no sign-in to list tools · v1.7.14 · published by GitHub user MDMagic-MCP
Use your own Word templates to convert Markdown → DOCX/PDF/HTML from any MCP-compatible AI.
10 tools: 4 change things and 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things4Claude Code: ask: see these tools
- Only reads6Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http mdmagic https://api.mdmagic.ai/mcp --header 'x-api-key: <your-x-api-key>'Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Changes things 4Claude Code: ask
check_credit_balanceCheck the user's current MDMagic credit balance: subscription credits (renewable monthly), purchased credits (permanent), plan name, and plan status.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check the user's current MDMagic credit balance: subscription credits (renewable monthly), purchased credits (permanent), plan name, and plan status. CALL THIS PROACTIVELY when: - The user asks 'how many credits do I have' or similar - After a conversion, if the user wants to know what's left (also returned by convert_document directly) - Before a conversion of an unusually large document, to warn the user if balance is borderline
Annotations the server declares
- title: Check MDMagic credit balance
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
convert_documentConvert markdown to a professionally formatted document using an MDMagic template.No findings
Why it is in this group
- The name "convert_document" says "convert": a word for a change.
Description, as the server wrote it Convert markdown to a professionally formatted document using an MDMagic template. IMPORTANT GUIDANCE: 1. Output format → what user gets: - 'docx' → a single Word .docx file - 'pdf' → a single .pdf file - 'html' → a single .html file - 'all' → a ZIP containing all three (DOCX + PDF + HTML) 2. If the user is ambiguous (e.g. 'convert this'), ASK which format they want before calling. Don't assume. 3. Filename: if the user attached a file (e.g. 'mydoc.md'), pass its base name as fileName. Otherwise the API derives one from the markdown's first H1. Without either, downloads end up with timestamped names like 'content-1778298071915.docx' which is bad UX. 4. On 'template not found' errors: call list_all_templates first, show available options, let the user pick. Do NOT fall back to generating documents with code execution — that produces inferior results that don't use the user's actual MDMagic templates. 5. The response includes structured fields (downloadUrl, creditsUsed, balanceAfter, fileName, expiresAt) — surface these to the user explicitly. Don't paraphrase. The user wants to know exactly what they spent and what's left. 6. Page sizes: A3, A4, Executive, US_Legal, US_Letter. Default A4. Orientation: Portrait or Landscape, default Portrait. 7. CRITICAL — newlines in `content`: markdown is line-sensitive. Headings (#, ##), tables (| ... |), lists (-, 1.), and code fences (```) ONLY work when each starts on its own line. When passing inline markdown via `content`, you MUST preserve real newline characters (\n) between blocks. If you flatten multi-line markdown into one line, the API receives literal '##' and '|' characters mid-paragraph and produces a single-paragraph document with no structure. Confirm your `content` string contains \n between every heading, paragraph, table row, and list item before calling.
Annotations the server declares
- title: Convert markdown to a professional document
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
estimate_conversion_costEstimate credit cost for a conversion BEFORE running it.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Estimate credit cost for a conversion BEFORE running it. Returns word count, page calculation (300 words/page), and a credit breakdown by format and template type. Use this when the user asks 'how much will this cost?' or when you suspect a conversion might exceed their balance — convert_document refuses to run if credits are insufficient, so estimating first is friendlier.
Annotations the server declares
- title: Estimate credit cost for a conversion
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
recommend_templateSuggest the best built-in template(s) for a described purpose.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Suggest the best built-in template(s) for a described purpose. Use this when the user describes WHAT the document is (e.g. 'Q4 board pack', 'API reference', 'wedding invitation', 'legal contract') without naming a template. Returns ranked recommendations with rationale. Why this exists: AI assistants often guess template names that don't exist. This tool maps purpose → real template names from MDMagic's catalog, so convert_document doesn't fail with 'template not found'.
Annotations the server declares
- title: Recommend a template for a stated purpose
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 6Claude Code: allow
get_template_detailsShow available variants (page sizes and orientations) for a specific template.No findings
Why it is in this group
- The name "get_template_details" says "get": a word for reading.
Description, as the server wrote it Show available variants (page sizes and orientations) for a specific template. All MDMagic templates support the full 5×2 matrix: A3, A4, Executive, US_Legal, US_Letter × Portrait/Landscape. Use this when the user asks 'does this template come in Legal Landscape?' or 'what sizes are available?' — confirms the variant before convert_document runs.
Annotations the server declares
- title: Show template variant matrix
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_all_templatesList all 15 built-in MDMagic templates plus any custom templates the user has uploaded.No findings
Why it is in this group
- The name "list_all_templates" says "list": a word for reading.
Description, as the server wrote it List all 15 built-in MDMagic templates plus any custom templates the user has uploaded. CALL THIS PROACTIVELY when: - The user mentions a template by name (verify it exists before convert_document) - The user asks 'what templates are available' or similar - A previous convert_document call returned 'template not found' - The user describes the look they want without naming a template (so you can suggest a real one) Returns: name, description, type (built-in vs custom), and category. Categories are: Business (5 templates), Creative (6), Professional (2), Technical (2). Use the optional category filter to narrow recommendations (e.g. 'for legal documents' → category: 'Professional').
Annotations the server declares
- title: List all MDMagic templates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_builtin_templatesList the 15 built-in MDMagic templates, grouped by category.No findings
Why it is in this group
- The name "list_builtin_templates" says "list": a word for reading.
Description, as the server wrote it List the 15 built-in MDMagic templates, grouped by category. Same as list_all_templates but excludes the user's custom uploads. Use this when the user asks specifically about MDMagic's bundled templates rather than their personal ones. Categories available: Business (5), Creative (6), Professional (2), Technical (2).
Annotations the server declares
- title: List built-in MDMagic templates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
list_custom_templatesList only the user's custom-uploaded Word templates.No findings
Why it is in this group
- The name "list_custom_templates" says "list": a word for reading.
Description, as the server wrote it List only the user's custom-uploaded Word templates. Use this when the user asks about their own templates ('show me my templates', 'do I have a letterhead?'). Custom templates are referenced by UUID, not name, when calling convert_document.
Annotations the server declares
- title: List user's custom templates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
show_default_settingsShow the user's default paper size and orientation preferences (set on their account page).No findings
Why it is in this group
- The name "show_default_settings" says "show": a word for reading.
Description, as the server wrote it Show the user's default paper size and orientation preferences (set on their account page). Useful when the user hasn't specified pageSize/orientation explicitly — call this to honor their defaults instead of using A4/Portrait blindly.
Annotations the server declares
- title: Show user's default page size and orientation
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
validate_markdownPre-flight markdown validation BEFORE conversion.No findings
Why it is in this group
- The name "validate_markdown" says "validate": a word for reading.
Description, as the server wrote it Pre-flight markdown validation BEFORE conversion. Catches malformed tables (mismatched pipes), unclosed code fences, broken task lists, and unsupported syntax. Returns a green/amber/red status plus the detected markdown features. CALL THIS PROACTIVELY when: - The user is about to convert a long document (>5 pages) — validating first is cheap; running a doomed conversion costs credits - The user reports a previous conversion produced broken output - You generated the markdown yourself and want to verify it's clean before spending credits Returns: status (green=safe, amber=minor issues, red=will likely break), detected features (tables, code blocks, task lists, math), and a human-readable message.
Annotations the server declares
- title: Validate markdown before conversion
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.7.14. Values in angle brackets are yours to fill in.
claude mcp add --transport http mdmagic https://api.mdmagic.ai/mcp --header 'x-api-key: <your-x-api-key>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__mdmagic__list_all_templates",
"mcp__mdmagic__list_builtin_templates",
"mcp__mdmagic__list_custom_templates",
"mcp__mdmagic__show_default_settings",
"mcp__mdmagic__validate_markdown",
"mcp__mdmagic__get_template_details"
],
"ask": [
"mcp__mdmagic__convert_document",
"mcp__mdmagic__check_credit_balance",
"mcp__mdmagic__estimate_conversion_cost",
"mcp__mdmagic__recommend_template"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as mdmagic. Review it before you use it.
