Address issue with pagination limit builder class class (#83)

This commit is contained in:
Sule-Balogun Olanrewaju 2025-09-27 12:43:40 +01:00 • committed by GitHub
commit 095ea2af50
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 58 additions and 45 deletions

View file

@ -73,6 +73,7 @@ class Handler
SessionStoreInterface $sessionStore,
SessionFactoryInterface $sessionFactory,
LoggerInterface $logger = new NullLogger(),
int $paginationLimit = 50,
): self {
return new self(
messageFactory: MessageFactory::make(),
@ -82,12 +83,12 @@ class Handler
new NotificationHandler\InitializedHandler(),
new RequestHandler\InitializeHandler($registry->getCapabilities(), $implementation),
new RequestHandler\PingHandler(),
new RequestHandler\ListPromptsHandler($referenceProvider),
new RequestHandler\ListPromptsHandler($referenceProvider, $paginationLimit),
new RequestHandler\GetPromptHandler($promptGetter),
new RequestHandler\ListResourcesHandler($referenceProvider),
new RequestHandler\ListResourcesHandler($referenceProvider, $paginationLimit),
new RequestHandler\ReadResourceHandler($resourceReader),
new RequestHandler\CallToolHandler($toolCaller, $logger),
new RequestHandler\ListToolsHandler($referenceProvider),
new RequestHandler\ListToolsHandler($referenceProvider, $paginationLimit),
],
logger: $logger,
);

View file

@ -12,9 +12,9 @@
namespace Mcp\Server\RequestHandler\Reference;
/**
* @implements \ArrayAccess<int|string, mixed>
* @extends \ArrayObject<int|string, mixed>
*/
final class Page implements \Countable, \ArrayAccess
final class Page extends \ArrayObject
{
/**
* @param array<int|string, mixed> $references Items can be Tool, Prompt, ResourceTemplate, or Resource
@ -23,30 +23,11 @@ final class Page implements \Countable, \ArrayAccess
public readonly array $references,
public readonly ?string $nextCursor,
) {
parent::__construct($references, \ArrayObject::ARRAY_AS_PROPS);
}
public function count(): int
{
return \count($this->references);
}
public function offsetExists(mixed $offset): bool
{
return isset($this->references[$offset]);
}
public function offsetGet(mixed $offset): mixed
{
return $this->references[$offset] ?? null;
}
public function offsetSet(mixed $offset, mixed $value): void
{
return;
}
public function offsetUnset(mixed $offset): void
{
return;
}
}

View file

@ -76,7 +76,7 @@ final class ServerBuilder
private int $sessionTtl = 3600;
private ?int $paginationLimit = 50;
private int $paginationLimit = 50;
private ?string $instructions = null;
@ -119,6 +119,9 @@ final class ServerBuilder
* @var array|string[]
*/
private array $discoveryScanDirs = [];
/**
* @var array|string[]
*/
private array $discoveryExcludeDirs = [];
/**
@ -337,6 +340,7 @@ final class ServerBuilder
sessionStore: $sessionStore,
sessionFactory: $sessionFactory,
logger: $logger,
paginationLimit: $this->paginationLimit,
),
logger: $logger,
);