formlab-mcp 0.6.9 → 0.6.11
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.
- package/package.json +1 -1
- package/server.json +2 -2
- package/tools/formulations.js +4 -1
- package/tools/lab.js +3 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "formlab-mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.11",
|
|
4
4
|
"mcpName": "io.github.juliu1980/formlab-mcp",
|
|
5
5
|
"description": "Read-only Model Context Protocol server for FormLab — lets Claude (and other MCP clients) read and analyze your FormLab data, from a local export file OR your live cloud workspace.",
|
|
6
6
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.juliu1980/formlab-mcp",
|
|
4
4
|
"description": "Read-only MCP for FormLab — let Claude query your formulation lab. Free reads a local export; Pro connects to your live cloud workspace with a dedicated read-only token.",
|
|
5
|
-
"version": "0.6.
|
|
5
|
+
"version": "0.6.11",
|
|
6
6
|
"websiteUrl": "https://formvix.com/mcp",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/juliu1980/FormLab",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
{
|
|
14
14
|
"registryType": "npm",
|
|
15
15
|
"identifier": "formlab-mcp",
|
|
16
|
-
"version": "0.6.
|
|
16
|
+
"version": "0.6.11",
|
|
17
17
|
"runtimeHint": "npx",
|
|
18
18
|
"transport": {
|
|
19
19
|
"type": "stdio"
|
package/tools/formulations.js
CHANGED
|
@@ -74,7 +74,7 @@ const list_formulations = {
|
|
|
74
74
|
const get_formulation = {
|
|
75
75
|
definition: {
|
|
76
76
|
name: 'get_formulation',
|
|
77
|
-
description: 'Get full details for a single formulation including its composition (raw rows AND flattened wt-% leaves with sub-formulas expanded), step procedure, and recent batches. Accepts either internal id or UID (e.g. FORM-001).',
|
|
77
|
+
description: 'Get full details for a single formulation including its composition (raw rows AND flattened wt-% leaves with sub-formulas expanded), step procedure, any recorded process-factor values (cure temp, mix time, RPM, pH — DOE inputs), and recent batches. Accepts either internal id or UID (e.g. FORM-001).',
|
|
78
78
|
inputSchema: {
|
|
79
79
|
type: 'object',
|
|
80
80
|
properties: {
|
|
@@ -120,6 +120,9 @@ const get_formulation = {
|
|
|
120
120
|
})),
|
|
121
121
|
// User-defined fields (incl. the "DOE factor"/"DOE value" convention).
|
|
122
122
|
customFields: (f.customFields || []).filter(c => c && c.name).map(c => ({ name: c.name, value: c.value != null ? c.value : '' })),
|
|
123
|
+
// Process-factor values (DOE Matrix "+ Factor" columns) — recorded process
|
|
124
|
+
// conditions (cure temp, mix time, RPM, pH, …) treated as DOE INPUTS.
|
|
125
|
+
processFactors: (f.factorValues || []).filter(x => x && x.name).map(x => ({ name: x.name, value: x.value != null ? x.value : '', unit: x.unit || '' })),
|
|
123
126
|
batchCount: batches.length,
|
|
124
127
|
sampleCount: samples.length,
|
|
125
128
|
};
|
package/tools/lab.js
CHANGED
|
@@ -69,6 +69,9 @@ function _trimBatch(b, formulationsById) {
|
|
|
69
69
|
preparedDate: b.preparedDate || '',
|
|
70
70
|
preparedBy: b.preparedBy || '',
|
|
71
71
|
process: b.process || '',
|
|
72
|
+
// Per-batch process-factor values (DOE Matrix "+ Factor" at batch grain) —
|
|
73
|
+
// recorded process conditions (cure temp, mix time, RPM, pH, …) as DOE INPUTS.
|
|
74
|
+
processFactors: (b.processFactors || []).filter(x => x && x.name).map(x => ({ name: x.name, value: x.value != null ? x.value : '', unit: x.unit || '' })),
|
|
72
75
|
parentBatchId: b.parentBatchId || null,
|
|
73
76
|
isBlend: Array.isArray(b.sourceBlend) && b.sourceBlend.length > 0,
|
|
74
77
|
blendParentCount: Array.isArray(b.sourceBlend) ? b.sourceBlend.length : 0,
|