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