NegotiationLogger
in package
MCP のネゴシエーション内容を記録する
クライアントがどの世代(Modern / Legacy)でどのプロトコルバージョンを 要求してきたかを残す事で、クライアント側の移行を検知できるようにする。 常駐プロセスの死活監視が不要になった代わりに、これが運用時の主要な 確認手段になる。
引数やトークンの中身は記録しない。
Table of Contents
Methods
- describe() : array<string|int, mixed>
- 記録する内容を組み立てる
- log() : void
- ネゴシエーション内容をログに記録する
- readRecent() : array<string|int, mixed>
- 直近の接続状況をログから読み出す
- sanitize() : string
- ログに記録する値を正規化する
Methods
describe()
記録する内容を組み立てる
public
static describe(array<string|int, mixed> $mcpRequest, string $protocolVersionHeader) : array<string|int, mixed>
Modern(2026-07-28 以降)はリクエストごとの _meta でバージョンを伝え、 Legacy は initialize の params でバージョンを伝える。
Parameters
- $mcpRequest : array<string|int, mixed>
-
MCP リクエスト
- $protocolVersionHeader : string
-
MCP-Protocol-Version ヘッダの値
Return values
array<string|int, mixed>log()
ネゴシエーション内容をログに記録する
public
static log(array<string|int, mixed> $mcpRequest, string $protocolVersionHeader) : void
Parameters
- $mcpRequest : array<string|int, mixed>
-
MCP リクエスト
- $protocolVersionHeader : string
-
MCP-Protocol-Version ヘッダの値
readRecent()
直近の接続状況をログから読み出す
public
static readRecent([int $limit = 10 ][, string|null $logFile = null ]) : array<string|int, mixed>
管理画面で「クライアントがどの世代で接続しているか」を確認できるようにする。
Parameters
- $limit : int = 10
-
取得件数
- $logFile : string|null = null
-
ログファイルのパス(テスト用)
Return values
array<string|int, mixed> —新しい順の接続状況
sanitize()
ログに記録する値を正規化する
public
static sanitize(mixed $value[, bool $stripDelimiters = false ]) : string
クライアントが送信する値をそのまま記録すると、改行を含めて偽の記録行を作り 管理画面の「直近の接続状況」を偽装できるため、制御文字を除去し長さを制限する
Parameters
- $value : mixed
- $stripDelimiters : bool = false
-
記録形式の区切り文字(空白・スラッシュ)も置き換えるか