andrew-dataverse-mcp
Version:
A Model Context Protocol server for Microsoft Dataverse with comprehensive CRUD operations
68 lines (67 loc) • 2.28 kB
JavaScript
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,
},
],
};
}
}