Skip to main content
Glama

Quickbase MCP Server

MIT License
2
4
  • Apple
  • Linux
get_table_fields.ts4.13 kB
import { BaseTool } from '../base'; import { QuickbaseClient } from '../../client/quickbase'; import { createLogger } from '../../utils/logger'; const logger = createLogger('GetTableFieldsTool'); /** * Field information returned by get_table_fields */ export interface FieldInfo { /** * The ID of the field */ id: string; /** * The label (display name) of the field */ label: string; /** * The type of the field */ fieldType: string; /** * The description of the field */ description?: string; /** * Whether the field is required */ required?: boolean; /** * Whether the field is unique */ unique?: boolean; /** * Additional properties of the field */ properties?: Record<string, any>; /** * Additional details about the field */ [key: string]: any; } /** * Parameters for get_table_fields tool */ export interface GetTableFieldsParams { /** * The ID of the table */ table_id: string; /** * Whether to include system fields */ include_system?: boolean; /** * Filter fields by type */ field_type?: string; } /** * Response from getting table fields */ export interface GetTableFieldsResult { /** * Array of field information */ fields: FieldInfo[]; /** * The table ID that was queried */ tableId: string; } /** * Tool for retrieving field information for a specific Quickbase table */ export class GetTableFieldsTool extends BaseTool<GetTableFieldsParams, GetTableFieldsResult> { public name = 'get_table_fields'; public description = 'Retrieves field information for a specific Quickbase table'; /** * Parameter schema for get_table_fields */ public paramSchema = { type: 'object', properties: { table_id: { type: 'string', description: 'The ID of the Quickbase table' }, include_system: { type: 'boolean', description: 'Whether to include system fields' }, field_type: { type: 'string', description: 'Filter fields by type' } }, required: ['table_id'] }; /** * Constructor * @param client Quickbase client */ constructor(client: QuickbaseClient) { super(client); } /** * Run the get_table_fields tool * @param params Tool parameters * @returns Table field information */ protected async run(params: GetTableFieldsParams): Promise<GetTableFieldsResult> { const { table_id, include_system, field_type } = params; logger.info('Getting fields for Quickbase table', { tableId: table_id, includeSystem: include_system }); // Prepare query parameters const queryParams: Record<string, string> = {}; if (include_system !== undefined) { queryParams.includeSystem = include_system.toString(); } // Get fields in the table const response = await this.client.request({ method: 'GET', path: `/fields?tableId=${table_id}`, params: queryParams }); if (!response.success || !response.data) { logger.error('Failed to get table fields', { error: response.error, tableId: table_id }); throw new Error(response.error?.message || 'Failed to get table fields'); } // Cast data to array of fields let fields = (response.data as Record<string, any>[]).map(field => ({ id: field.id, label: field.label, fieldType: field.fieldType, description: field.description, required: field.required, unique: field.unique, properties: field.properties, ...field })); // Filter fields by type if requested if (field_type && field_type.trim() !== '') { fields = fields.filter(field => field.fieldType.toLowerCase() === field_type.toLowerCase() ); } logger.info(`Found ${fields.length} fields in table`, { tableId: table_id, fieldTypes: [...new Set(fields.map(f => f.fieldType))].join(', ') }); return { fields, tableId: table_id }; } }

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/danielbushman/MCP-Quickbase'

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