baserCMS クラスリファレンス

BlogTagsTool extends BaseMcpTool
in package

ブログタグツールクラス

ブログタグのCRUD操作を提供

Table of Contents

Constants

ANNOTATION_CREATE  : mixed = ['readOnlyHint' => false, 'destructiveHint' =>...
追加系ツールの注釈
ANNOTATION_DELETE  : mixed = ['readOnlyHint' => false, 'destructiveHint' =>...
削除系ツールの注釈
ANNOTATION_READ  : mixed = ['readOnlyHint' => true, 'openWorldHint' => false]
読み取り専用ツールの注釈
ANNOTATION_UPDATE  : mixed = ['readOnlyHint' => false, 'destructiveHint' =>...
更新系ツールの注釈
OUTPUT_SCHEMA  : mixed = ['type' => 'object']
ツールの戻り値のスキーマ

Methods

addBlogTag()  : array<string|int, mixed>
ブログタグを追加
deleteBlogTag()  : array<string|int, mixed>
ブログタグを削除
editBlogTag()  : array<string|int, mixed>
ブログタグを編集
getBlogTag()  : array<string|int, mixed>
ブログタグを取得
getBlogTags()  : array<string|int, mixed>
ブログタグ一覧を取得
getPermissionUrl()  : false|array<string|int, string>
権限チェック用のURLを取得する
getService()  : array<string|int, mixed>|mixed|object
Get Service
hasService()  : bool
Has Service
registerTools()  : McpServer
ブログタグ関連のツールをサーバーに登録する
clampLimit()  : int
一覧取得の件数を上限内に収める
cleanupTempFile()  : void
一時ファイルをクリーンアップ
createErrorResponse()  : array<string|int, mixed>
エラー時の戻り値を作成
createSuccessResponse()  : array<string|int, mixed>
成功時の戻り値を作成
createUploadedFileFromArray()  : UploadedFileInterface
配列データからCakePHPのUploadedFileオブジェクトを作成
detectMimeTypeFromContent()  : string
ファイル内容からMIMEタイプを検出
executeWithErrorHandling()  : array<string|int, mixed>
try-catchブロックを共通化してエラーハンドリングを実行
fetchUrl()  : array<string|int, mixed>
URL からファイルを取得する(SSRF 対策付き)
getExtensionFromMimeType()  : string
MIMEタイプから拡張子を取得
getMimeTypeFromExtension()  : string
拡張子からMIMEタイプを取得
isAdminLoginUser()  : bool
操作者がシステム管理者かどうかを判定する
isAllowedExtension()  : bool
許可された拡張子かチェック
isFileUploadable()  : bool
値がファイルアップロード可能な形式かどうかを判定
isPublicIp()  : bool
公開アドレスかどうかを判定する
processBase64File()  : array<string|int, mixed>
Base64エンコードされたファイルデータを処理
processFileUpload()  : array<string|int, mixed>|false
ファイルアップロード処理
processImageUpload()  : array<string|int, mixed>|false
画像ファイル専用のアップロード処理
processUrlFile()  : array<string|int, mixed>
URLからファイルをダウンロードして処理
resolveActorId()  : int|null
作成者・投稿者として保存するユーザーIDを解決する
resolveLoginUserId()  : int|null
操作者のユーザーIDを解決する
resolvePublicIp()  : string|null
ホスト名を解決し、公開アドレスの場合のみ IP アドレスを返す
saveDblog()  : void
操作ログを保存する

Constants

ANNOTATION_CREATE

追加系ツールの注釈

protected mixed ANNOTATION_CREATE = ['readOnlyHint' => false, 'destructiveHint' => false, 'idempotentHint' => false, 'openWorldHint' => false]

追加のみで既存データを壊さない。同じ引数で繰り返すと重複が増えるため 冪等ではない。

ANNOTATION_DELETE

削除系ツールの注釈

protected mixed ANNOTATION_DELETE = ['readOnlyHint' => false, 'destructiveHint' => true, 'idempotentHint' => true, 'openWorldHint' => false]

削除済みのものを再度削除しても結果は変わらない。

ANNOTATION_READ

読み取り専用ツールの注釈

protected mixed ANNOTATION_READ = ['readOnlyHint' => true, 'openWorldHint' => false]

クライアントが読み取りと書き込みを区別できるようにする。Claude の Research はツール呼び出しに都度承認を挟まないため、区別できる情報を 提供する意味がある。readOnlyHint が true のとき、destructiveHint と idempotentHint は意味を持たないため宣言しない。

ANNOTATION_UPDATE

更新系ツールの注釈

protected mixed ANNOTATION_UPDATE = ['readOnlyHint' => false, 'destructiveHint' => true, 'idempotentHint' => true, 'openWorldHint' => false]

既存データを上書きするため破壊的とみなす。同じ引数なら結果は同じ。

OUTPUT_SCHEMA

ツールの戻り値のスキーマ

protected mixed OUTPUT_SCHEMA = ['type' => 'object']

各ツールは配列(エンティティを配列化したものや一覧)を返す。SDK は outputSchema を宣言したツールに限り配列の戻り値を許容し、その値を structuredContent として返しつつ JSON を TextContent にも載せる (SEP-2106)。宣言が無いと戻り値は文字列か CallToolResult に限られる。

個々のツールの戻り値の構造はエンティティの構成に依存するため、 ここでは型のみを宣言する。

Methods

addBlogTag()

ブログタグを追加

public addBlogTag(string $name[, int|null $loginUserId = null ]) : array<string|int, mixed>
Parameters
$name : string
$loginUserId : int|null = null
Return values
array<string|int, mixed>

deleteBlogTag()

ブログタグを削除

public deleteBlogTag(int $id[, int|null $loginUserId = null ]) : array<string|int, mixed>
Parameters
$id : int
$loginUserId : int|null = null
Return values
array<string|int, mixed>

editBlogTag()

ブログタグを編集

public editBlogTag(int $id, string $name[, int|null $loginUserId = null ]) : array<string|int, mixed>
Parameters
$id : int
$name : string
$loginUserId : int|null = null
Return values
array<string|int, mixed>

getBlogTag()

ブログタグを取得

public getBlogTag(int $id) : array<string|int, mixed>
Parameters
$id : int
Return values
array<string|int, mixed>

getBlogTags()

ブログタグ一覧を取得

public getBlogTags([string|null $name = null ][, int|null $limit = 10 ][, int|null $page = 1 ]) : array<string|int, mixed>
Parameters
$name : string|null = null
$limit : int|null = 10
$page : int|null = 1
Return values
array<string|int, mixed>

getPermissionUrl()

権限チェック用のURLを取得する

public static getPermissionUrl(mixed $action[, mixed $args = [] ]) : false|array<string|int, string>
Parameters
$action : mixed
$args : mixed = []
Return values
false|array<string|int, string>

getService()

Get Service

public getService(mixed $service) : array<string|int, mixed>|mixed|object
Parameters
$service : mixed
Tags
checked
noTodo
unitTest
Return values
array<string|int, mixed>|mixed|object

hasService()

Has Service

public hasService(mixed $service) : bool
Parameters
$service : mixed
Tags
checked
noTodo
unitTest
Return values
bool

registerTools()

ブログタグ関連のツールをサーバーに登録する

public registerTools(McpServer $server) : McpServer
Parameters
$server : McpServer

SDK のサーバー

Return values
McpServer

clampLimit()

一覧取得の件数を上限内に収める

protected clampLimit(int|null $limit[, int $default = 20 ][, int $max = 100 ]) : int

limit に上限が無いと全件を取得してメモリを消費させることができるため、上限でクランプする

Parameters
$limit : int|null
$default : int = 20

省略時の件数

$max : int = 100

上限

Return values
int

cleanupTempFile()

一時ファイルをクリーンアップ

protected cleanupTempFile(string $tmpPath) : void
Parameters
$tmpPath : string

一時ファイルのパス

createErrorResponse()

エラー時の戻り値を作成

protected createErrorResponse(string $message[, Throwable|null $exception = null ]) : array<string|int, mixed>
Parameters
$message : string

エラーメッセージ

$exception : Throwable|null = null

例外オブジェクト(トレース情報用)

Return values
array<string|int, mixed> —

MCP仕様に準拠したエラーレスポンス

createSuccessResponse()

成功時の戻り値を作成

protected createSuccessResponse(mixed $content[, array<string|int, mixed> $meta = [] ][, mixed $message = '' ][, mixed $userId = null ]) : array<string|int, mixed>
Parameters
$content : mixed

戻り値のコンテンツ

$meta : array<string|int, mixed> = []

追加のメタデータ(paginationなど)

$message : mixed = ''
$userId : mixed = null
Return values
array<string|int, mixed> —

MCP仕様に準拠した成功レスポンス

createUploadedFileFromArray()

配列データからCakePHPのUploadedFileオブジェクトを作成

protected createUploadedFileFromArray(array<string|int, mixed> $fileData) : UploadedFileInterface
Parameters
$fileData : array<string|int, mixed>

ファイル情報の配列

Return values
UploadedFileInterface

detectMimeTypeFromContent()

ファイル内容からMIMEタイプを検出

protected detectMimeTypeFromContent(string $fileData) : string
Parameters
$fileData : string

ファイルのバイナリデータ

Return values
string —

MIMEタイプ

executeWithErrorHandling()

try-catchブロックを共通化してエラーハンドリングを実行

protected executeWithErrorHandling(callable $callback) : array<string|int, mixed>
Parameters
$callback : callable

実行する処理

Return values
array<string|int, mixed> —

MCP仕様に準拠したレスポンス

fetchUrl()

URL からファイルを取得する(SSRF 対策付き)

protected fetchUrl(string $url) : array<string|int, mixed>

MCP クライアントが指定した URL をサーバーが取得するため、宛先を検証しないと ループバック・プライベートネットワーク・クラウドのメタデータサービス等の 内部リソースへ到達させられ、取得内容が公開ディレクトリへ保存されてしまう。

  • ホスト名を解決した IP アドレスが公開アドレスであることを確認する
  • 検証した IP へ直接接続し、Host ヘッダと SNI に元のホスト名を使う (検証後に DNS の応答が変わる DNS リバインディングを防ぐ)
  • リダイレクトは自動追従せず、リダイレクト先も同じ検証を通す
  • 取得サイズに上限を設ける
Parameters
$url : string
Tags
throws
Exception
Return values
array<string|int, mixed> —

[取得したデータ, レスポンスヘッダの配列]

getExtensionFromMimeType()

MIMEタイプから拡張子を取得

protected getExtensionFromMimeType(string $mimeType) : string
Parameters
$mimeType : string

MIMEタイプ

Return values
string —

ファイル拡張子

getMimeTypeFromExtension()

拡張子からMIMEタイプを取得

protected getMimeTypeFromExtension(string $extension) : string
Parameters
$extension : string

ファイル拡張子

Return values
string —

MIMEタイプ

isAdminLoginUser()

操作者がシステム管理者かどうかを判定する

protected isAdminLoginUser(int|null $loginUserId) : bool
Parameters
$loginUserId : int|null
Return values
bool

isAllowedExtension()

許可された拡張子かチェック

protected isAllowedExtension(string $extension) : bool
Parameters
$extension : string

ファイル拡張子

Return values
bool —

許可されている場合はtrue

isFileUploadable()

値がファイルアップロード可能な形式かどうかを判定

protected isFileUploadable(mixed $value) : bool

ファイルアップロード可能な形式は data: URI と http(s) URL の2方式のみ (チャンクアップロードは廃止したため、拡張子付きの文字列は対象外)

Parameters
$value : mixed

判定対象の値

Return values
bool —

ファイルアップロード可能な形式の場合true

isPublicIp()

公開アドレスかどうかを判定する

protected isPublicIp(string $ip) : bool

プライベート・ループバック・リンクローカル(クラウドのメタデータサービス 169.254.169.254 を含む)・ 予約済み・マルチキャスト・共有アドレス空間(100.64.0.0/10)を拒否する。

Parameters
$ip : string
Return values
bool

processBase64File()

Base64エンコードされたファイルデータを処理

protected processBase64File(string $base64Data) : array<string|int, mixed>
Parameters
$base64Data : string

base64エンコードされたファイルデータ

Tags
throws
Exception
Return values
array<string|int, mixed> —

アップロード情報の配列

processFileUpload()

ファイルアップロード処理

protected processFileUpload(string $fileData[, string $fieldName = 'file' ]) : array<string|int, mixed>|false
Parameters
$fileData : string

画像の URL、または data: URI 形式の base64 データ

$fieldName : string = 'file'

フィールド名(ログ用)

Return values
array<string|int, mixed>|false —

アップロード情報の配列、失敗時はfalse

processImageUpload()

画像ファイル専用のアップロード処理

protected processImageUpload(string $imageData) : array<string|int, mixed>|false
Parameters
$imageData : string

画像の URL、または data: URI 形式の base64 データ

Return values
array<string|int, mixed>|false —

アップロード情報の配列、失敗時はfalse

processUrlFile()

URLからファイルをダウンロードして処理

protected processUrlFile(string $url) : array<string|int, mixed>
Parameters
$url : string

ファイルのURL

Tags
throws
Exception
Return values
array<string|int, mixed> —

アップロード情報の配列

resolveActorId()

作成者・投稿者として保存するユーザーIDを解決する

protected resolveActorId(int|null $requestedUserId, int|null $loginUserId) : int|null

操作者以外を作成者に指定できるのはシステム管理者のみ。 それ以外のユーザーが別のユーザーを指定した場合は例外とする。

Parameters
$requestedUserId : int|null

引数で指定されたユーザーID

$loginUserId : int|null

操作者のユーザーID

Tags
throws
Exception
Return values
int|null

resolveLoginUserId()

操作者のユーザーIDを解決する

protected resolveLoginUserId([int|null $loginUserId = null ]) : int|null

MCP のツールは JSON-RPC の引数しか受け取らないため、認証済みの操作者は McpContext から取得する。コンテキストが設定されている場合は常にそれを使い、 引数の値は無視する(SDK は inputSchema に無いキーも名前一致でコールバック引数へ 束縛するため、引数を優先するとクライアントが操作者を詐称できてしまう)。 引数はコンテキストを持たない経路(テスト等)のためにのみ使う。

Parameters
$loginUserId : int|null = null

引数で渡されたユーザーID

Return values
int|null

resolvePublicIp()

ホスト名を解決し、公開アドレスの場合のみ IP アドレスを返す

protected resolvePublicIp(string $host) : string|null

解決結果に 1 つでも非公開アドレスが含まれる場合は null を返す。

Parameters
$host : string
Return values
string|null

saveDblog()

操作ログを保存する

protected saveDblog(mixed $userId, mixed $message) : void
Parameters
$userId : mixed
$message : mixed
On this page

Search results