Skip to main content
Glama
DynamicEndpoints

Advanced PocketBase MCP Server

list_records

Retrieve and display records from PocketBase collections to access database information for analysis or management tasks.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • src/server.ts:496-522 (registration)
    Primary registration of the 'list_records' MCP tool, including inline input schema (Zod validation) and handler function that queries PocketBase collection using getList method with optional filtering, sorting, and pagination.
    server.tool( 'list_records', { collection: z.string().describe('Collection name'), filter: z.string().optional().describe('Filter query'), sort: z.string().optional().describe('Sort field and direction'), page: z.number().optional().describe('Page number'), perPage: z.number().optional().describe('Items per page') }, async ({ collection, filter, sort, page = 1, perPage = 50 }) => { try { const options: any = {}; if (filter) options.filter = filter; if (sort) options.sort = sort; const result = await this.pb.collection(collection).getList(page, perPage, options); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Failed to list records: ${error.message}` }], isError: true }; } } );
  • Core handler logic for executing the list_records tool: constructs query options and calls PocketBase's getList API.
    async ({ collection, filter, sort, page = 1, perPage = 50 }) => { try { const options: any = {}; if (filter) options.filter = filter; if (sort) options.sort = sort; const result = await this.pb.collection(collection).getList(page, perPage, options); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Failed to list records: ${error.message}` }], isError: true }; } }
  • Zod-based input schema defining parameters for the list_records tool: required collection name and optional filter, sort, page, perPage.
    { collection: z.string().describe('Collection name'), filter: z.string().optional().describe('Filter query'), sort: z.string().optional().describe('Sort field and direction'), page: z.number().optional().describe('Page number'), perPage: z.number().optional().describe('Items per page')
  • Worker-compatible handler method listRecords for list_records tool, supporting pagination, filtering, and sorting via PocketBase getList.
    private async listRecords(collection: string, options: any = {}) { if (!this.pb) { throw new Error('PocketBase not configured'); } try { const records = await this.pb.collection(collection).getList( options.page || 1, options.perPage || 30, { filter: options.filter, sort: options.sort } ); return { content: [ { type: "text", text: JSON.stringify(records, null, 2) } ] }; } catch (error: any) { throw new Error(`Failed to list records: ${error.message}`); } }
  • Dispatch/registration case in unified tool handler for list_records, validates input and delegates to listRecords method.
    case "list_records": { if (!args || typeof args !== "object" || typeof (args as any).collection !== "string") { throw new Error("'collection' is required and must be a string for list_records"); } return await this.listRecords((args as any).collection, args); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/DynamicEndpoints/advanced-pocketbase-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server