Address issue with pagination limit builder class class (#83)
This commit is contained in:
parent
3ec4cf612a
commit
095ea2af50
3 changed files with 58 additions and 45 deletions
|
|
@ -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,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in a new issue