Skip to content

McpCatalog

Process-global registry of MCP tools/resources/prompts, mirroring the static, worker-lifetime pattern of MiddlewareCatalog and PluginManager: entries are added once at boot (via PluginRegistrar or attribute discovery, once that lands) and read once by McpServer::build() when the server is assembled.

Each entry is the argument set for the matching Mcp\Server\Builder::add*() call, stored verbatim so McpServer can forward it without this class knowing anything about the SDK’s types.

final class McpCatalog

SourceMcpCatalog.php
MethodDescription
[`addPrompt(Closurearray{0: (object
[`addResource(Closurearray{0: (object
[`addTool(Closurearray{0: (object
prompts(): list<array{handler: Handler, name: ?string, title: ?string, description: ?string}>
reset(): voidTest-only reset (mirrors MiddlewareCatalog::reset()).
resources(): list<array{handler: Handler, uri: string, name: ?string, title: ?string, description: ?string, mimeType: ?string}>
tools(): list<array{handler: Handler, name: ?string, title: ?string, description: ?string, inputSchema: ?array<string, mixed>, outputSchema: ?array<string, mixed>}>

public static function addPrompt(Closure|array{0: (object | string), 1: string}|string $handler, ?string $name = null, ?string $title = null, ?string $description = null): void

ParameterTypeDescription
$handlerClosure`“array{0: (object
$name?``string
$title?``string
$description?``string

public static function addResource(Closure|array{0: (object | string), 1: string}|string $handler, string $uri, ?string $name = null, ?string $title = null, ?string $description = null, ?string $mimeType = null): void

ParameterTypeDescription
$handlerClosure`“array{0: (object
$uristring
$name?``string
$title?``string
$description?``string
$mimeType?``string

public static function addTool(Closure|array{0: (object | string), 1: string}|string $handler, ?string $name = null, ?string $title = null, ?string $description = null, array<string, mixed>|null $inputSchema = null, array<string, mixed>|null $outputSchema = null): void

ParameterTypeDescription
$handlerClosure`“array{0: (object
$name?``string
$title?``string
$description?``string
$inputSchema`array<string, mixed>“null`
$outputSchema`array<string, mixed>“null`

public static function prompts(): list<array{handler: Handler, name: ?string, title: ?string, description: ?string}>

Returns list``<``array{handler: Handler, name: ?string, title: ?string, description: ?string}``>

public static function reset(): void

Test-only reset (mirrors MiddlewareCatalog::reset()).

public static function resources(): list<array{handler: Handler, uri: string, name: ?string, title: ?string, description: ?string, mimeType: ?string}>

Returns list``<``array{handler: Handler, uri: string, name: ?string, title: ?string, description: ?string, mimeType: ?string}``>

public static function tools(): list<array{handler: Handler, name: ?string, title: ?string, description: ?string, inputSchema: ?array<string, mixed>, outputSchema: ?array<string, mixed>}>

Returns list``<``array{handler: Handler, name: ?string, title: ?string, description: ?string, inputSchema: ?array<string, mixed>, outputSchema: ?array<string, mixed>}``>