Skip to main content
Glama
LawrenceCirillo

QuickBase MCP Server

quickbase_create_field

Add a new field to a QuickBase table, specifying the field type, label, and attributes such as required or unique, to enhance data organization and structure.

Instructions

Create a new field in a table

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
choicesNoChoices for choice fields
fieldTypeYesType of field
formulaNoFormula for formula fields
labelYesField label/name
lookupFieldIdNoField ID for lookup fields
lookupTableIdNoTable ID for lookup fields
requiredNoWhether field is required
tableIdYesTable ID to add field to
uniqueNoWhether field must be unique

Implementation Reference

  • Core handler function that executes the QuickBase API call to create a new field, handling field types, properties, choices, formulas, and lookups.
    async createField(tableId: string, field: QuickBaseField): Promise<number> {
      const fieldData: any = {
        tableId,
        label: field.label,
        fieldType: field.fieldType,
        required: field.required,
        unique: field.unique
      };
    
      // Add field-specific properties
      if (field.choices && ['text_choice', 'multiselect'].includes(field.fieldType)) {
        fieldData.properties = {
          choices: field.choices
        };
      }
    
      if (field.formula && field.fieldType === 'formula') {
        fieldData.formula = field.formula;
      }
    
      if (field.lookupReference && field.fieldType === 'lookup') {
        fieldData.properties = {
          lookupReference: field.lookupReference
        };
      }
    
      const response = await this.axios.post('/fields', fieldData);
      return response.data.id;
    }
  • Zod schema for validating input parameters to the quickbase_create_field tool.
    const CreateFieldSchema = z.object({
      tableId: z.string().describe('Table ID to add field to'),
      label: z.string().describe('Field label/name'),
      fieldType: z.enum([
        'text', 'text_choice', 'text_multiline', 'richtext', 'numeric', 
        'currency', 'percent', 'date', 'datetime', 'checkbox', 'email', 
        'phone', 'url', 'address', 'file', 'lookup', 'formula', 'reference'
      ]).describe('Type of field'),
      required: z.boolean().default(false).describe('Whether field is required'),
      unique: z.boolean().default(false).describe('Whether field must be unique'),
      choices: z.array(z.string()).optional().describe('Choices for choice fields'),
      formula: z.string().optional().describe('Formula for formula fields'),
      lookupTableId: z.string().optional().describe('Table ID for lookup fields'),
      lookupFieldId: z.number().optional().describe('Field ID for lookup fields')
    });
  • MCP tool registration including name, description, and input schema for listTools response.
    {
      name: 'quickbase_create_field',
      description: 'Create a new field in a table',
      inputSchema: {
        type: 'object',
        properties: {
          tableId: { type: 'string', description: 'Table ID to add field to' },
          label: { type: 'string', description: 'Field label/name' },
          fieldType: { 
            type: 'string',
            enum: ['text', 'text_choice', 'text_multiline', 'richtext', 'numeric', 'currency', 'percent', 'date', 'datetime', 'checkbox', 'email', 'phone', 'url', 'address', 'file', 'lookup', 'formula', 'reference'],
            description: 'Type of field'
          },
          required: { type: 'boolean', description: 'Whether field is required', default: false },
          unique: { type: 'boolean', description: 'Whether field must be unique', default: false },
          choices: { type: 'array', items: { type: 'string' }, description: 'Choices for choice fields' },
          formula: { type: 'string', description: 'Formula for formula fields' },
          lookupTableId: { type: 'string', description: 'Table ID for lookup fields' },
          lookupFieldId: { type: 'number', description: 'Field ID for lookup fields' }
        },
        required: ['tableId', 'label', 'fieldType']
      }
    },
  • MCP server dispatch handler for the tool call, parsing arguments and invoking the QuickBaseClient.createField method.
    case 'quickbase_create_field':
      if (!args || typeof args !== 'object') {
        throw new Error('Invalid arguments');
      }
      const fieldId = await this.qbClient.createField(args.tableId as string, {
        label: args.label as string,
        fieldType: args.fieldType as any,
        required: (args.required as boolean) || false,
        unique: (args.unique as boolean) || false,
        choices: args.choices as string[],
        formula: args.formula as string,
        lookupReference: args.lookupTableId ? {
          tableId: args.lookupTableId as string,
          fieldId: args.lookupFieldId as number
        } : undefined
      });
      return {
        content: [
          {
            type: 'text',
            text: `Field created with ID: ${fieldId}`,
          },
        ],
      };

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/LawrenceCirillo/QuickBase-MCP-Server'

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