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
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
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
selfcreateMessage()
Creates a single message object from parsed JSON data.
private
createMessage(array<string, mixed> $data) : MessageInterface
Parameters
- $data : array<string, mixed>
Tags
Return values
MessageInterfacefindMessageClassByMethod()
Finds the registered message class for a given method name.
private
findMessageClassByMethod(string $method) : Request>|Notification>
Parameters
- $method : string