MsgPack (LsMsgPack) について
MsgPack データを、AI エージェントや人が読めるテキストにデコードする MCP サーバー兼コマンドラインツールです。VS Code や Visual Studio でブレークポイント停止中のプログラムの変数バイト列も読み取れます。MsgPack のペイロードをデバッグする開発者を対象としています。
主な機能
- 01MsgPack をコメント付きの JSON に変換
- 02LsMsgPack のインデックススキーマと型 ID の解決
- 03デバッグ中の変数からのバイト列の読み取り
- 04コンパイル済み .NET クラスとのデータ照合
- 05オフセット指定によるバイトの説明と値の検索
- 06コマンドラインからの利用
活用シーン
- 01停止中のプログラムにある MsgPack ペイロードの確認
- 02MsgPack データと .NET クラスのプロパティの不一致の調査
- 03ターミナルや AI アシスタントでのバイナリメッセージの表示
MCP 対応
MCP サーバーとして、msgpack_decode や msgpack_debug_read などのツールを MCP クライアントに提供し、データのデコードとデバッグセッションからのバイト読み取りを行います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LsMsgPack MCP サーバー
AI エージェント向け MsgPack。MCP サーバー兼コマンドラインツールです。MsgPack データを、AI(またはターミナルを使う人)が読めるテキストにデコードします。また、デバッガーで一時停止している VS Code または Visual Studio のプログラム内にある変数のバイト列を読み取ります。
言語モデルが読めるのはテキストであり、バイト列ではありません。16 進数や Base64 では、1 バイトあたり複数のトークンが必要になり、手作業でのデコードは時間がかかり、エラーも発生しやすくなります。バイト列からはデコードできないデータもあります。LsMsgPack のインデックス付きスキーマではプロパティ名がインデックスとして書き込まれ、スキーマ参照にはスキーマの 16 バイトの ID しか含まれません。このツールは LsMsgPack ライブラリそのもの(MsgPack Explorer のコード)を使ってデータをデコードし、コメント付きの JSON として出力します。
MsgPack "doc1" 247 bytes from payload (byte[], Launch Api).
Structure: indexed schema (inline, 3 types) followed by the body
No errors, 0 warnings or comments.
Schema (inline): type ids and property ids in the body are indexes into these lists.
#0 Invoice: Id, Customer, Billing, Lines, Date, Reference, Tags
#1 Address: Street, Number, City
#2 Line: Product, Quantity, Price
Objects (JSON with // comments: a type name comes from a type id, a name with ~ is inferred from the schema; dictionary keys that are not strings are not quoted):
{ // Invoice~
"Id": 1234,
"Customer": "Alice",
"Billing": { "Street": "Main street", "Number": 12, "City": "Amsterdam" }, // Address~
"Lines": [ // 2 items
{ "Product": "Apples", "Quantity": 3, "Price": 1.25 }, // Line~, Price: decimal
{ "Product": "Pears", "Quantity": 2, "Price": 0.99 } // Line~, Price: decimal
],
"Date": "2026-10-05T12:30:00Z", // timestamp
"Reference": "5bad8f0fcbd99f46a16570867728950e", // bin, 16 bytes, as Guid 0f8fad5b-d9cb-469f-a165-70867728950e
"Tags": ["fruit", "fresh"] // 2 items
}
LsMsgPack で書き込まれたデータに限らず、あらゆる MsgPack を読み取ります。エラーにはオフセットが示され、エラー後に読み取られた値には印が付きます。
インストール
.NET ランタイム 8 以降が必要です。
dotnet tool install -g LsMsgPack.Mcp # the command is lsmsgpack-mcp
ソースからビルドする場合:dotnet publish LsMsgPackMcpServer -c Release -o <folder> を実行し、lsmsgpack-mcp の代わりに dotnet <folder>/LsMsgPackMcp.dll を実行してください。
エージェントへの追加
| クライアント | 方法 |
|---|---|
| VS Code(Copilot エージェントモード) | MsgPack Explorer 拡張機能がサーバー「MsgPack (LsMsgPack)」を登録するため、操作は不要です。 |
| Claude Code | claude mcp add lsmsgpack -- lsmsgpack-mcp |
| Visual Studio 2022(17.14 以降) | %USERPROFILE%\.mcp.json(またはソリューションの隣にある .mcp.json):{ "servers": { "lsmsgpack": { "type": "stdio", "command": "lsmsgpack-mcp" } } } |
| Claude Desktop、Cursor、Windsurf など | { "mcpServers": { "lsmsgpack": { "command": "lsmsgpack-mcp" } } } |
VS Code では、MsgPack: Copy MCP Server Configuration... を使って設定をコピーできます。ツールがインストールされている場合はツールの設定がコピーされ、それ以外の場合は拡張機能に付属するサーバーの設定がコピーされます(そのパスには拡張機能のバージョンが含まれるため、更新後に再度コピーしてください)。
ツール
| ツール | 機能 |
|---|---|
msgpack_debug_status | MsgPack 拡張機能がインストールされた IDE、デバッグセッション、およびプログラムが一時停止している場所を表示します。 |
msgpack_debug_locals | 一時停止中のスタックフレームの変数とその型を表示します。バイトを保持できる変数には印が付きます。 |
msgpack_debug_read | 一時停止中のプログラム内の式のバイトを読み取り、デコードします。byte[]、ストリーム(シーク可能なストリームは元の位置に戻ります)、Memory<byte>、List<byte>、HttpContent、および base64 または hex 文字列を読み取ります。VS Code では JavaScript の Uint8Array/Buffer と Python の bytes も読み取ります。ペイロードがスキーマを参照している場合、schemaStore はプログラムの SchemaStore からスキーマを読み取ります。saveTo を指定すると、バイトをファイルにも書き込みます。 |
msgpack_decode | data(hex、base64、またはバイト値)、file、あるいは事前にデコードした doc をデコードします。スキーマ参照には、schemas に SchemaStore.Export(または単一のスキーマ)を指定します。 |
msgpack_read_as_class | コンパイル済み .NET アセンブリ(assembly:ビルド出力の .dll、type:クラス)のクラスにデータを読み込み、一致しない内容を報告します。クラスにないプロパティ(「もしかして」候補も表示)、変換できない値、スキーマエントリのないクラス、見つからない型 ID と、オブジェクトのパスを示します(差異の報告)。読み込んだオブジェクトも表示します。アセンブリは別プロセスで読み込まれ、そのクラスのコンストラクターとセッターが実行されます。 |
msgpack_explain_offset | オフセット位置のバイトについて、それを含む項目、オブジェクトのメンバー、ヘッダーと内容のバイト、および周辺のバイトを表示します。 |
msgpack_search | テキストまたは値を含む項目を、オフセットとオブジェクトのパスとともに表示します。 |
デコードされた各ペイロードには、後続の呼び出しで使用するドキュメント ID(doc1、doc2 など)が付与されます。次のオプションで出力を絞り込んだり、表示を切り替えたりできます。
view:objects(デフォルト)、items(オフセット付きの MsgPack エンコード)、またはboth。path(例:Lines[2])、from/to(バイト範囲)、maxNodes、maxString。offsetsを指定すると、すべての値のオフセットが追加されます。issuesにはerrors、all、またはnoneを指定します。endianとcontinueOnError(デフォルトで有効)。
デバッグ
VS Code の MsgPack 拡張機能(MsgPack Explorer)と Visual Studio の拡張機能(MsgPack Debugger Extension)は、127.0.0.1 で接続を待ち受けます。ポートとランダムなトークンを記録したロックファイルを ~/.lsmsgpack/ide(%USERPROFILE%\.lsmsgpack\ide)に書き込みます。MCP サーバーは、起動元の IDE を使用します。起動元がない場合は、作業ディレクトリをワークスペースに含む IDE を使用します(複数の IDE が起動している場合は、ide がいずれかを選択します)。
- デフォルトでは、変数とメンバーのパス(
buffer、this._payload、response.Content、items[2].Data)のみが読み取られ、メソッド呼び出しは行われません。IDE の設定で任意の式を許可できます。VS Code ではlsmsgpack.mcp.allowAnyExpression(ユーザー設定のみ)、Visual Studio では[ツール]>[オプション]>[MsgPack Explorer]を設定します。 - シークできないストリームは読み取りによって消費されるため、IDE は事前にユーザーに確認します。
- IDE の設定でブリッジを無効にできます。VS Code では
lsmsgpack.mcp.enabled、Visual Studio では同じオプションページで設定します。
コマンドライン
lsmsgpack-mcp decode payload.msgpack # the objects
lsmsgpack-mcp decode payload.msgpack --view items # the items with offsets and encodings
lsmsgpack-mcp decode --data "82 a4 4e 61 6d 65 ..." # bytes as text
lsmsgpack-mcp explain payload.msgpack 0x7b # what the byte at 0x7b is
lsmsgpack-mcp search payload.msgpack Amsterdam
lsmsgpack-mcp read-as payload.msgpack --assembly bin/Debug/net8.0/MyApp.dll --type Order # what doesn't match the class
lsmsgpack-mcp debug status | debug locals | debug read <expression>
lsmsgpack-mcp --help でオプションを確認できます。引数なしで実行すると、標準入力/標準出力で MCP サーバーが起動します。
詳細:docs/Mcp.md。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。