@iyulab/mloop-mcp 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +179 -178
  2. package/build/executor.d.ts.map +1 -1
  3. package/build/executor.js +6 -2
  4. package/build/executor.js.map +1 -1
  5. package/build/server.d.ts.map +1 -1
  6. package/build/server.js +33 -2
  7. package/build/server.js.map +1 -1
  8. package/build/tools/analyze.d.ts +69 -0
  9. package/build/tools/analyze.d.ts.map +1 -0
  10. package/build/tools/analyze.js +103 -0
  11. package/build/tools/analyze.js.map +1 -0
  12. package/build/tools/auto-train.d.ts +63 -0
  13. package/build/tools/auto-train.d.ts.map +1 -0
  14. package/build/tools/auto-train.js +108 -0
  15. package/build/tools/auto-train.js.map +1 -0
  16. package/build/tools/evaluate.d.ts.map +1 -1
  17. package/build/tools/evaluate.js +8 -9
  18. package/build/tools/evaluate.js.map +1 -1
  19. package/build/tools/feedback.d.ts +64 -0
  20. package/build/tools/feedback.d.ts.map +1 -0
  21. package/build/tools/feedback.js +76 -0
  22. package/build/tools/feedback.js.map +1 -0
  23. package/build/tools/index.d.ts +44 -0
  24. package/build/tools/index.d.ts.map +1 -1
  25. package/build/tools/index.js +28 -0
  26. package/build/tools/index.js.map +1 -1
  27. package/build/tools/info.d.ts +28 -0
  28. package/build/tools/info.d.ts.map +1 -1
  29. package/build/tools/info.js +35 -2
  30. package/build/tools/info.js.map +1 -1
  31. package/build/tools/init.d.ts +43 -0
  32. package/build/tools/init.d.ts.map +1 -0
  33. package/build/tools/init.js +58 -0
  34. package/build/tools/init.js.map +1 -0
  35. package/build/tools/logs.d.ts +49 -0
  36. package/build/tools/logs.d.ts.map +1 -0
  37. package/build/tools/logs.js +63 -0
  38. package/build/tools/logs.js.map +1 -0
  39. package/build/tools/predict.d.ts +8 -0
  40. package/build/tools/predict.d.ts.map +1 -1
  41. package/build/tools/predict.js +10 -1
  42. package/build/tools/predict.js.map +1 -1
  43. package/build/tools/prep.d.ts +42 -0
  44. package/build/tools/prep.d.ts.map +1 -0
  45. package/build/tools/prep.js +56 -0
  46. package/build/tools/prep.js.map +1 -0
  47. package/build/tools/project-overview.d.ts +42 -0
  48. package/build/tools/project-overview.d.ts.map +1 -0
  49. package/build/tools/project-overview.js +65 -0
  50. package/build/tools/project-overview.js.map +1 -0
  51. package/build/tools/quick-start.d.ts +64 -0
  52. package/build/tools/quick-start.d.ts.map +1 -0
  53. package/build/tools/quick-start.js +103 -0
  54. package/build/tools/quick-start.js.map +1 -0
  55. package/build/tools/sample.d.ts +64 -0
  56. package/build/tools/sample.d.ts.map +1 -0
  57. package/build/tools/sample.js +77 -0
  58. package/build/tools/sample.js.map +1 -0
  59. package/build/tools/train.d.ts +28 -0
  60. package/build/tools/train.d.ts.map +1 -1
  61. package/build/tools/train.js +30 -2
  62. package/build/tools/train.js.map +1 -1
  63. package/build/tools/trigger.d.ts +42 -0
  64. package/build/tools/trigger.d.ts.map +1 -0
  65. package/build/tools/trigger.js +56 -0
  66. package/build/tools/trigger.js.map +1 -0
  67. package/build/tools/validate.d.ts +35 -0
  68. package/build/tools/validate.d.ts.map +1 -0
  69. package/build/tools/validate.js +48 -0
  70. package/build/tools/validate.js.map +1 -0
  71. package/package.json +6 -1
