Skip to main content
Glama
DynamicEndpoints

Advanced PocketBase MCP Server

create_stripe_customer

Create a new customer in Stripe to manage billing and subscriptions within the PocketBase database system.

Instructions

Create a new customer in Stripe

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Registers the create_stripe_customer MCP tool with input schema, description, and handler function that instantiates StripeService and calls createCustomer
    export function registerTools(server: any, pb: any): void { server.tool('create_stripe_customer', 'Create a Stripe customer', { type: 'object', properties: { email: { type: 'string' }, name: { type: 'string' } } }, async (args: any) => { const stripeService = new StripeService(pb); const customer = await stripeService.createCustomer({ email: args.email, name: args.name }); return { success: true, customer }; }); }
  • Core implementation of customer creation: checks for existing customer by email in PocketBase, creates new Stripe customer via Stripe API, saves to PocketBase stripe_customers collection
    async createCustomer(data: { email: string; name?: string; userId?: string; metadata?: Record<string, any>; }): Promise<StripeCustomer> { try { // Check if customer already exists const existingCustomer = await this.pb.collection('stripe_customers') .getFirstListItem(`email="${data.email}"`) .catch(() => null); if (existingCustomer) { return existingCustomer as StripeCustomer; } // Create customer in Stripe const stripeCustomer = await this.stripe.customers.create({ email: data.email, name: data.name, metadata: { userId: data.userId || '', ...data.metadata, }, }); // Save to PocketBase const customerRecord = await this.pb.collection('stripe_customers').create({ email: data.email, name: data.name, stripeCustomerId: stripeCustomer.id, userId: data.userId, metadata: data.metadata || {}, }); return customerRecord as unknown as StripeCustomer; } catch (error: any) { throw new Error(`Failed to create customer: ${error.message}`); } }
  • Input schema for create_stripe_customer tool: requires email and optional name
    server.tool('create_stripe_customer', 'Create a Stripe customer', { type: 'object', properties: { email: { type: 'string' }, name: { type: 'string' } } }, async (args: any) => { const stripeService = new StripeService(pb); const customer = await stripeService.createCustomer({ email: args.email, name: args.name }); return { success: true, customer }; });
  • Alternative registration of create_stripe_customer tool in agent-simple.ts, with more detailed schema and error handling, also delegating to StripeService.createCustomer
    'create_stripe_customer', 'Create a new customer in Stripe', { type: 'object', properties: { email: { type: 'string', format: 'email', description: 'Customer email' }, name: { type: 'string', description: 'Customer name' } }, required: ['email'] }, async ({ email, name }) => { // Lazy load Stripe service await this.ensureStripeService(); if (!this.stripeService) { return { content: [{ type: 'text', text: JSON.stringify({ error: 'Stripe service not available. Please set STRIPE_SECRET_KEY environment variable.' }) }] }; } try { const customer = await this.stripeService.createCustomer({ email, name }); return { content: [{ type: 'text', text: JSON.stringify(customer, null, 2) }] }; } catch (error: any) { return { content: [{ type: 'text', text: JSON.stringify({ error: `Failed to create Stripe customer: ${error.message}` }) }] }; } } );

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