UNPKG

andrew-dataverse-mcp

Version:

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

68 lines (67 loc) 2.28 kB
import { validateTableName, validateGuid, validateRequired } from '../utils/validation.js'; import { createLogger } from '../utils/logger.js'; const logger = createLogger('UpdateRecordTool'); export const updateRecordTool = { name: 'dataverse_update_record', description: 'Update an existing record in a Dataverse table', inputSchema: { type: 'object', properties: { table: { type: 'string', description: 'The name of the Dataverse table (e.g., "contacts", "accounts")', }, id: { type: 'string', description: 'The GUID of the record to update', }, data: { type: 'object', description: 'The data to update as key-value pairs', additionalProperties: true, }, }, required: ['table', 'id', 'data'], }, }; export async function handleUpdateRecord(args, dataverseService) { try { logger.info('Processing update record request'); // Validate inputs const table = validateTableName(args.table, 'table'); const id = validateGuid(args.id, 'id'); const data = validateRequired(args.data, 'data'); if (typeof data !== 'object' || data === null) { throw new Error('data must be a valid object'); } logger.debug(`Updating record ${id} in table: ${table}`, data); // Update the record await dataverseService.updateRecord({ table, id, data, }); const successMessage = `Successfully updated record ${id} in table '${table}'`; logger.info(successMessage); return { content: [ { type: 'text', text: successMessage, }, ], }; } catch (error) { const errorMessage = `Failed to update record: ${error instanceof Error ? error.message : 'Unknown error'}`; logger.error(errorMessage, error); return { content: [ { type: 'text', text: errorMessage, }, ], }; } }