mdmagic-mcp-server

Use your own Word templates to convert Markdown → DOCX/PDF/HTML from any MCP-compatible AI.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
83%
命名品質
96%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,771Token(工具定義)
~1.3 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.16%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "mdmagic-mcp-server": {
      "command": "npx",
      "args": [
        "@mdmagic/mcp-server"
      ]
    }
  }
}

可執行的套件

npm@mdmagic/mcp-server1.7.14stdio

遠端端點

https://api.mdmagic.ai/mcpstreamable-http

它能做什麼

工具清單

工具(10)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢convert_document(content, filePath, fileContent, fileName, templateName, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "Raw markdown text content (alternative to filePath or fileContent). MUST preserve real newlines (\\n) between every block: heading, paragraph, table row, list item, code fence. Markdown is line-sensitive — a single-line blob with embedded '##' or '|' renders as literal text, not as a heading or table. If your source markdown has 30 lines, the string you pass here also has 30 lines separated by \\n."
    },
    "filePath": {
      "type": "string",
      "description": "Path to markdown file (VS Code integration, alternative to content or fileContent)"
    },
    "fileContent": {
      "type": "string",
      "description": "Base64 encoded file content (alternative to content or filePath)"
    },
    "fileName": {
      "type": "string",
      "description": "Optional desired base name for the output file (without extension). If the user attached a file like 'mydoc.md', pass 'mydoc' here. The API will use this for the download filename. If omitted, the API derives one from the markdown's first H1 heading."
    },
    "templateName": {
      "type": "string",
      "description": "Template to use for conversion. Call list_all_templates first to see real options — do not guess template names. Some templates are built-in (e.g. 'Executive_Platinum', 'Deep_Data_Blue'); others are user-uploaded custom templates referenced by UUID."
    },
    "outputFormat": {
      "type": "string",
      "enum": [
        "docx",
        "pdf",
        "html",
        "all"
      ],
      "description": "Output format. 'docx', 'pdf', or 'html' return that single file; 'all' returns a ZIP with DOCX+PDF+HTML."
    },
    "pageSize": {
      "type": "string",
      "enum": [
        "A3",
        "A4",
        "Executive",
        "US_Legal",
        "US_Letter"
      ],
      "description": "Page size for the document (default: A4)"
    },
    "orientation": {
      "type": "string",
      "enum": [
        "Portrait",
        "Landscape"
      ],
      "description": "Page orientation (default: Portrait)"
    }
  },
  "required": [
    "templateName",
    "outputFormat"
  ]
}
🟢list_all_templates(includeDetails, category)

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').

輸入結構描述

{
  "type": "object",
  "properties": {
    "includeDetails": {
      "type": "boolean",
      "description": "Include template details like available page sizes and orientations (default: false)"
    },
    "category": {
      "type": "string",
      "enum": [
        "Business",
        "Creative",
        "Professional",
        "Technical"
      ],
      "description": "Optional filter — return only built-in templates in this category. Custom templates are always included regardless. Categories: Business (executive/financial), Creative (designer/artistic/novelty), Professional (legal), Technical (code/data documentation)."
    }
  }
}
🟢list_builtin_templates(includeDetails, category)

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).

輸入結構描述

{
  "type": "object",
  "properties": {
    "includeDetails": {
      "type": "boolean",
      "description": "Include template details like available page sizes and orientations (default: false)"
    },
    "category": {
      "type": "string",
      "enum": [
        "Business",
        "Creative",
        "Professional",
        "Technical"
      ],
      "description": "Optional filter — return only templates in this category."
    }
  }
}
🟢list_custom_templates(includeDetails)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "includeDetails": {
      "type": "boolean",
      "description": "Include template details like available page sizes and orientations (default: false)"
    }
  }
}
🟢show_default_settings

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.

輸入結構描述

{
  "type": "object",
  "properties": {}
}
🟢check_credit_balance

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

輸入結構描述

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢estimate_conversion_cost(content, templateName, outputFormat, pageSize, orientation)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "Markdown content to estimate credit cost for"
    },
    "templateName": {
      "type": "string",
      "description": "Template ID or name (UUID for custom templates, name for system templates)"
    },
    "outputFormat": {
      "type": "string",
      "enum": [
        "docx",
        "pdf",
        "html",
        "all",
        "all-formats"
      ],
      "description": "Output format(s): docx (DOCX only), pdf (DOCX+PDF), html (DOCX+HTML), all/all-formats (DOCX+PDF+HTML)"
    },
    "pageSize": {
      "type": "string",
      "enum": [
        "A3",
        "A4",
        "Executive",
        "US_Legal",
        "US_Letter"
      ],
      "description": "Page size for the document"
    },
    "orientation": {
      "type": "string",
      "enum": [
        "Portrait",
        "Landscape"
      ],
      "description": "Page orientation"
    }
  },
  "required": [
    "content",
    "templateName",
    "outputFormat"
  ]
}
🟢validate_markdown(content, filename)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "content": {
      "type": "string",
      "description": "Markdown content to validate"
    },
    "filename": {
      "type": "string",
      "description": "Optional filename label for the response (defaults to 'content.md')"
    }
  },
  "required": [
    "content"
  ]
}
🟢get_template_details(templateName)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "templateName": {
      "type": "string",
      "description": "Template ID or name (e.g. Executive_Platinum, or a UUID for custom templates)"
    }
  },
  "required": [
    "templateName"
  ]
}
🟢recommend_template(purpose, topN)

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'.

輸入結構描述

{
  "type": "object",
  "properties": {
    "purpose": {
      "type": "string",
      "description": "Free-text description of the document's purpose. Examples: 'Q4 board pack for investors', 'restaurant menu', 'developer API documentation', 'wedding invitation'."
    },
    "topN": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5,
      "description": "How many recommendations to return (1-5, default 3)"
    }
  },
  "required": [
    "purpose"
  ]
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本10 個工具
已驗證未記錄版本10 個工具
已驗證未記錄版本10 個工具