2026年1月23日金曜日

MCPリソースの記述にMDシーケンス図は使えるか?

 MCPサーバのリソースドキュメントにMDで記述したシーケンス図を使ってもLLMは理解してくれますか?という質問です。コパイに聞いてみました。

ということで、Mermaid記法が使えるエディタVisual Studio Codeをインストールしました。
【Qiitaでも使える】テキストから図が生成できるMermaidについてのザックリ解説 #初心者向け - Qiita

数式もLatexであれば使えるそうなので、数式もMDで記述しようと思います。


結論から言うと、Markdown(MD)で書いたシーケンス図は、ほとんどのLLMが十分に理解できます。
ただし、記法の種類と書き方の質によって理解度が大きく変わるという点だけ押さえておくと安心です。


🧠 LLMはMDのシーケンス図を理解できるのか

✔ 結論:理解できる

特に以下のような形式は、LLMが非常に得意とするパターンです。

1. Mermaid記法のシーケンス図

sequenceDiagram
    C# ->> Python: StartSession()
    Python -->> C#: SessionStarted
    C# ->> Python: SendData(stream)
    Python -->> C#: Result

これは構造が明確で、LLMはほぼ100%正しく解釈できます。

2. PlantUML形式

@startuml
C# -> Python: StartSession()
Python --> C#: SessionStarted
@enduml

これも問題なく理解できます。

3. ASCIIアート風のシーケンス図

C#        Python
 | --------> |
 | <-------- |

これも読み取れますが、複雑になると誤解が増えます。


📌 LLMが理解しやすいポイント

  • 登場人物(Lifeline)が明確に書かれている
  • 矢印の方向が一貫している
  • 非同期か同期かが記号で分かる
  • メッセージ名が具体的
  • 図の前後に簡単な説明があるとさらに良い

⚠ LLMが苦手なケース

  • 図が複雑すぎる(20ステップ以上など)
  • ASCIIアートが崩れている
  • 省略記号や独自記法が多い
  • 図だけで文脈がない

🧩 MCPサーバのリソースドキュメントに入れる場合のポイント

あなたのMCPサーバは

  • C# ↔ Pythonnet ↔ asyncio
  • 双方向通信
  • イベント駆動
  • ストリーミング

といった複雑な振る舞いが多いので、シーケンス図はLLMにとって非常に有効な情報源になります。

特に:

  • セッション開始
  • ストリーム開始/終了
  • イベント通知
  • エラー時のフロー

などは、図があるとLLMが正確に推論しやすくなります。


🎯 結論(改めて)

MCPサーバのリソースドキュメントにMarkdownで書いたシーケンス図を入れるのは、LLMにとっても人間にとっても非常に有効です。
特にMermaidやPlantUMLのような構造化された記法なら、LLMは高精度で理解できます。


必要なら、あなたのMCPサーバ向けに
「LLMが最も理解しやすいシーケンス図テンプレート」
を作成できます。

どのフローを図にしたいか教えてくれれば、最適化しますよ。


0 件のコメント:

コメントを投稿