Skip to main content
Glama
DynamicEndpoints

Advanced PocketBase MCP Server

create_record

Add new entries to PocketBase collections by specifying field values and collection names to store structured data in the database.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Worker-compatible implementation of the create_record tool handler. Calls PocketBase.collection(collection).create(data) to create the record and returns JSON response.
    /**
     * Create a new record
     */
    private async createRecord(collection: string, data: any) {
      if (!this.pb) {
        throw new Error('PocketBase not configured');
      }
    
      try {
        const record = await this.pb.collection(collection).create(data);
        return {
          content: [
            {
              type: "text",
              text: JSON.stringify(record, null, 2)
            }
          ]
        };
      } catch (error: any) {
        throw new Error(`Failed to create record: ${error.message}`);
      }
    }
  • Registration of create_record tool in the switch statement within CallToolRequestHandler.
    case "create_record": {
      if (!args || typeof args !== "object" || typeof (args as any).collection !== "string" || typeof (args as any).data !== "object") {
        throw new Error("'collection' (string) and 'data' (object) are required for create_record");
      }
      return await this.createRecord((args as any).collection, (args as any).data);
    }
  • Input schema definition for create_record tool in the list tools response.
    name: "create_record",
    description: "Create a new record in a collection",
    inputSchema: {
      type: "object",
      properties: {
        collection: {
          type: "string",
          description: "Collection name"
        },
        data: {
          type: "object",
          description: "Record data"
        }
      },
      required: ["collection", "data"]
    }
  • Inline handler for create_record in Cloudflare agent. Directly calls PocketBase create and updates state.
    async ({ collection, data }) => {
      if (!this.pb) {
        throw new Error('PocketBase not initialized');
      }
    
      const record = await this.pb.collection(collection).create(data);
      
      // Update activity time
      this.setState({
        ...this.state,
        lastActivityTime: Date.now()
      });
    
      return {
        content: [{
          type: 'text',
          text: JSON.stringify(record, null, 2)
        }]
      };
    }
  • Full registration of create_record tool including schema and inline handler in Cloudflare agent.
    // Create record
    this.server.tool(
      "create_record",
      "Create a new record in a collection",
      {
        collection: z.string().describe('Collection name'),
        data: z.record(z.any()).describe('Record data')
      },
      async ({ collection, data }) => {
        if (!this.pb) {
          throw new Error('PocketBase not initialized');
        }
    
        const record = await this.pb.collection(collection).create(data);
        
        // Update activity time
        this.setState({
          ...this.state,
          lastActivityTime: Date.now()
        });
    
        return {
          content: [{
            type: 'text',
            text: JSON.stringify(record, null, 2)
          }]
        };
      }
    );

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