はじめに

本記事は📘Marp用MCPサーバーを拡張したの続編記事になる。Marpというのはマークダウンでテキストを記載するとそれだけでスライドになるという便利ツールである。

過去記事

Marp スライド例

このMarp、素早くスライドを作るのに便利でよく使っている。テキストベースなので最近流行りのLLMスライド作成にも向いている。ただしLLMにスライドを作らせるとレイアウトを認識できないのでとにかく枠からはみ出るという問題が存在し、それを解決するためにレイアウトの型をガチガチに固めるMCPサーバーを作ったりしていた。LLMには「layout=title, header=発表タイトル, subtitle=サブタイトル」みたいなコンテンツの中身だけ出力させて、それを基にプログラムでマークダウンを書くというMCPサーバーだ。文字数上限や要素が決まるのでレイアウトが固定される。

前回の記事ではテーマごとのレイアウトを追加した。

marpのテーマ比較画像

更新のMotivation

これで基本的なレイアウトに関してはまぁ問題なくなっていたのだが、最近このような記事を見かけた。

marp記事

やりこみがすごい。

ただ、Skillsみたいなプロンプトベースで作り込んだりレイアウトのフォールバックを組むならコードベースで作り込むほうが効率と再現性が良いと思うので、既存のMarp-MCPでもう少しなんとかならないか考えた(もちろん前者の方が自由度は高い)。

できる条件が整っている

幸い、テーマに対応した時にサーバー起動コマンドのargumentsを変更すると使用できるlayoutの種類が切り替わる仕組みができていた。さらに今月はClaudeのOpus4.6の無料クレジットが$50プレゼントされているので、これを利用してCSSとHTMLでリッチにしたスライドをLLMに書かせて固定レイアウトとして登録する。

新規のargumentは-sもしくは--styleで、今回追加したstyle名はrichとした。例えば下記の用にMCPサーバーとして登録する。

{
  "command": "npx",
  "args": [
    "-y",
    "@masaki39/marp-mcp@latest",
    "-s",
    "rich"]
}

カードレイアウト

例えばカードレイアウトだと上記の画像の様になる。その他、READMEからレイアウト例集が見れる。

メリット・デメリット

今回の対応のメリット

  • 今後実質無制限にスライドのパターン集を増やせる
  • 複雑なレイアウトのテンプレートが使える
  • CSS依存がない(defaultテーマで動く想定のarguments)

デメリット

  • マークダウンファイルに直接CSSやHTMLが書かれる
  • 人力編集難易度が上がる
  • 複雑なレイアウトの出力は賢いモデルじゃないと上手くできないかも?

おわりに

後方互換性はあるので、とりあえず使っていこう。