mcpField
M
markdown-formatter

markdown-formatter

ローカル
github.com/XJTLUmedia生産性227 週間前に更新

markdown-formatter について

markdown-formatterは、Markdown文書の変換、分析、修復を行うMCPサーバーです。複数の文書・プラットフォーム形式への出力が必要なユーザー向けで、一括変換と文書分析にも対応します。

主な機能

  1. 01文書・プラットフォーム形式への変換
  2. 02複数文書の一括形式変換
  3. 03Markdownの修復と lint
  4. 04リンク・コード・文書構造の抽出
  5. 05数式対応のPDF・PNGレンダリング

活用シーン

  1. 01ノートをPDFやDOCXに出力
  2. 02SlackやJira向けにMarkdownを整形
  3. 03共有前にMarkdownの崩れを修復
  4. 04文書のリンク・見出し・統計を確認

MCP 対応

変換、修復、lint、文書分析のツールに加え、プロンプトとリソースをMCPクライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"xjtlumedia-markdown-formatter": {
"command": "npx",
"args": [
"-y",
"@xjtlumedia/markdown-mcp-server"
]
}
}
}
起動コマンドnpx -y @xjtlumedia/markdown-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@xjtlumedia/markdown-mcp-server1.0.5

ツール

14

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
markdownstringはい
output_pathstringいいえ

詳細

AI Answer Copier — MCP 対応のマルチフォーマットエクスポーター

「AI のノイズ」を「授業ですぐ使える」形式に、5 秒で変換します。

npm version License: MIT MCP Registry Glama GitHub

AI アシスタントに Markdown を 22 種類のプロフェッショナルなドキュメント形式へ変換する機能を提供する、Model Context Protocol(MCP)サーバーです。複数のドキュメントを 1 回の呼び出しで 22 種類の形式へ一括変換したり、ドキュメントを分析したり、壊れた Markdown を修復したり、プラットフォーム間で変換したりできます。AI とのチャットを離れる必要はありません。

image

npm: https://www.npmjs.com/package/@xjtlumedia/markdown-mcp-server


このツールが生まれた理由

AI に 20 問の問題を作成するよう頼み、できあがりました。でも、ここからが大変です。

課題手作業でのワークフローAI Answer Copier を使う場合
Q&A の抽出各行のコピーに 10~15 分2 秒(自動検出)
数式の書式設定壊れた記号の修正に 20 分即座に完了(KaTeX に対応)
LMS へのアップロードCSV を手作業で入力するのに 15 分ワンクリックでエクスポート
準備にかかる時間の合計約 45~60 分1 分未満

コンテンツの生成には数秒しかかかりません。しかし、実際に使える形に整えるには 1 時間かかります。この MCP サーバーが、そのギャップを完全になくします。


ライブデモ

オンライン版(インストール不要):ai-answer-copier.vercel.app

live_demo1 live_demo2

インスペクターで MCP ツールをテスト:

MCP server

実際の MCP インスタンスを使用:

MCP1 MCP2

すべての 34 種類の MCP ツール

