NAME

MCP::Server::Subscription - Subscription container

SYNOPSIS

use MCP::Server::Subscription;

my $subscription = MCP::Server::Subscription->new(id => 1, notifications => {toolsListChanged => 1});
my $bool         = $subscription->wants('notifications/tools/list_changed');

DESCRIPTION

MCP::Server::Subscription is a container for a subscriptions/listen notification stream.

ATTRIBUTES

MCP::Server::Subscription implements the following attributes.

id

my $id        = $subscription->id;
$subscription = $subscription->id(1);

The JSON-RPC id of the subscriptions/listen request that opened this subscription, sent to the client as _meta.io.modelcontextprotocol/subscriptionId with every message on the stream.

notifications

my $filter    = $subscription->notifications;
$subscription = $subscription->notifications({toolsListChanged => 1});

The notification filter the client requested, as a hash reference. Notification types that were not requested are never delivered.

stream

my $stream    = $subscription->stream;
$subscription = $subscription->stream(Mojolicious::Controller->new);

The Mojolicious::Controller serving the SSE stream for this subscription, when the HTTP transport is in use.

METHODS

MCP::Server::Subscription inherits all methods from Mojo::Base and implements the following new ones.

acknowledgement

my $notification = $subscription->acknowledgement;

The notifications/subscriptions/acknowledged notification a server has to send as the very first message on a subscription stream, listing the notification types it will actually deliver.

honoured

my $filter = $subscription->honoured;

The subset of "notifications" the server actually supports.

notification

my $notification = $subscription->notification($method);
my $notification = $subscription->notification($method, {foo => 'bar'});

Build a JSON-RPC notification for this subscription, tagged with "id" in _meta.io.modelcontextprotocol/subscriptionId.

wants

my $bool = $subscription->wants('notifications/tools/list_changed');

Returns true if the given notification method was requested in "notifications".

SEE ALSO

MCP, https://mojolicious.org, https://modelcontextprotocol.io.