Skip to main content
Glama

SFCC Development MCP Server

by taurgis
job-log-tool-config.ts5.06 kB
import { GenericToolSpec, ToolExecutionContext } from '../core/handlers/base-handler.js'; import { ToolArguments } from '../core/handlers/base-handler.js'; import { LogToolValidators } from '../utils/log-tool-utils.js'; import { ValidationHelpers, CommonValidations } from '../core/handlers/validation-helpers.js'; import { JobLogToolName, getLimit } from '../utils/log-tool-constants.js'; import { JobLogValidators, JobLogFormatters } from '../utils/job-log-utils.js'; import { SFCCLogClient } from '../clients/log-client.js'; /** * Configuration for job log tools * Maps each tool to its validation, execution, and messaging logic */ export const JOB_LOG_TOOL_CONFIG: Record<JobLogToolName, GenericToolSpec<ToolArguments, any>> = { get_latest_job_log_files: { defaults: (args: ToolArguments) => ({ limit: getLimit(args.limit as number, 'jobFiles'), }), validate: (args: ToolArguments, toolName: string) => LogToolValidators.validateLimit(args.limit as number, toolName), exec: async (args: ToolArguments, context: ToolExecutionContext) => { const client = context.logClient as SFCCLogClient; return client.getLatestJobLogFiles(args.limit as number); }, logMessage: (args: ToolArguments) => JobLogFormatters.formatJobLogMessage('Fetching latest job log files', { limit: args.limit as number, }), }, search_job_logs_by_name: { defaults: (args: ToolArguments) => ({ limit: getLimit(args.limit as number, 'jobFiles'), }), validate: (args: ToolArguments, toolName: string) => { ValidationHelpers.validateArguments(args, CommonValidations.requiredString('jobName'), toolName); LogToolValidators.validateLimit(args.limit as number, toolName); }, exec: async (args: ToolArguments, context: ToolExecutionContext) => { const client = context.logClient as SFCCLogClient; return client.searchJobLogsByName(args.jobName as string, args.limit as number); }, logMessage: (args: ToolArguments) => JobLogFormatters.formatJobLogMessage('Searching job logs by name', { jobName: args.jobName as string, limit: args.limit as number, }), }, get_job_log_entries: { defaults: (args: ToolArguments) => ({ level: args.level ?? 'all', limit: getLimit(args.limit as number, 'jobEntries'), }), validate: (args: ToolArguments, toolName: string) => { JobLogValidators.validateJobLogLevel(args.level as string, toolName); LogToolValidators.validateLimit(args.limit as number, toolName); }, exec: async (args: ToolArguments, context: ToolExecutionContext) => { const client = context.logClient as SFCCLogClient; return client.getJobLogEntries( args.level as any, args.limit as number, args.jobName as string, ); }, logMessage: (args: ToolArguments) => JobLogFormatters.formatJobLogMessage('Fetching job log entries', { level: args.level as string, limit: args.limit as number, jobName: args.jobName as string, }), }, search_job_logs: { defaults: (args: ToolArguments) => ({ level: args.level ?? 'all', limit: getLimit(args.limit as number, 'jobSearch'), }), validate: (args: ToolArguments, toolName: string) => { ValidationHelpers.validateArguments(args, CommonValidations.requiredString('pattern'), toolName); JobLogValidators.validateJobLogLevel(args.level as string, toolName); LogToolValidators.validateLimit(args.limit as number, toolName); // Validate optional jobName parameter - must be string if provided if (args.jobName !== undefined) { ValidationHelpers.validateArguments(args, CommonValidations.optionalField( 'jobName', 'string', (value: string) => typeof value === 'string' && value.trim().length > 0, 'jobName must be a non-empty string', ), toolName); } }, exec: async (args: ToolArguments, context: ToolExecutionContext) => { const client = context.logClient as SFCCLogClient; return client.searchJobLogs( args.pattern as string, args.level as any, args.limit as number, args.jobName as string, ); }, logMessage: (args: ToolArguments) => JobLogFormatters.formatJobLogMessage('Searching job logs', { pattern: args.pattern as string, level: args.level as string, limit: args.limit as number, jobName: args.jobName as string, }), }, get_job_execution_summary: { defaults: (args: ToolArguments) => args, validate: (args: ToolArguments, toolName: string) => { ValidationHelpers.validateArguments(args, CommonValidations.requiredString('jobName'), toolName); }, exec: async (args: ToolArguments, context: ToolExecutionContext) => { const client = context.logClient as SFCCLogClient; return client.getJobExecutionSummary(args.jobName as string); }, logMessage: (args: ToolArguments) => `Getting job execution summary for: ${args.jobName as string}`, }, };

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/taurgis/sfcc-dev-mcp'

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