ドキュメント変換ツール(15)
#ツール出力説明
1harmonize_markdown.md意味を変えずに、Markdown 構文(ATX 見出し、- リストマーカー、フェンス付きコードブロック)を標準化し、正規化します
2convert_to_txt.txtすべての書式を削除してプレーンテキストを生成します
3convert_to_html.htmlGFM テーブル、KaTeX 数式、埋め込みスタイルシートを含む、スタイル設定済みの完全な HTML ドキュメントを生成します
4generate_htmlHTML stringすべてのスタイルをインライン化した自己完結型の HTML を生成します(読み取り専用、ファイル I/O なし)
5convert_to_pdf.pdfKaTeX 数式と構文ハイライトに完全対応した、ヘッドレス Chromium による印刷対応 PDF を生成します
6convert_to_docx.docx見出し、リスト、コード書式を設定した Microsoft Word ドキュメントを生成します
7convert_to_latex.tex\section、リスト環境、ネイティブ数式のパススルーに対応した LaTeX ソースコードを生成します
8convert_to_rtf.rtf従来のワードプロセッサーやメールクライアント向けのリッチテキスト形式に変換します
9convert_to_csv.csvGFM パイプテーブルをカンマ区切り値に抽出します
10convert_to_json.jsonセクション、見出し、リスト、コードブロック、テーブルを含む構造化 JSON 表現に変換します
11convert_to_xml.xml<?xml?> 宣言と構造化要素を含む整形式 XML に変換します
12convert_to_xlsx.xlsxExcel スプレッドシートに変換します — Markdown の各テーブルがシートになります
13convert_to_image.pngヘッドレス Chromium による、ページ全体の PNG スクリーンショットを生成します
14convert_to_md.mdMarkdown をファイルにエクスポートします。必要に応じて、事前に書式を統一できます(harmonize=true)
15convert_to_email_html.htmlすべてのスタイルをインライン化した、Outlook、Gmail、Apple Mail 互換のメール向け HTML を生成します
プラットフォーム向け変換ツール(10)
#ツール対象プラットフォーム説明
16convert_to_slackSlackmrkdwn 形式 — 太字は *、リンクは <url|text>、見出しは太字テキストで表します
17convert_to_discordDiscord太字/下線のスタイルを設定した見出しと、保持されたコードブロック
18convert_to_jiraJIRAWiki マークアップ — h1./h2.、{code} ブロック、[text|url] リンク
19convert_to_confluenceConfluence{info}、{note} パネルと {code:language=x} 構文を含む Wiki マークアップ
20convert_to_asciidocAsciiDoc= 見出し、---- コードブロック、url[text] リンク、image:: ディレクティブ
21convert_to_rstreStructuredText下線付き見出し、.. code-block:: ディレクティブ、RST 参照構文
22convert_to_mediawikiMediaWiki== 見出し、'''bold'''、<syntaxhighlight> タグ、{\ wikitable
23convert_to_bbcodeBBCodephpBB/vBulletin フォーラム向けの [b]、[i]、[code]、[url]、[img] タグ
24convert_to_textileTextileRedmine、Basecamp、CMS プラットフォーム向けのマークアップ
25convert_to_orgmodeEmacs Org Mode* 見出し、#+BEGIN_SRC/#+END_SRC コード、[[url][text]] リンク
インポートツール(1)
#ツール説明
26html_to_markdownHTML コンテンツ(完全なドキュメントまたは断片)を Markdown に戻します
修復・Lint ツール(2)
#ツール説明
27repair_markdownLLM の出力やコピー&ペーストで崩れた Markdown を修復します — 閉じ忘れたコードフェンス、崩れたテーブル、余分な強調マーカー、欠落した見出しの空白、壊れたリンク
28lint_markdownMarkdown を検査し、行番号、重大度、ルール名、メッセージ、修正可能フラグを含む JSON 配列として問題を報告します
ドキュメント分析ツール(5)
#ツール説明
29extract_code_blocks言語、内容、開始行番号と終了行番号とともに、すべてのコードブロックを抽出します
30extract_linksテキスト、URL、行番号、種類(インライン、参照、画像、自動リンク)とともに、すべてのリンクと画像を抽出します
31generate_toc見出しから、設定可能な max_depth(1~6)に基づいて Markdown の目次を生成します
32analyze_document包括的な統計情報を提供します — 行数、単語数、文字数、段落数、文数、見出し数、コード数、表数、リンク数、画像数、推定読了時間
33extract_structureドキュメント構成を俯瞰できます — 統計情報、見出しのアウトライン、コードブロックの概要、リンクの概要
一括変換(1)
#ツール入力説明
34batch_convertitems[] × formats[]複数の Markdown ドキュメントを1回の呼び出しで22種類の形式に一括変換します。項目と形式の組み合わせごとにエラーを分離します。ファイル出力には省略可能な output_dir を指定できます。形式:txt、csv、json、xml、xlsx、latex、rtf、docx、pdf、html、md、email、slack、discord、jira、confluence、asciidoc、rst、mediawiki、bbcode、textile、orgmode

6 組み込みプロンプト

複数のツールを連携させる、事前設定済みのプロンプトテンプレートです。

プロンプト説明
convert-documentMarkdown をサポートされている任意の形式に変換します(PDF、DOCX、HTML、LaTeX、CSV、JSON、XML、XLSX、RTF、PNG、TXT、MD)
extract-tablesMarkdown からすべての表を抽出し、CSV または XLSX としてエクスポートします
format-for-sharing書式を統一してから、配布用に PDF と HTML の両方に変換します
analyze-and-repairリント → 修正 → 再リントを行い、すべての問題が解決されたことを確認します
convert-for-platformMarkdown を各種プラットフォーム向けの形式に変換します(Slack、Discord、JIRA、Confluence、AsciiDoc、RST、MediaWiki、BBCode、Textile、Org Mode)
document-overview統計情報、目次、コードブロック、リンクを1つのレポートにまとめた全体概要です

2 リソース

リソース URI説明
markdown-formatter://supported-formatsツール名と種類を含む、23種類以上の出力形式すべての完全な JSON リスト
markdown-formatter://conversion-guideユースケースに応じて適切な出力形式を選ぶためのガイド

クイックスタート

npx でインストール(推奨)

インストールは不要です — MCP クライアントを設定するだけです。

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}
グローバルにインストール
npm install -g @xjtlumedia/markdown-mcp-server