@@ -0,0 +1,103 @@
1
+ /**
2
+ * mloop_quick_start tool - One-step project setup: init -> train -> auto-promote
3
+ */
4
+ import { z } from 'zod';
5
+ import { mkdirSync } from 'fs';
6
+ import { executeMloop, buildArgsWithPositional } from '../executor.js';
7
+ import { parseCliOutput } from '../utils/parser.js';
8
+ import { formatError } from '../utils/errors.js';
9
+ export const quickStartSchema = z.object({
10
+ projectPath: z.string().describe('Project directory path'),
11
+ dataFile: z.string().describe('Training data CSV file path'),
12
+ label: z.string().describe('Label column name'),
13
+ task: z.enum(['binary-classification', 'multiclass-classification', 'regression'])
14
+ .describe('ML task type'),
15
+ time: z.number().positive().optional()
16
+ .describe('Training time in seconds (omit for auto-time)'),
17
+ });
18
+ export async function quickStart(params) {
19
+ const steps = [];
20
+ try {
21
+ // Step 1: Init (ensure directory exists)
22
+ mkdirSync(params.projectPath, { recursive: true });
23
+ const initArgs = buildArgsWithPositional('init', ['.'], { task: params.task });
24
+ await executeMloop(initArgs, { cwd: params.projectPath });
25
+ steps.push('Project initialized');
26
+ // Step 2: Train (auto-time if time not specified)
27
+ const trainParams = { label: params.label };
28
+ if (params.time)
29
+ trainParams['time'] = params.time;
30
+ const trainArgs = buildArgsWithPositional('train', [params.dataFile], trainParams);
31
+ const trainResult = await executeMloop(trainArgs, {
32
+ cwd: params.projectPath,
33
+ timeout: 1_200_000, // 20 min for auto-time
34
+ });
35
+ const trainOutput = parseCliOutput(trainResult.stdout);
36
+ steps.push('Model trained');
37
+ // Extract experiment ID from output
38
+ const expMatch = trainOutput.match(/Experiment ID:\s*(exp-\d+)/);
39
+ const expId = expMatch?.[1] ?? 'exp-001';
40
+ // Check if auto-promoted
41
+ if (trainOutput.includes('promoted to production')) {
42
+ steps.push(`${expId} auto-promoted to production`);
43
+ }
44
+ return {
45
+ content: [{
46
+ type: 'text',
47
+ text: JSON.stringify({
48
+ success: true,
49
+ summary: `Project initialized and model trained (${expId})`,
50
+ steps,
51
+ training_output: trainOutput,
52
+ }, null, 2),
53
+ }],
54
+ };
55
+ }
56
+ catch (error) {
57
+ return {
58
+ content: [{
59
+ type: 'text',
60
+ text: JSON.stringify({
61
+ success: false,
62
+ summary: 'Quick start failed',
63
+ steps_completed: steps,
64
+ error: formatError(error),
65
+ }, null, 2),
66
+ }],
67
+ isError: true,
68
+ };
69
+ }
70
+ }
71
+ export const quickStartTool = {
72
+ name: 'mloop_quick_start',
73
+ description: 'One-step project setup: initialize -> train -> auto-promote. Provide data file, label, and task type to go from zero to production model.',
74
+ inputSchema: {
75
+ type: 'object',
76
+ properties: {
77
+ projectPath: {
78
+ type: 'string',
79
+ description: 'Project directory path',
80
+ },
81
+ dataFile: {
82
+ type: 'string',
83
+ description: 'Training data CSV file path',
84
+ },
85
+ label: {
86
+ type: 'string',
87
+ description: 'Label column name',
88
+ },
89
+ task: {
90
+ type: 'string',
91
+ enum: ['binary-classification', 'multiclass-classification', 'regression'],
92
+ description: 'ML task type',
93
+ },
94
+ time: {
95
+ type: 'number',
96
+ description: 'Training time in seconds (omit for auto-time)',
97
+ },
98
+ },
99
+ required: ['projectPath', 'dataFile', 'label', 'task'],
100
+ },
101
+ handler: quickStart,
102
+ };
103
+ //# sourceMappingURL=quick-start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quick-start.js","sourceRoot":"","sources":["../../src/tools/quick-start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * mloop_sample tool - Data sampling operations
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const sampleSchema: z.ZodObject<{
6
+ projectPath: z.ZodString;
7
+ action: z.ZodEnum<["create", "stats"]>;
8
+ dataFile: z.ZodOptional<z.ZodString>;
9
+ size: z.ZodOptional<z.ZodNumber>;
10
+ strategy: z.ZodOptional<z.ZodString>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ projectPath: string;
13
+ action: "create" | "stats";
14
+ dataFile?: string | undefined;
15
+ size?: number | undefined;
16
+ strategy?: string | undefined;
17
+ }, {
18
+ projectPath: string;
19
+ action: "create" | "stats";
20
+ dataFile?: string | undefined;
21
+ size?: number | undefined;
22
+ strategy?: string | undefined;
23
+ }>;
24
+ export type SampleParams = z.infer<typeof sampleSchema>;
25
+ export declare function sample(params: SampleParams): Promise<{
26
+ content: Array<{
27
+ type: 'text';
28
+ text: string;
29
+ }>;
30
+ isError?: boolean;
31
+ }>;
32
+ export declare const sampleTool: {
33
+ name: string;
34
+ description: string;
35
+ inputSchema: {
36
+ type: string;
37
+ properties: {
38
+ projectPath: {
39
+ type: string;
40
+ description: string;
41
+ };
42
+ action: {
43
+ type: string;
44
+ enum: string[];
45
+ description: string;
46
+ };
47
+ dataFile: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ size: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ strategy: {
56
+ type: string;
57
+ description: string;
58
+ };
59
+ };
60
+ required: string[];
61
+ };
62
+ handler: typeof sample;
63
+ };
64
+ //# sourceMappingURL=sample.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.d.ts","sourceRoot":"","sources":["../../src/tools/sample.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAMvB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,wBAAsB,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA4BjI;AAED,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BtB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * mloop_sample tool - Data sampling operations
3
+ */
4
+ import { z } from 'zod';
5
+ import { executeMloop, buildArgsWithPositional } from '../executor.js';
6
+ import { parseCliOutput } from '../utils/parser.js';
7
+ import { formatError } from '../utils/errors.js';
8
+ export const sampleSchema = z.object({
9
+ projectPath: z.string().describe('Path to MLoop project directory'),
10
+ action: z.enum(['create', 'stats']).describe('Sample action to perform'),
11
+ dataFile: z.string().optional().describe('Data file to sample from'),
12
+ size: z.number().positive().optional().describe('Sample size (number of rows)'),
13
+ strategy: z.string().optional().describe('Sampling strategy (e.g., "random", "stratified")'),
14
+ });
15
+ export async function sample(params) {
16
+ try {
17
+ const positional = [params.action];
18
+ if (params.dataFile)
19
+ positional.push(params.dataFile);
20
+ const cliParams = {};
21
+ if (params.size)
22
+ cliParams['size'] = params.size;
23
+ if (params.strategy)
24
+ cliParams['strategy'] = params.strategy;
25
+ const args = buildArgsWithPositional('sample', positional, cliParams);
26
+ const result = await executeMloop(args, { cwd: params.projectPath });
27
+ const output = parseCliOutput(result.stdout);
28
+ return {
29
+ content: [{
30
+ type: 'text',
31
+ text: output || `Sample ${params.action} completed.`,
32
+ }],
33
+ };
34
+ }
35
+ catch (error) {
36
+ return {
37
+ content: [{
38
+ type: 'text',
39
+ text: formatError(error),
40
+ }],
41
+ isError: true,
42
+ };
43
+ }
44
+ }
45
+ export const sampleTool = {
46
+ name: 'mloop_sample',
47
+ description: 'Create data samples or view sampling statistics. Supports random and stratified sampling strategies.',
48
+ inputSchema: {
49
+ type: 'object',
50
+ properties: {
51
+ projectPath: {
52
+ type: 'string',
53
+ description: 'Path to MLoop project directory',
54
+ },
55
+ action: {
56
+ type: 'string',
57
+ enum: ['create', 'stats'],
58
+ description: 'Sample action: "create" to generate a sample, "stats" to view statistics',
59
+ },
60
+ dataFile: {
61
+ type: 'string',
62
+ description: 'Data file to sample from',
63
+ },
64
+ size: {
65
+ type: 'number',
66
+ description: 'Sample size (number of rows)',
67
+ },
68
+ strategy: {
69
+ type: 'string',
70
+ description: 'Sampling strategy (e.g., "random", "stratified")',
71
+ },
72
+ },
73
+ required: ['projectPath', 'action'],
74
+ },
75
+ handler: sample,
76
+ };
77
+ //# sourceMappingURL=sample.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sample.js","sourceRoot":"","sources":["../../src/tools/sample.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACxE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACpE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;IAC/E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;CAC7F,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,MAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,UAAU,GAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtD,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACjD,IAAI,MAAM,CAAC,QAAQ;YAAE,SAAS,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE7D,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,UAAU,MAAM,CAAC,MAAM,aAAa;iBACrD,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;iBACzB,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,sGAAsG;IACnH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACzB,WAAW,EAAE,0EAA0E;aACxF;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,0BAA0B;aACxC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8BAA8B;aAC5C;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kDAAkD;aAChE;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;KACpC;IACD,OAAO,EAAE,MAAM;CAChB,CAAC"}
@@ -10,6 +10,10 @@ export declare const trainSchema: z.ZodObject<{
10
10
  time: z.ZodOptional<z.ZodNumber>;
11
11
  metric: z.ZodOptional<z.ZodString>;
12
12
  modelName: z.ZodOptional<z.ZodString>;
13
+ balance: z.ZodOptional<z.ZodString>;
14
+ testSplit: z.ZodOptional<z.ZodNumber>;
15
+ noPromote: z.ZodOptional<z.ZodBoolean>;
16
+ dropMissingLabels: z.ZodOptional<z.ZodBoolean>;
13
17
  }, "strip", z.ZodTypeAny, {
14
18
  projectPath: string;
15
19
  dataFile?: string | undefined;
@@ -18,6 +22,10 @@ export declare const trainSchema: z.ZodObject<{
18
22
  time?: number | undefined;
19
23
  metric?: string | undefined;
20
24
  modelName?: string | undefined;
25
+ balance?: string | undefined;
26
+ testSplit?: number | undefined;
27
+ noPromote?: boolean | undefined;
28
+ dropMissingLabels?: boolean | undefined;
21
29
  }, {
22
30
  projectPath: string;
23
31
  dataFile?: string | undefined;
@@ -26,6 +34,10 @@ export declare const trainSchema: z.ZodObject<{
26
34
  time?: number | undefined;
27
35
  metric?: string | undefined;
28
36
  modelName?: string | undefined;
37
+ balance?: string | undefined;
38
+ testSplit?: number | undefined;
39
+ noPromote?: boolean | undefined;
40
+ dropMissingLabels?: boolean | undefined;
29
41
  }>;
30
42
  export type TrainParams = z.infer<typeof trainSchema>;
31
43
  export declare function train(params: TrainParams): Promise<{
@@ -70,6 +82,22 @@ export declare const trainTool: {
70
82
  type: string;
71
83
  description: string;
72
84
  };
85
+ balance: {
86
+ type: string;
87
+ description: string;
88
+ };
89
+ testSplit: {
90
+ type: string;
91
+ description: string;
92
+ };
93
+ noPromote: {
94
+ type: string;
95
+ description: string;
96
+ };
97
+ dropMissingLabels: {
98
+ type: string;
99
+ description: string;
100
+ };
73
101
  };
74
102
  required: string[];
75
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;EAUtB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAwC/H;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCrB,CAAC"}
1
+ {"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EActB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,wBAAsB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA4C/H;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDrB,CAAC"}
@@ -15,6 +15,10 @@ export const trainSchema = z.object({
15
15
  time: z.number().positive().optional().describe('Training time in seconds'),
16
16
  metric: z.string().optional().describe('Optimization metric'),
17
17
  modelName: z.string().optional().describe('Model name (default: "default")'),
18
+ balance: z.string().optional().describe('Class balancing strategy: "auto" (balance to 10:1), "none", or target ratio (e.g., "5" for 5:1)'),
19
+ testSplit: z.number().min(0).max(1).optional().describe('Test data split ratio (0.0-1.0, default: 0.2)'),
20
+ noPromote: z.boolean().optional().describe('Skip automatic promotion to production'),
21
+ dropMissingLabels: z.boolean().optional().describe('Drop rows with missing label values before training'),
18
22
  });
19
23
  export async function train(params) {
20
24
  try {
@@ -23,10 +27,10 @@ export async function train(params) {
23
27
  const positional = [];
24
28
  if (dataFile)
25
29
  positional.push(dataFile);
26
- if (label)
27
- positional.push(label);
28
30
  // Map parameters to CLI flags
29
31
  const cliParams = {};
32
+ if (label)
33
+ cliParams['label'] = label;
30
34
  if (options.task)
31
35
  cliParams['task'] = options.task;
32
36
  if (options.time)
@@ -35,6 +39,14 @@ export async function train(params) {
35
39
  cliParams['metric'] = options.metric;
36
40
  if (options.modelName)
37
41
  cliParams['name'] = options.modelName;
42
+ if (options.balance)
43
+ cliParams['balance'] = options.balance;
44
+ if (options.testSplit !== undefined)
45
+ cliParams['test-split'] = options.testSplit;
46
+ if (options.noPromote)
47
+ cliParams['no-promote'] = true;
48
+ if (options.dropMissingLabels)
49
+ cliParams['drop-missing-labels'] = true;
38
50
  const args = buildArgsWithPositional('train', positional, cliParams);
39
51
  const result = await executeMloop(args, {
40
52
  cwd: projectPath,
@@ -93,6 +105,22 @@ export const trainTool = {
93
105
  type: 'string',
94
106
  description: 'Model name for namespacing (default: "default")',
95
107
  },
108
+ balance: {
109
+ type: 'string',
110
+ description: 'Class balancing strategy for imbalanced datasets: "auto" (balance to 10:1 if needed), "none" (no balancing), or a number like "5" for 5:1 target ratio',
111
+ },
112
+ testSplit: {
113
+ type: 'number',
114
+ description: 'Test data split ratio (0.0-1.0, default: 0.2)',
115
+ },
116
+ noPromote: {
117
+ type: 'boolean',
118
+ description: 'Skip automatic promotion to production after training',
119
+ },
120
+ dropMissingLabels: {
121
+ type: 'boolean',
122
+ description: 'Drop rows with missing label values before training',
123
+ },
96
124
  },
97
125
  required: ['projectPath'],
98
126
  },
@@ -1 +1 @@
1
- {"version":3,"file":"train.js","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,YAAY,CAAC,CAAC;SAC/E,QAAQ,EAAE;SACV,QAAQ,CAAC,cAAc,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IAC7D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC7E,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,MAAmB;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;QAE5D,6BAA6B;QAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,IAAI,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElC,8BAA8B;QAC9B,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM;YAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzD,IAAI,OAAO,CAAC,SAAS;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;QAE7D,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAErE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE;YACtC,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE,OAAO,EAAE,0BAA0B;SAC7C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,kCAAkC;iBACnD,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;iBACzB,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,qFAAqF;IAClG,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uDAAuD;aACrE;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gCAAgC;aAC9C;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,YAAY,CAAC;gBAC1E,WAAW,EAAE,cAAc;aAC5B;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,gCAAgC;aAC9C;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yDAAyD;aACvE;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iDAAiD;aAC/D;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,OAAO,EAAE,KAAK;CACf,CAAC"}
1
+ {"version":3,"file":"train.js","sourceRoot":"","sources":["../../src/tools/train.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * mloop_trigger tool - Check retraining triggers
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const triggerSchema: z.ZodObject<{
6
+ projectPath: z.ZodString;
7
+ modelName: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ projectPath: string;
10
+ modelName?: string | undefined;
11
+ }, {
12
+ projectPath: string;
13
+ modelName?: string | undefined;
14
+ }>;
15
+ export type TriggerParams = z.infer<typeof triggerSchema>;
16
+ export declare function trigger(params: TriggerParams): Promise<{
17
+ content: Array<{
18
+ type: 'text';
19
+ text: string;
20
+ }>;
21
+ isError?: boolean;
22
+ }>;
23
+ export declare const triggerTool: {
24
+ name: string;
25
+ description: string;
26
+ inputSchema: {
27
+ type: string;
28
+ properties: {
29
+ projectPath: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ modelName: {
34
+ type: string;
35
+ description: string;
36
+ };
37
+ };
38
+ required: string[];
39
+ };
40
+ handler: typeof trigger;
41
+ };
42
+ //# sourceMappingURL=trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../../src/tools/trigger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,aAAa;;;;;;;;;EAGxB,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wBAAsB,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAwBnI;AAED,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAkBvB,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * mloop_trigger tool - Check retraining triggers
3
+ */
4
+ import { z } from 'zod';
5
+ import { executeMloop, buildArgsWithPositional } from '../executor.js';
6
+ import { parseCliOutput } from '../utils/parser.js';
7
+ import { formatError } from '../utils/errors.js';
8
+ export const triggerSchema = z.object({
9
+ projectPath: z.string().describe('Path to MLoop project directory'),
10
+ modelName: z.string().optional().describe('Model name (default: "default")'),
11
+ });
12
+ export async function trigger(params) {
13
+ try {
14
+ const cliParams = {};
15
+ if (params.modelName)
16
+ cliParams['name'] = params.modelName;
17
+ const args = buildArgsWithPositional('trigger', ['check'], cliParams);
18
+ const result = await executeMloop(args, { cwd: params.projectPath });
19
+ const output = parseCliOutput(result.stdout);
20
+ return {
21
+ content: [{
22
+ type: 'text',
23
+ text: output || 'No retraining triggers activated.',
24
+ }],
25
+ };
26
+ }
27
+ catch (error) {
28
+ return {
29
+ content: [{
30
+ type: 'text',
31
+ text: formatError(error),
32
+ }],
33
+ isError: true,
34
+ };
35
+ }
36
+ }
37
+ export const triggerTool = {
38
+ name: 'mloop_trigger',
39
+ description: 'Check if retraining triggers are activated. Evaluates model drift, data freshness, and feedback-based triggers.',
40
+ inputSchema: {
41
+ type: 'object',
42
+ properties: {
43
+ projectPath: {
44
+ type: 'string',
45
+ description: 'Path to MLoop project directory',
46
+ },
47
+ modelName: {
48
+ type: 'string',
49
+ description: 'Model name (default: "default")',
50
+ },
51
+ },
52
+ required: ['projectPath'],
53
+ },
54
+ handler: trigger,
55
+ };
56
+ //# sourceMappingURL=trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/tools/trigger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;IACnE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CAC7E,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC;QACH,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,IAAI,MAAM,CAAC,SAAS;YAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QAE3D,MAAM,IAAI,GAAG,uBAAuB,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,mCAAmC;iBACpD,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;iBACzB,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,iHAAiH;IAC9H,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,OAAO,EAAE,OAAO;CACjB,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * mloop_validate tool - Validate mloop.yaml configuration
3
+ */
4
+ import { z } from 'zod';
5
+ export declare const validateSchema: z.ZodObject<{
6
+ projectPath: z.ZodString;
7
+ }, "strip", z.ZodTypeAny, {
8
+ projectPath: string;
9
+ }, {
10
+ projectPath: string;
11
+ }>;
12
+ export type ValidateParams = z.infer<typeof validateSchema>;
13
+ export declare function validate(params: ValidateParams): Promise<{
14
+ content: Array<{
15
+ type: 'text';
16
+ text: string;
17
+ }>;
18
+ isError?: boolean;
19
+ }>;
20
+ export declare const validateTool: {
21
+ name: string;
22
+ description: string;
23
+ inputSchema: {
24
+ type: string;
25
+ properties: {
26
+ projectPath: {
27
+ type: string;
28
+ description: string;
29
+ };
30
+ };
31
+ required: string[];
32
+ };
33
+ handler: typeof validate;
34
+ };
35
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,cAAc;;;;;;EAEzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,wBAAsB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAqBrI;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;CAcxB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * mloop_validate tool - Validate mloop.yaml configuration
3
+ */
4
+ import { z } from 'zod';
5
+ import { executeMloop } from '../executor.js';
6
+ import { parseCliOutput } from '../utils/parser.js';
7
+ import { formatError } from '../utils/errors.js';
8
+ export const validateSchema = z.object({
9
+ projectPath: z.string().describe('Path to MLoop project directory'),
10
+ });
11
+ export async function validate(params) {
12
+ try {
13
+ const args = ['validate'];
14
+ const result = await executeMloop(args, { cwd: params.projectPath });
15
+ const output = parseCliOutput(result.stdout);
16
+ return {
17
+ content: [{
18
+ type: 'text',
19
+ text: output || 'Configuration is valid.',
20
+ }],
21
+ };
22
+ }
23
+ catch (error) {
24
+ return {
25
+ content: [{
26
+ type: 'text',
27
+ text: formatError(error),
28
+ }],
29
+ isError: true,
30
+ };
31
+ }
32
+ }
33
+ export const validateTool = {
34
+ name: 'mloop_validate',
35
+ description: 'Validate the mloop.yaml configuration file. Checks for syntax errors, missing fields, and invalid values.',
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ projectPath: {
40
+ type: 'string',
41
+ description: 'Path to MLoop project directory',
42
+ },
43
+ },
44
+ required: ['projectPath'],
45
+ },
46
+ handler: validate,
47
+ };
48
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CACpE,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAsB;IACnD,IAAI,CAAC;QACH,MAAM,IAAI,GAAa,CAAC,UAAU,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE7C,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,MAAM,IAAI,yBAAyB;iBAC1C,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC;oBACR,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;iBACzB,CAAC;YACF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,2GAA2G;IACxH,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iCAAiC;aAC/C;SACF;QACD,QAAQ,EAAE,CAAC,aAAa,CAAC;KAC1B;IACD,OAAO,EAAE,QAAQ;CAClB,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,17 @@
1
1
  {
2
2
  "name": "@iyulab/mloop-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "MCP server for MLoop CLI - ML.NET MLOps tool",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
7
7
  "bin": {
8
8
  "mloop-mcp": "build/index.js"
9
9
  },
10
+ "exports": {
11
+ ".": "./build/index.js",
12
+ "./tools": "./build/tools/index.js",
13
+ "./executor": "./build/executor.js"
14
+ },
10
15
  "scripts": {
11
16
  "build": "tsc",
12
17
  "watch": "tsc --watch",