@@ -26,6 +26,7 @@ import type { ResourceOptions } from './resource'
2626import type { ToolOptions } from './tool'
2727
2828import { MethodNotFound } from './error'
29+ import { withPagination } from './pagination'
2930import { listPrompt } from './prompt'
3031import { listResource } from './resource'
3132import { listTool } from './tool'
@@ -166,36 +167,36 @@ export class Server {
166167 }
167168 }
168169
169- // TODO: support params (cursor)
170170 /** @see {@link https://modelcontextprotocol.io/specification/2025-03-26/server/prompts#listing-prompts } */
171- public async listPrompts ( _params ?: ListPromptsRequest [ 'params' ] ) : Promise < ListPromptsResult > {
172- return {
173- prompts : await Promise . all ( this . prompts . map ( async promptOptions => listPrompt ( promptOptions ) ) ) ,
174- }
171+ public async listPrompts ( params ?: ListPromptsRequest [ 'params' ] ) : Promise < ListPromptsResult > {
172+ const allPrompts = await Promise . all ( this . prompts . map ( async promptOptions => listPrompt ( promptOptions ) ) )
173+ const { nextCursor, result : prompts } = withPagination ( allPrompts , params )
174+
175+ return { nextCursor, prompts }
175176 }
176177
177- // TODO: support params (cursor)
178178 /** @see {@link https://modelcontextprotocol.io/specification/2025-03-26/server/resources#listing-resources } */
179- public async listResources ( _params : ListResourcesRequest [ 'params' ] ) : Promise < ListResourcesResult > {
180- return {
181- resources : this . resources . map ( resource => listResource ( resource ) ) ,
182- }
179+ public async listResources ( params : ListResourcesRequest [ 'params' ] ) : Promise < ListResourcesResult > {
180+ const allResources = this . resources . map ( resource => listResource ( resource ) )
181+ const { nextCursor, result : resources } = withPagination ( allResources , params )
182+
183+ return { nextCursor, resources }
183184 }
184185
185- // TODO: support params (cursor)
186186 /** @see {@link https://modelcontextprotocol.io/specification/2025-03-26/server/resources#resource-templates } */
187- public async listResourceTemplates ( _params ?: ListResourceTemplatesRequest [ 'params' ] ) : Promise < ListResourceTemplatesResult > {
188- return {
189- resourceTemplates : this . resourceTemplates ,
190- }
187+ public async listResourceTemplates ( params ?: ListResourceTemplatesRequest [ 'params' ] ) : Promise < ListResourceTemplatesResult > {
188+ const allResourceTemplates = this . resourceTemplates
189+ const { nextCursor, result : resourceTemplates } = withPagination ( allResourceTemplates , params )
190+
191+ return { nextCursor, resourceTemplates }
191192 }
192193
193- // TODO: support params (cursor)
194194 /** @see {@link https://spec.modelcontextprotocol.io/specification/2025-03-26/server/tools/#listing-tools } */
195- public async listTools ( _params ?: ListToolsRequest [ 'params' ] ) : Promise < ListToolsResult > {
196- return {
197- tools : await Promise . all ( this . tools . map ( async toolOptions => listTool ( toolOptions ) ) ) ,
198- }
195+ public async listTools ( params ?: ListToolsRequest [ 'params' ] ) : Promise < ListToolsResult > {
196+ const allTools = await Promise . all ( this . tools . map ( async toolOptions => listTool ( toolOptions ) ) )
197+ const { nextCursor, result : tools } = withPagination ( allTools , params )
198+
199+ return { nextCursor, tools }
199200 }
200201
201202 public async ping ( ) {
0 commit comments