次に、設定します。

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "markdown-mcp-server"
    }
  }
}

AI クライアントごとの設定

🔌 Claude Desktop
image

%APPDATA%\Claude\claude_desktop_config.json(Windows)または ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)を編集します。

{
  "mcpServers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}

Claude Desktop を再起動します。🔌 アイコンが表示され、34個すべてのツールを利用できるようになります。

VS Code(GitHub Copilot)

.vscode/mcp.json または VS Code の設定に追加します。

{
  "servers": {
    "ai-answer-copier": {
      "command": "npx",
      "args": ["-y", "@xjtlumedia/markdown-mcp-server"]
    }
  }
}
Cursor / Windsurf / 任意の MCP クライアント

上記と同じ npx コマンドの形式を、クライアントの MCP 設定で使用します。

DIY 版(ローカルビルド)
{
  "mcpServers": {
    "markdown-formatter": {
      "command": "node",
      "args": [
        "YOUR_PATH_TO_PROJECT/mcp-server/dist/mcp-server/src/index.js"
      ]
    }
  }
}

YOUR_PATH_TO_PROJECT をこのフォルダーの絶対パスに置き換えてください。

HTTP モード(Vercel)

ブラウザベースの連携やリモート連携向けに、ホストされた HTTP エンドポイントを利用できます。

https://ai-answer-copier.vercel.app/api/mcp

MCP Inspector でテストします。

npx @modelcontextprotocol/inspector https://ai-answer-copier.vercel.app/api/mcp

使用例

接続したら、AI に自然な言葉で話しかけるだけです。

「Markdown ドキュメントを 5 件、DOCX、PDF、HTML に同時に一括変換して、Downloads フォルダーに保存してください。」 → AI は batch_convert を items[] と formats[] で使用します

「ニュートンの法則に関する物理の問題を 10 問作成して、Kahoot CSV としてエクスポートしてください。」 → AI は convert_to_csv を使用します

「この Markdown を Word ドキュメントに変換して、Desktop に保存してください。」 → AI は output_path を指定して convert_to_docx を呼び出します

「この講義ノートから、印刷用の PDF を作成してください。」 → AI は Puppeteer によるレンダリング、KaTeX 数式、構文ハイライトを使用して convert_to_pdf を呼び出します

「これを Moodle 互換の XML 問題バンクに変換してください。」 → AI は convert_to_xml を呼び出します

「これを Slack 用に整形して、チームのチャンネルに送ってください。」 → AI は convert_to_slack を呼び出します

「この Markdown の問題を確認して修正してください。」 → AI は lint_markdown を実行し、続けて repair_markdown を実行します

「このドキュメントの概要を教えてください。単語数、構成、すべてのリンクを知りたいです。」 → AI は analyze_document + generate_toc + extract_links を連続して実行します


機能

22 種類の出力形式

PDF、DOCX、HTML、LaTeX、CSV、JSON、XML、XLSX、RTF、PNG、TXT、Markdown に加え、Slack、Discord、JIRA、Confluence、AsciiDoc、RST、MediaWiki、BBCode、Textile、Org Mode、Email HTML にエクスポートできます。

一括変換

1 回の batch_convert 呼び出しで、複数の Markdown ドキュメントを複数の形式に変換できます。項目と形式の組み合わせごとにエラーが分離されるため、1 つの失敗がほかの処理を妨げることはありません。

数式とコードを第一級市民として扱う

KaTeX 数式表現と構文ハイライト付きコードブロックを完全にサポートしています。$\sqrt{x^2 + y^2}$ や Python のスニペットは、どの形式に変換しても正しく保持されます。

バイナリのスマートな処理

バイナリ形式(PDF、DOCX、XLSX、PNG)の場合、生の base64 がチャットに出力されることはありません。サーバーは実行可能な案内を返すため、AI はファイルパスに保存する方法を把握できます。

ドキュメントの分析と修復

チャットを離れることなく、Markdown の lint、書式の自動修復、コードブロックとリンクの抽出、目次の生成、ドキュメント統計の包括的な取得ができます。

GFM(GitHub Flavored Markdown)

表、タスクリスト、取り消し線、自動リンクを remark-gfm で正しく解析します。

Puppeteer 対応の PDF と PNG

PDF と画像のエクスポートではヘッドレス Chromium を使用し、CSS スタイリング、KaTeX 数式、構文ハイライト、印刷に最適化されたレイアウトを備えた、ピクセル単位で正確なレンダリングを実現します。

自己完結型

外部 API への実行時依存はありません。すべてローカルで動作します。データがコンピューターの外に送信されることはありません。


アーキテクチャ

┌─────────────────────────┐
│  AI Client               │
│  (Claude, Copilot,      │
│   Cursor, Windsurf)     │
└──────────┬──────────────┘
           │ MCP Protocol (stdio / HTTP)
           ▼
┌─────────────────────────┐
│  AI Answer Copier        │
│  MCP Server (34 tools)   │
│                          │
│  ┌── Conversion ────────┐│
│  │ remark/rehype, docx, ││
│  │ puppeteer, xlsx,     ││
│  │ CSV/JSON/XML/RTF/    ││
│  │ LaTeX/TXT parsers    ││
│  └──────────────────────┘│
│  ┌── Platform ──────────┐│
│  │ Slack, Discord, JIRA,││
│  │ Confluence, AsciiDoc,││
│  │ RST, MediaWiki,      ││
│  │ BBCode, Textile, Org ││
│  └──────────────────────┘│
│  ┌── Batch ─────────────┐│
│  │ items[] × formats[]  ││
│  │ 22 formats, isolated ││
│  └──────────────────────┘│
│  ┌── Analysis ──────────┐│
│  │ Code blocks, links,  ││
│  │ TOC, stats, structure││
│  └──────────────────────┘│
│  ┌── Repair ────────────┐│
│  │ Lint, auto-repair    ││
│  └──────────────────────┘│
│  ┌── Import ────────────┐│
│  │ HTML → Markdown      ││
│  └──────────────────────┘│
└─────────────────────────┘

v2.1.0 の新機能

このリリースでは、ローカル(npx)とリモートの Vercel MCP トランスポートの両方に対して、8 件のロジック修正を行い、堅牢性を高めました。

#修正内容対象
1エラー発生時にブラウザーが閉じられない — browser.close() の前後を try/finally で囲み、PDF/PNG の処理に失敗しても Chromium が残らないようにしました両方のトランスポート
2generate_html に KaTeX CSS がない — ビューポートメタタグ、KaTeX スタイルシート(SRI ハッシュ)、数式を正しく表示するためのインラインスタイル一式を復元しましたVercel /api/mcp
3convert_to_html のスタイルが不完全 — ローカルの出力と一致するよう、SRI 整合性ハッシュ、テーブルの枠線、引用のスタイルを追加しましたVercel /api/mcp
4セッションマップのメモリリーク — instances Map が SESSION_TTL_MS に基づいて 30 分後に古いセッションを破棄するようになりました。McpInstance は lastUsed を追跡しますVercel /api/mcp
5通常の SSE ストリーム終了時に keepAlive のインターバルがクリアされない — 必ず clearInterval(keepAlive) を呼び出す内側の try/finally を追加しましたVercel /api/mcp
6SDK 内部の _initialized へのアクセス — 裸の @ts-ignore を typeof ガードに置き換え、SDK のアップグレード後もサーバーが正常にエラー処理できるようにしましたVercel /api/mcp
7入力サイズの検証がない — サイズの大きすぎるペイロードによる CPU/メモリの過剰消費を防ぐため、すべてのツール呼び出しに 1 GB のハードリミット(MAX_INPUT_BYTES)を追加しました両方のトランスポート
8DELETE メソッドで新しいセッションが作成される — DELETE の場合、ハンドラーが直ちに 200 を返すようになり、意図しないセッションが作成されなくなりましたVercel /api/mcp

既知の制限事項

  • PDF/PNG にはローカルの Chromium が必要です — convert_to_pdf と convert_to_image はヘッドレスブラウザーを起動します。npx では問題なく動作しますが、Vercel の無料プランでは利用できません(Chromium が同梱されていないため)。自動検出に失敗する場合は、PUPPETEER_EXECUTABLE_PATH 環境変数にローカルの Chrome のパスを設定してください。
  • Vercel 上の Chromium のバージョン — リモートエンドポイントでは、v131.0.1 に固定された tar を使用する @sparticuz/chromium-min を使用します。Vercel が Lambda ランタイムを更新した場合は、CHROMIUM_TAR_URL 環境変数の更新が必要になることがあります。
  • 入力サイズの上限は 1 MB です — すべてのツール呼び出しで、1 MB を超える入力は拒否されます。変換の前に、大きなドキュメントをセクションごとに分割してください。
  • セッション TTL(リモートのみ) — Vercel エンドポイントのセッションは、30 分間操作がないと期限切れになります。長時間実行するステートフルなワークフローでは、定期的にキープアライブ呼び出しを行ってください。

開発

# Clone the repository
git clone https://github.com/XJTLUmedia/AI_answer_copier.git

# Web app
npm install
npm run dev

# MCP server
cd mcp-server
npm install
npm run dev     # hot reload
npm run build   # production build
npm run inspector  # test with MCP Inspector

技術スタック

コンポーネント技術
MCP SDK@modelcontextprotocol/sdk
Markdown パーサーunified + remark + rehype
数式のレンダリングremark-math + rehype-katex
Word エクスポートdocx
Excel エクスポートxlsx
PDF/PNG エクスポートpuppeteer
スキーマ検証zod
ランタイムNode.js (ESM)

コントリビューション

コントリビューションを歓迎します。新しいエクスポート形式、バグ修正、ドキュメントの改善など、ぜひプルリクエストをご検討ください。

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. プルリクエストを送信します

ライセンス

MIT © XJTLUmedia


教育者が、教育者のために開発しました。
週に 5 時間を取り戻しましょう。書式設定は AI に任せてください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。