UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

80 lines 9.68 kB
import { OperationMetricsTracker } from '../OperationMetricsTracker.js'; export class OperationMetricsCollector { tracker; name = 'operation-metrics'; description = 'MCP-AQL operation counts, durations, and endpoint breakdown.'; constructor(tracker) { this.tracker = tracker; } collect() { try { const m = this.tracker.getMetrics(); const pct = OperationMetricsTracker.percentiles(m.durations); const entries = [ { type: 'counter', name: 'mcpaql.operations_total', source: 'OperationMetricsTracker', unit: 'operations', description: 'Total MCP-AQL operations executed.', value: m.totalOps, }, { type: 'counter', name: 'mcpaql.operations_failed_total', source: 'OperationMetricsTracker', unit: 'operations', description: 'Total MCP-AQL operations that failed.', value: m.failedOps, }, { type: 'histogram', name: 'mcpaql.duration', source: 'OperationMetricsTracker', unit: 'milliseconds', description: 'MCP-AQL operation duration distribution.', value: { count: pct.count, sum: pct.sum, avg: pct.avg, p50: pct.p50, p95: pct.p95, p99: pct.p99, }, }, ]; // Per-endpoint gauges for (const [endpoint, count] of m.byEndpoint) { entries.push({ type: 'gauge', name: 'mcpaql.by_endpoint', source: 'OperationMetricsTracker', unit: 'operations', description: `Operations via ${endpoint} endpoint.`, labels: { endpoint }, value: count, }); } // Top 10 operations by count const topOps = [...m.byOperation.entries()] .sort((a, b) => b[1] - a[1]) .slice(0, 10); for (const [operation, count] of topOps) { entries.push({ type: 'gauge', name: 'mcpaql.by_operation', source: 'OperationMetricsTracker', unit: 'operations', description: `Count for operation: ${operation}.`, labels: { operation }, value: count, }); } return entries; } catch { return []; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3BlcmF0aW9uTWV0cmljc0NvbGxlY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRyaWNzL2NvbGxlY3RvcnMvT3BlcmF0aW9uTWV0cmljc0NvbGxlY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUV4RSxNQUFNLE9BQU8seUJBQXlCO0lBSVA7SUFIcEIsSUFBSSxHQUFHLG1CQUFtQixDQUFDO0lBQzNCLFdBQVcsR0FBRyw4REFBOEQsQ0FBQztJQUV0RixZQUE2QixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtJQUFHLENBQUM7SUFFakUsT0FBTztRQUNMLElBQUksQ0FBQztZQUNILE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEMsTUFBTSxHQUFHLEdBQUcsdUJBQXVCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU3RCxNQUFNLE9BQU8sR0FBa0I7Z0JBQzdCO29CQUNFLElBQUksRUFBRSxTQUFrQjtvQkFDeEIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsSUFBSSxFQUFFLFlBQXFCO29CQUMzQixXQUFXLEVBQUUsb0NBQW9DO29CQUNqRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVE7aUJBQ2xCO2dCQUNEO29CQUNFLElBQUksRUFBRSxTQUFrQjtvQkFDeEIsSUFBSSxFQUFFLGdDQUFnQztvQkFDdEMsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsSUFBSSxFQUFFLFlBQXFCO29CQUMzQixXQUFXLEVBQUUsdUNBQXVDO29CQUNwRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVM7aUJBQ25CO2dCQUNEO29CQUNFLElBQUksRUFBRSxXQUFvQjtvQkFDMUIsSUFBSSxFQUFFLGlCQUFpQjtvQkFDdkIsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsSUFBSSxFQUFFLGNBQXVCO29CQUM3QixXQUFXLEVBQUUsMENBQTBDO29CQUN2RCxLQUFLLEVBQUU7d0JBQ0wsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO3dCQUNoQixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7d0JBQ1osR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO3dCQUNaLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRzt3QkFDWixHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUc7d0JBQ1osR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHO3FCQUNiO2lCQUNGO2FBQ0YsQ0FBQztZQUVGLHNCQUFzQjtZQUN0QixLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3QyxPQUFPLENBQUMsSUFBSSxDQUFDO29CQUNYLElBQUksRUFBRSxPQUFnQjtvQkFDdEIsSUFBSSxFQUFFLG9CQUFvQjtvQkFDMUIsTUFBTSxFQUFFLHlCQUF5QjtvQkFDakMsSUFBSSxFQUFFLFlBQXFCO29CQUMzQixXQUFXLEVBQUUsa0JBQWtCLFFBQVEsWUFBWTtvQkFDbkQsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFO29CQUNwQixLQUFLLEVBQUUsS0FBSztpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsNkJBQTZCO1lBQzdCLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2lCQUN4QyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMzQixLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLEtBQUssTUFBTSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxJQUFJLEVBQUUsT0FBZ0I7b0JBQ3RCLElBQUksRUFBRSxxQkFBcUI7b0JBQzNCLE1BQU0sRUFBRSx5QkFBeUI7b0JBQ2pDLElBQUksRUFBRSxZQUFxQjtvQkFDM0IsV0FBVyxFQUFFLHdCQUF3QixTQUFTLEdBQUc7b0JBQ2pELE1BQU0sRUFBRSxFQUFFLFNBQVMsRUFBRTtvQkFDckIsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbGxlY3RvciBmb3IgTUNQLUFRTCBvcGVyYXRpb24gbWV0cmljcy5cbiAqXG4gKiBSZWFkcyBmcm9tIE9wZXJhdGlvbk1ldHJpY3NUcmFja2VyIGFuZCBlbWl0cyBjb3VudGVyLCBoaXN0b2dyYW0sXG4gKiBhbmQgZ2F1Z2UgbWV0cmljIGVudHJpZXMgZm9yIHRoZSBNZXRyaWNzTWFuYWdlciBwaXBlbGluZS5cbiAqL1xuaW1wb3J0IHR5cGUgeyBJTWV0cmljQ29sbGVjdG9yLCBNZXRyaWNFbnRyeSB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IE9wZXJhdGlvbk1ldHJpY3NUcmFja2VyIH0gZnJvbSAnLi4vT3BlcmF0aW9uTWV0cmljc1RyYWNrZXIuanMnO1xuXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uTWV0cmljc0NvbGxlY3RvciBpbXBsZW1lbnRzIElNZXRyaWNDb2xsZWN0b3Ige1xuICByZWFkb25seSBuYW1lID0gJ29wZXJhdGlvbi1tZXRyaWNzJztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24gPSAnTUNQLUFRTCBvcGVyYXRpb24gY291bnRzLCBkdXJhdGlvbnMsIGFuZCBlbmRwb2ludCBicmVha2Rvd24uJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRyYWNrZXI6IE9wZXJhdGlvbk1ldHJpY3NUcmFja2VyKSB7fVxuXG4gIGNvbGxlY3QoKTogTWV0cmljRW50cnlbXSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG0gPSB0aGlzLnRyYWNrZXIuZ2V0TWV0cmljcygpO1xuICAgICAgY29uc3QgcGN0ID0gT3BlcmF0aW9uTWV0cmljc1RyYWNrZXIucGVyY2VudGlsZXMobS5kdXJhdGlvbnMpO1xuXG4gICAgICBjb25zdCBlbnRyaWVzOiBNZXRyaWNFbnRyeVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2NvdW50ZXInIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWU6ICdtY3BhcWwub3BlcmF0aW9uc190b3RhbCcsXG4gICAgICAgICAgc291cmNlOiAnT3BlcmF0aW9uTWV0cmljc1RyYWNrZXInLFxuICAgICAgICAgIHVuaXQ6ICdvcGVyYXRpb25zJyBhcyBjb25zdCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RvdGFsIE1DUC1BUUwgb3BlcmF0aW9ucyBleGVjdXRlZC4nLFxuICAgICAgICAgIHZhbHVlOiBtLnRvdGFsT3BzLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2NvdW50ZXInIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWU6ICdtY3BhcWwub3BlcmF0aW9uc19mYWlsZWRfdG90YWwnLFxuICAgICAgICAgIHNvdXJjZTogJ09wZXJhdGlvbk1ldHJpY3NUcmFja2VyJyxcbiAgICAgICAgICB1bml0OiAnb3BlcmF0aW9ucycgYXMgY29uc3QsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUb3RhbCBNQ1AtQVFMIG9wZXJhdGlvbnMgdGhhdCBmYWlsZWQuJyxcbiAgICAgICAgICB2YWx1ZTogbS5mYWlsZWRPcHMsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnaGlzdG9ncmFtJyBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiAnbWNwYXFsLmR1cmF0aW9uJyxcbiAgICAgICAgICBzb3VyY2U6ICdPcGVyYXRpb25NZXRyaWNzVHJhY2tlcicsXG4gICAgICAgICAgdW5pdDogJ21pbGxpc2Vjb25kcycgYXMgY29uc3QsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdNQ1AtQVFMIG9wZXJhdGlvbiBkdXJhdGlvbiBkaXN0cmlidXRpb24uJyxcbiAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgY291bnQ6IHBjdC5jb3VudCxcbiAgICAgICAgICAgIHN1bTogcGN0LnN1bSxcbiAgICAgICAgICAgIGF2ZzogcGN0LmF2ZyxcbiAgICAgICAgICAgIHA1MDogcGN0LnA1MCxcbiAgICAgICAgICAgIHA5NTogcGN0LnA5NSxcbiAgICAgICAgICAgIHA5OTogcGN0LnA5OSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgLy8gUGVyLWVuZHBvaW50IGdhdWdlc1xuICAgICAgZm9yIChjb25zdCBbZW5kcG9pbnQsIGNvdW50XSBvZiBtLmJ5RW5kcG9pbnQpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnZ2F1Z2UnIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWU6ICdtY3BhcWwuYnlfZW5kcG9pbnQnLFxuICAgICAgICAgIHNvdXJjZTogJ09wZXJhdGlvbk1ldHJpY3NUcmFja2VyJyxcbiAgICAgICAgICB1bml0OiAnb3BlcmF0aW9ucycgYXMgY29uc3QsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBPcGVyYXRpb25zIHZpYSAke2VuZHBvaW50fSBlbmRwb2ludC5gLFxuICAgICAgICAgIGxhYmVsczogeyBlbmRwb2ludCB9LFxuICAgICAgICAgIHZhbHVlOiBjb3VudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFRvcCAxMCBvcGVyYXRpb25zIGJ5IGNvdW50XG4gICAgICBjb25zdCB0b3BPcHMgPSBbLi4ubS5ieU9wZXJhdGlvbi5lbnRyaWVzKCldXG4gICAgICAgIC5zb3J0KChhLCBiKSA9PiBiWzFdIC0gYVsxXSlcbiAgICAgICAgLnNsaWNlKDAsIDEwKTtcbiAgICAgIGZvciAoY29uc3QgW29wZXJhdGlvbiwgY291bnRdIG9mIHRvcE9wcykge1xuICAgICAgICBlbnRyaWVzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdnYXVnZScgYXMgY29uc3QsXG4gICAgICAgICAgbmFtZTogJ21jcGFxbC5ieV9vcGVyYXRpb24nLFxuICAgICAgICAgIHNvdXJjZTogJ09wZXJhdGlvbk1ldHJpY3NUcmFja2VyJyxcbiAgICAgICAgICB1bml0OiAnb3BlcmF0aW9ucycgYXMgY29uc3QsXG4gICAgICAgICAgZGVzY3JpcHRpb246IGBDb3VudCBmb3Igb3BlcmF0aW9uOiAke29wZXJhdGlvbn0uYCxcbiAgICAgICAgICBsYWJlbHM6IHsgb3BlcmF0aW9uIH0sXG4gICAgICAgICAgdmFsdWU6IGNvdW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG59XG4iXX0=