MCP PHP SDK

MessageFactory

FinalYes

Factory for creating JSON-RPC message objects from raw input.

Handles all types of JSON-RPC messages:

  • Requests (have method + id)
  • Notifications (have method, no id)
  • Responses (have result + id)
  • Errors (have error + id)
Tags
author

Christopher Hertel mail@christopher-hertel.de

author

Kyrian Obikwelu koshnawaza@gmail.com

Table of Contents

Constants

REGISTERED_MESSAGES  = [\Mcp\Schema\Notification\CancelledNotification::class, \Mcp\Schema\Notification\InitializedNotification::class, \Mcp\Schema\Notification\LoggingMessageNotification::class, \Mcp\Schema\Notification\ProgressNotification::class, \Mcp\Schema\Notification\PromptListChangedNotification::class, \Mcp\Schema\Notification\ResourceListChangedNotification::class, \Mcp\Schema\Notification\ResourceUpdatedNotification::class, \Mcp\Schema\Notification\RootsListChangedNotification::class, \Mcp\Schema\Notification\ToolListChangedNotification::class, \Mcp\Schema\Request\CallToolRequest::class, \Mcp\Schema\Request\CompletionCompleteRequest::class, \Mcp\Schema\Request\CreateSamplingMessageRequest::class, \Mcp\Schema\Request\GetPromptRequest::class, \Mcp\Schema\Request\InitializeRequest::class, \Mcp\Schema\Request\ListPromptsRequest::class, \Mcp\Schema\Request\ListResourcesRequest::class, \Mcp\Schema\Request\ListResourceTemplatesRequest::class, \Mcp\Schema\Request\ListRootsRequest::class, \Mcp\Schema\Request\ListToolsRequest::class, \Mcp\Schema\Request\PingRequest::class, \Mcp\Schema\Request\ReadResourceRequest::class, \Mcp\Schema\Request\ResourceSubscribeRequest::class, \Mcp\Schema\Request\ResourceUnsubscribeRequest::class, \Mcp\Schema\Request\SetLogLevelRequest::class]
Registry of all known message classes that have methods.

Properties

$registeredMessages  : array<string|int, mixed>

Methods

__construct()  : mixed
create()  : array<string|int, MessageInterface|InvalidInputMessageException>
Creates message objects from JSON input.
make()  : self
Creates a new Factory instance with all the protocol's default messages.
createMessage()  : MessageInterface
Creates a single message object from parsed JSON data.
findMessageClassByMethod()  : Request>|Notification>
Finds the registered message class for a given method name.

Constants

REGISTERED_MESSAGES

Registry of all known message classes that have methods.

private array<int, Request>|Notification>> REGISTERED_MESSAGES = [\Mcp\Schema\Notification\CancelledNotification::class, \Mcp\Schema\Notification\InitializedNotification::class, \Mcp\Schema\Notification\LoggingMessageNotification::class, \Mcp\Schema\Notification\ProgressNotification::class, \Mcp\Schema\Notification\PromptListChangedNotification::class, \Mcp\Schema\Notification\ResourceListChangedNotification::class, \Mcp\Schema\Notification\ResourceUpdatedNotification::class, \Mcp\Schema\Notification\RootsListChangedNotification::class, \Mcp\Schema\Notification\ToolListChangedNotification::class, \Mcp\Schema\Request\CallToolRequest::class, \Mcp\Schema\Request\CompletionCompleteRequest::class, \Mcp\Schema\Request\CreateSamplingMessageRequest::class, \Mcp\Schema\Request\GetPromptRequest::class, \Mcp\Schema\Request\InitializeRequest::class, \Mcp\Schema\Request\ListPromptsRequest::class, \Mcp\Schema\Request\ListResourcesRequest::class, \Mcp\Schema\Request\ListResourceTemplatesRequest::class, \Mcp\Schema\Request\ListRootsRequest::class, \Mcp\Schema\Request\ListToolsRequest::class, \Mcp\Schema\Request\PingRequest::class, \Mcp\Schema\Request\ReadResourceRequest::class, \Mcp\Schema\Request\ResourceSubscribeRequest::class, \Mcp\Schema\Request\ResourceUnsubscribeRequest::class, \Mcp\Schema\Request\SetLogLevelRequest::class]

Properties

$registeredMessages read-only

private array<string|int, mixed> $registeredMessages

Methods

__construct()

public __construct(array<int, Request>|Notification>$registeredMessages) : mixed
Parameters
$registeredMessages : array<int, Request>|Notification>>

create()

Creates message objects from JSON input.

public create(string $input) : array<string|int, MessageInterface|InvalidInputMessageException>

Supports both single messages and batch requests. Returns an array containing MessageInterface objects or InvalidInputMessageException instances for invalid messages.

Parameters
$input : string
Tags
throws
JsonException

When the input string is not valid JSON

Return values
array<string|int, MessageInterface|InvalidInputMessageException>

make()

Creates a new Factory instance with all the protocol's default messages.

public static make() : self
Return values
self

findMessageClassByMethod()

Finds the registered message class for a given method name.

private findMessageClassByMethod(string $method) : Request>|Notification>
Parameters
$method : string
Tags
throws
InvalidInputMessageException
Return values
Request>|Notification>

        
On this page

Search results