Skip to main content
Glama
fadlee

PocketBase MCP Server

by fadlee

import_data

Import records into PocketBase collections using create, update, or upsert modes to populate database tables with structured data.

Instructions

Import data into a collection

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
collectionYesCollection name
dataYesArray of records to import
modeNoImport mode (default: create)

Implementation Reference

  • The main handler function createImportDataHandler that returns the async ToolHandler for executing the import_data tool logic. It handles create, update, upsert modes for importing data into a PocketBase collection.
    export function createImportDataHandler(pb: PocketBase): ToolHandler {
      return async (args: ImportDataArgs) => {
        try {
          const { collection, data, mode = "create" } = args;
          const results = {
            created: 0,
            updated: 0,
            errors: [] as string[],
          };
    
          for (const item of data) {
            try {
              switch (mode) {
                case "create":
                  await pb.collection(collection).create(item);
                  results.created++;
                  break;
    
                case "update":
                  if (!item.id) {
                    results.errors.push("Update mode requires 'id' field in each record");
                    continue;
                  }
                  await pb.collection(collection).update(item.id, item);
                  results.updated++;
                  break;
    
                case "upsert":
                  if (item.id) {
                    try {
                      await pb.collection(collection).update(item.id, item);
                      results.updated++;
                    } catch {
                      await pb.collection(collection).create(item);
                      results.created++;
                    }
                  } else {
                    await pb.collection(collection).create(item);
                    results.created++;
                  }
                  break;
    
                default:
                  throw new McpError(
                    ErrorCode.InvalidParams,
                    `Unsupported import mode: ${mode}`
                  );
              }
            } catch (error: any) {
              results.errors.push(`Failed to import record: ${error.message}`);
            }
          }
    
          return createJsonResponse({
            success: true,
            results,
            message: `Import completed: ${results.created} created, ${results.updated} updated, ${results.errors.length} errors`,
          });
        } catch (error: unknown) {
          throw handlePocketBaseError("import data", error);
        }
      };
    }
  • The input schema for the import_data tool, defining the expected parameters: collection name, data array, and optional mode.
    export const importDataSchema = {
      type: "object",
      properties: {
        collection: {
          type: "string",
          description: "Collection name",
        },
        data: {
          type: "array",
          description: "Array of records to import",
          items: {
            type: "object",
          },
        },
        mode: {
          type: "string",
          enum: ["create", "update", "upsert"],
          description: "Import mode (default: create)",
        },
      },
      required: ["collection", "data"],
    };
  • src/server.ts:191-196 (registration)
    The registration of the import_data tool in the MCP server tools array, linking the name, description, schema, and handler.
    {
      name: "import_data",
      description: "Import data into a collection",
      inputSchema: importDataSchema,
      handler: createImportDataHandler(pb),
    },

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/fadlee/pocketbase-mcp'

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