UNPKG

andrew-dataverse-mcp

Version:

A Model Context Protocol server for Microsoft Dataverse with comprehensive CRUD operations

62 lines (61 loc) 2.09 kB
import { validateTableName, validateRequired } from '../utils/validation.js'; import { createLogger } from '../utils/logger.js'; const logger = createLogger('CreateRecordTool'); export const createRecordTool = { name: 'dataverse_create_record', description: 'Create a new record in a Dataverse table', inputSchema: { type: 'object', properties: { table: { type: 'string', description: 'The name of the Dataverse table (e.g., "contacts", "accounts")', }, data: { type: 'object', description: 'The data for the new record as key-value pairs', additionalProperties: true, }, }, required: ['table', 'data'], }, }; export async function handleCreateRecord(args, dataverseService) { try { logger.info('Processing create record request'); // Validate inputs const table = validateTableName(args.table, 'table'); const data = validateRequired(args.data, 'data'); if (typeof data !== 'object' || data === null) { throw new Error('data must be a valid object'); } logger.debug(`Creating record in table: ${table}`, data); // Create the record const recordId = await dataverseService.createRecord({ table, data, }); const successMessage = `Successfully created record in table '${table}' with ID: ${recordId}`; logger.info(successMessage); return { content: [ { type: 'text', text: successMessage, }, ], }; } catch (error) { const errorMessage = `Failed to create record: ${error instanceof Error ? error.message : 'Unknown error'}`; logger.error(errorMessage, error); return { content: [ { type: 'text', text: errorMessage, }, ], }; } }