formlab-mcp 0.6.56 → 0.6.58
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/LICENSE +46 -0
- package/README.md +39 -26
- package/index.js +2 -2
- package/package.json +17 -8
- package/server.json +4 -9
- package/vendor/README.md +5 -0
- package/vendor/cost.js +1 -1
- package/SUBMISSION.md +0 -132
- package/supabase/.temp/linked-project.json +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
formlab-mcp is distributed under two licenses. Part 1 (MIT) covers every file
|
|
2
|
+
in this package except the vendor/ directory. Part 2 (proprietary) covers the
|
|
3
|
+
vendor/ directory.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
PART 1: MIT LICENSE (all files except vendor/)
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2026 FormVix Software Solutions LLC
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
26
|
+
SOFTWARE.
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
PART 2: PROPRIETARY LICENSE (vendor/)
|
|
30
|
+
|
|
31
|
+
Files covered: vendor/cost.js, vendor/nesting.js, vendor/theoretical-params.js,
|
|
32
|
+
vendor/equipment-calibration.js, and any other file in the vendor/ directory.
|
|
33
|
+
|
|
34
|
+
Copyright (c) 2026 FormVix Software Solutions LLC. All rights reserved.
|
|
35
|
+
|
|
36
|
+
These files are included solely so formlab-mcp can compute values identically
|
|
37
|
+
to the FormLab app. You may use them only as part of an unmodified formlab-mcp
|
|
38
|
+
installation. No other license is granted: you may not copy, modify, extract,
|
|
39
|
+
redistribute or reuse them, in whole or in part, separately from formlab-mcp.
|
|
40
|
+
|
|
41
|
+
THESE FILES ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
42
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
43
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
44
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
45
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
46
|
+
OUT OF OR IN CONNECTION WITH THESE FILES OR THE USE OR OTHER DEALINGS IN THEM.
|
package/README.md
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
# formlab-mcp
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/formlab-mcp)
|
|
4
|
-
[](https://github.com/juliu1980/FormLab/blob/main/LICENSE)
|
|
5
4
|
[](https://formvix.com)
|
|
6
5
|
|
|
7
|
-
A **read-only Model Context Protocol server** for [FormLab](https://formvix.com). Lets Claude (or any MCP-compatible AI assistant) read and analyze your
|
|
6
|
+
A **read-only Model Context Protocol server** for [FormLab](https://formvix.com). Lets Claude (or any MCP-compatible AI assistant) read and analyze your FormLab data: formulations, ingredients, batches, samples and test reports, from a local export file or your live cloud workspace.
|
|
8
7
|
|
|
9
|
-
>
|
|
8
|
+
> In file mode the server makes no network calls of its own. What a tool returns goes to the model your MCP client uses (for Claude Desktop, Anthropic), so only connect data you're comfortable sending to that provider. See [Privacy and data flow](#privacy-and-data-flow).
|
|
10
9
|
|
|
11
|
-
Listed in the official MCP Registry as `io.github.juliu1980/formlab-mcp`.
|
|
10
|
+
Listed in the official MCP Registry as `io.github.juliu1980/formlab-mcp`. The server code is MIT-licensed. It bundles FormLab's calculation engine (`vendor/`) under a proprietary license that allows use only as part of formlab-mcp; see LICENSE.
|
|
12
11
|
|
|
13
12
|
## What it does
|
|
14
13
|
|
|
@@ -82,24 +81,34 @@ npm install -g formlab-mcp
|
|
|
82
81
|
formlab-mcp /path/to/formlab-export.json
|
|
83
82
|
```
|
|
84
83
|
|
|
85
|
-
|
|
84
|
+
To read or run the source, unpack it from npm (the source ships in the package; see [License](#license)):
|
|
86
85
|
|
|
87
86
|
```bash
|
|
88
|
-
|
|
89
|
-
npm install
|
|
87
|
+
npm pack formlab-mcp && tar xzf formlab-mcp-*.tgz
|
|
88
|
+
cd package && npm install
|
|
90
89
|
node index.js /path/to/formlab-export.json
|
|
91
90
|
```
|
|
92
91
|
|
|
93
92
|
Requires **Node 18+**.
|
|
94
93
|
|
|
94
|
+
## Try it with sample data
|
|
95
|
+
|
|
96
|
+
No FormLab account needed: a sample export (the app's Showcase demo) is published on formvix.com.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
curl -O https://formvix.com/downloads/formlab-demo-export.json
|
|
100
|
+
npx formlab-mcp ./formlab-demo-export.json
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Point your MCP client at that file the same way as your own export (see below).
|
|
104
|
+
|
|
95
105
|
## Get your FormLab export
|
|
96
106
|
|
|
97
107
|
1. Open FormLab
|
|
98
|
-
2.
|
|
99
|
-
3.
|
|
100
|
-
4. Point this MCP at the downloaded file
|
|
108
|
+
2. **Settings → Data → Export JSON**. This saves `formlab-export-YYYY-MM-DD.json` to your downloads folder.
|
|
109
|
+
3. Point this MCP at the downloaded file
|
|
101
110
|
|
|
102
|
-
The MCP server watches the file
|
|
111
|
+
The MCP server watches the file: re-export from FormLab and the next tool call sees the fresh data without restarting the server.
|
|
103
112
|
|
|
104
113
|
## Or: LIVE cloud mode (no export needed)
|
|
105
114
|
|
|
@@ -138,7 +147,7 @@ Add this to your `claude_desktop_config.json` (on macOS: `~/Library/Application
|
|
|
138
147
|
}
|
|
139
148
|
```
|
|
140
149
|
|
|
141
|
-
Or
|
|
150
|
+
Or from the unpacked package:
|
|
142
151
|
|
|
143
152
|
```json
|
|
144
153
|
{
|
|
@@ -146,7 +155,7 @@ Or for local-dev (from the repo):
|
|
|
146
155
|
"formlab": {
|
|
147
156
|
"command": "node",
|
|
148
157
|
"args": [
|
|
149
|
-
"/Users/you/
|
|
158
|
+
"/Users/you/package/index.js",
|
|
150
159
|
"/Users/you/Downloads/formlab-export-2026-05-30.json"
|
|
151
160
|
]
|
|
152
161
|
}
|
|
@@ -154,7 +163,7 @@ Or for local-dev (from the repo):
|
|
|
154
163
|
}
|
|
155
164
|
```
|
|
156
165
|
|
|
157
|
-
Restart Claude Desktop. You should see a hammer icon indicating tools are available, and FormLab's
|
|
166
|
+
Restart Claude Desktop. You should see a hammer icon indicating tools are available, and FormLab's 41 tools become callable in any conversation.
|
|
158
167
|
|
|
159
168
|
## Wire it up to Claude Code
|
|
160
169
|
|
|
@@ -169,12 +178,22 @@ export FORMLAB_EXPORT=/Users/you/Downloads/formlab-export-2026-05-30.json
|
|
|
169
178
|
claude mcp add formlab npx formlab-mcp
|
|
170
179
|
```
|
|
171
180
|
|
|
172
|
-
## Privacy and
|
|
181
|
+
## Privacy and data flow
|
|
182
|
+
|
|
183
|
+
**In both modes, what a tool returns goes to your model.** The server answers your MCP client over stdio, and the client sends tool results (your formulations, test data and so on) to the model it uses: for Claude Desktop, Anthropic. Only connect data you're comfortable sending to that provider.
|
|
173
184
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
- **
|
|
177
|
-
- **
|
|
185
|
+
**File mode** (an export file):
|
|
186
|
+
|
|
187
|
+
- **No network calls of its own.** The server reads the export from your disk and talks to your MCP client over stdio. It does not upload the file anywhere.
|
|
188
|
+
- **Hot-reload on file change.** Re-export from FormLab while the server is running and the next tool call picks up fresh data.
|
|
189
|
+
|
|
190
|
+
**Cloud mode** (`FORMLAB_MCP_TOKEN` set):
|
|
191
|
+
|
|
192
|
+
- The server sends your token to FormLab's `mcp-data` Edge Function and receives your workspace in return, re-read every 60 seconds (`FORMLAB_REFRESH_SECONDS`).
|
|
193
|
+
- The function reads through a dedicated `mcp_readonly` Postgres role with `SELECT`-only grants, and row-level security limits it to the workspace the token was made for.
|
|
194
|
+
- FormLab stores only a SHA-256 hash of the token. It holds no account session and you can revoke it at any time.
|
|
195
|
+
|
|
196
|
+
**Read-only, in both modes.** No tool can change your FormLab data.
|
|
178
197
|
|
|
179
198
|
## Data shape
|
|
180
199
|
|
|
@@ -185,12 +204,6 @@ The server accepts both FormLab export shapes:
|
|
|
185
204
|
|
|
186
205
|
The wrapped form is the default since 2026; the legacy form is supported for older exports.
|
|
187
206
|
|
|
188
|
-
## Tier 2 (planned, paid)
|
|
189
|
-
|
|
190
|
-
Live file-sync with write tools: `create_formulation`, `update_formulation`, `log_test_result`, `create_batch`, etc. Mutations from Claude write back to the same JSON FormLab reads. Conflict detection, cascade-safe deletes, schema versioning.
|
|
191
|
-
|
|
192
|
-
Not yet shipped — see the FormLab roadmap.
|
|
193
|
-
|
|
194
207
|
## License
|
|
195
208
|
|
|
196
|
-
MIT
|
|
209
|
+
The server code is MIT-licensed. It bundles FormLab's calculation engine (`vendor/`) under a proprietary license that allows use only as part of formlab-mcp; see LICENSE.
|
package/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// FORMLAB_EXPORT=/path/to/export.json node index.js
|
|
8
8
|
// formlab-mcp /path/to/export.json (when installed via npm)
|
|
9
9
|
//
|
|
10
|
-
// Exposes
|
|
10
|
+
// Exposes 41 tools (see ./tools/) over stdio. The MCP host (Claude
|
|
11
11
|
// Desktop, Claude Code, etc.) handles tool discovery, invocation
|
|
12
12
|
// and response formatting. We just register handlers and stay out
|
|
13
13
|
// of the way.
|
|
@@ -72,7 +72,7 @@ if (CLOUD) {
|
|
|
72
72
|
'Usage: formlab-mcp <path-to-export.json> (file mode)',
|
|
73
73
|
' or: set FORMLAB_MCP_TOKEN (LIVE cloud mode)',
|
|
74
74
|
'',
|
|
75
|
-
'File mode: export via Settings →
|
|
75
|
+
'File mode: export via Settings → Data → Export JSON.',
|
|
76
76
|
'Cloud mode: mint a read-only token in FormLab → Settings → Account →',
|
|
77
77
|
' AI tools (MCP) → Connect, and set it as FORMLAB_MCP_TOKEN.',
|
|
78
78
|
'',
|
package/package.json
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "formlab-mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.58",
|
|
4
4
|
"mcpName": "io.github.juliu1980/formlab-mcp",
|
|
5
|
-
"description": "Read-only Model Context Protocol server for FormLab
|
|
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
|
+
"homepage": "https://formvix.com/mcp",
|
|
6
7
|
"type": "module",
|
|
7
8
|
"bin": {
|
|
8
9
|
"formlab-mcp": "./index.js"
|
|
9
10
|
},
|
|
10
11
|
"main": "index.js",
|
|
12
|
+
"files": [
|
|
13
|
+
"index.js",
|
|
14
|
+
"data.js",
|
|
15
|
+
"cloud.js",
|
|
16
|
+
"calibration.js",
|
|
17
|
+
"peptide.js",
|
|
18
|
+
"theoretical.js",
|
|
19
|
+
"tools/",
|
|
20
|
+
"vendor/",
|
|
21
|
+
"server.json",
|
|
22
|
+
"README.md",
|
|
23
|
+
"LICENSE"
|
|
24
|
+
],
|
|
11
25
|
"scripts": {
|
|
12
26
|
"start": "node index.js",
|
|
13
27
|
"dev": "node --watch index.js"
|
|
@@ -32,10 +46,5 @@
|
|
|
32
46
|
"design-of-experiments",
|
|
33
47
|
"claude"
|
|
34
48
|
],
|
|
35
|
-
"license": "
|
|
36
|
-
"repository": {
|
|
37
|
-
"type": "git",
|
|
38
|
-
"url": "https://github.com/juliu1980/FormLab",
|
|
39
|
-
"directory": "mcp"
|
|
40
|
-
}
|
|
49
|
+
"license": "SEE LICENSE IN LICENSE"
|
|
41
50
|
}
|
package/server.json
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.juliu1980/formlab-mcp",
|
|
4
|
-
"description": "Read-only MCP for FormLab
|
|
5
|
-
"version": "0.6.
|
|
4
|
+
"description": "Read-only MCP server for FormLab formulation data: a local export file or your live cloud workspace.",
|
|
5
|
+
"version": "0.6.58",
|
|
6
6
|
"websiteUrl": "https://formvix.com/mcp",
|
|
7
|
-
"repository": {
|
|
8
|
-
"url": "https://github.com/juliu1980/FormLab",
|
|
9
|
-
"source": "github",
|
|
10
|
-
"subfolder": "mcp"
|
|
11
|
-
},
|
|
12
7
|
"packages": [
|
|
13
8
|
{
|
|
14
9
|
"registryType": "npm",
|
|
15
10
|
"identifier": "formlab-mcp",
|
|
16
|
-
"version": "0.6.
|
|
11
|
+
"version": "0.6.58",
|
|
17
12
|
"runtimeHint": "npx",
|
|
18
13
|
"transport": {
|
|
19
14
|
"type": "stdio"
|
|
@@ -22,7 +17,7 @@
|
|
|
22
17
|
{
|
|
23
18
|
"type": "positional",
|
|
24
19
|
"name": "exportPath",
|
|
25
|
-
"description": "File mode: absolute path to a FormLab export JSON (Data → Export JSON). Omit when using cloud mode (set FORMLAB_MCP_TOKEN instead).",
|
|
20
|
+
"description": "File mode: absolute path to a FormLab export JSON (Settings → Data → Export JSON). Omit when using cloud mode (set FORMLAB_MCP_TOKEN instead).",
|
|
26
21
|
"isRequired": false,
|
|
27
22
|
"format": "filepath",
|
|
28
23
|
"value": "/path/to/formlab-export.json"
|
package/vendor/README.md
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Vendored app files — do not edit here
|
|
2
2
|
|
|
3
|
+
**License:** these files are proprietary (Copyright (c) 2026 FormVix Software Solutions LLC),
|
|
4
|
+
licensed only for use as part of an unmodified formlab-mcp installation. See Part 2 of
|
|
5
|
+
`../LICENSE`. They carry no header of their own because they must stay byte-identical
|
|
6
|
+
to the app's files (`test/mcp-theoretical.test.js`), which is what keeps the numbers identical.
|
|
7
|
+
|
|
3
8
|
Exact copies of the FormLab app's theoretical-parameter engine, so the MCP
|
|
4
9
|
server computes the same numbers the Params tab shows (the npm package can't
|
|
5
10
|
reach files outside `mcp/`):
|
package/vendor/cost.js
CHANGED
|
@@ -1867,7 +1867,7 @@ function _weighoutDensityLineHtml(w) {
|
|
|
1867
1867
|
let src = d.how === 'measured' ? 'measured' : (d.how === 'spec' ? 'from spec' : 'entered');
|
|
1868
1868
|
if (d.batchId && typeof db !== 'undefined') {
|
|
1869
1869
|
const b = (db.batches || []).find(x => x.id === d.batchId);
|
|
1870
|
-
if (b) src += ` on <a href="#" onclick="navigate('batch-detail','${
|
|
1870
|
+
if (b) src += ` on <a href="#" onclick="navigate('batch-detail','${escJsAttr(b.id)}');return false" style="color:var(--dk-blue-fg, #2563eb)">${esc(b.uid)}</a>`;
|
|
1871
1871
|
}
|
|
1872
1872
|
const parts = (w.partsSum != null && isFinite(w.partsSum) && Math.abs(w.partsSum - w.qty) > 1e-6)
|
|
1873
1873
|
? ` Pure-ingredient volumes sum to ${+w.partsSum.toFixed(2)} ${esc(w.unit)} — volumes aren't additive on mixing; the masses are what to weigh.` : '';
|
package/SUBMISSION.md
DELETED
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
# MCP submission — ready-to-paste materials
|
|
2
|
-
|
|
3
|
-
Both directory paths are prepped. Path B is fastest; Path A is the canonical
|
|
4
|
-
registry placement. Recommended order: B first (immediate discoverability),
|
|
5
|
-
then A (long-term legitimacy).
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Path B — `awesome-mcp-servers` PR
|
|
10
|
-
|
|
11
|
-
Three lists worth submitting to, in rough order of reach:
|
|
12
|
-
|
|
13
|
-
1. **[punkpeye/awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers)** (~50k stars, primary)
|
|
14
|
-
2. **[appcypher/awesome-mcp-servers](https://github.com/appcypher/awesome-mcp-servers)**
|
|
15
|
-
3. **[wong2/awesome-mcp-servers](https://github.com/wong2/awesome-mcp-servers)**
|
|
16
|
-
|
|
17
|
-
### Entry markdown (drop into the right category section)
|
|
18
|
-
|
|
19
|
-
```markdown
|
|
20
|
-
- [**formlab-mcp**](https://github.com/juliu1980/FormLab/tree/main/mcp) - Local-first read access to your [FormLab](https://formvix.com) lab notebook — formulations, ingredients, batches, samples, test results, DOE matrices. Data stays on your machine; only the LLM's answer travels. [Listed in the official MCP Registry.](https://registry.modelcontextprotocol.io/?search=formlab) [](https://www.npmjs.com/package/formlab-mcp)
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
### Suggested category
|
|
24
|
-
|
|
25
|
-
Best fit on `punkpeye/awesome-mcp-servers`: **"📊 Data Science Tools"** or
|
|
26
|
-
**"🔬 Knowledge & Memory"** depending on how the list is structured. Skim the
|
|
27
|
-
TOC and pick whichever section already has domain-specific lab/research
|
|
28
|
-
servers. If neither fits, **"🛠️ Other Tools and Integrations"** is the safe
|
|
29
|
-
catch-all.
|
|
30
|
-
|
|
31
|
-
### PR title
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
Add formlab-mcp — local-first lab-notebook server for chem/cosmetic R&D
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### PR body
|
|
38
|
-
|
|
39
|
-
```markdown
|
|
40
|
-
Adds **formlab-mcp**, a read-only MCP server that exposes a [FormLab](https://formvix.com)
|
|
41
|
-
lab notebook export to Claude (or any MCP client). FormLab is a browser-based
|
|
42
|
-
local-first ELN for formulation R&D — paints, coatings, cosmetics, polymers.
|
|
43
|
-
|
|
44
|
-
The server lets users ask Claude things like _"which of my formulations use
|
|
45
|
-
silicone fluid at 5%+?"_, _"compare FORM-001 and FORM-004 side by side"_,
|
|
46
|
-
_"what parameters fail acceptance most often?"_, or _"show me the DOE matrix
|
|
47
|
-
at sample grain for Anti-Aging Serum family"_ — all against a JSON export
|
|
48
|
-
that stays on the user's laptop.
|
|
49
|
-
|
|
50
|
-
**37 read-only tools** covering formulations, ingredients, batches, samples,
|
|
51
|
-
test results, DOE matrices + saved designs, similarity, failure analysis,
|
|
52
|
-
test-coverage AND composition design-space mapping (varying ingredients,
|
|
53
|
-
untested gaps, PCA), equipment, test methods, panels, projects and ELN notes.
|
|
54
|
-
|
|
55
|
-
- Repo: https://github.com/juliu1980/FormLab/tree/main/mcp
|
|
56
|
-
- npm: https://www.npmjs.com/package/formlab-mcp
|
|
57
|
-
- Listed in the official MCP Registry: `io.github.juliu1980/formlab-mcp`
|
|
58
|
-
- Node 18+; runs via `npx formlab-mcp /path/to/export.json`
|
|
59
|
-
- License: MIT
|
|
60
|
-
|
|
61
|
-
Happy to move the entry to a different category if there's a better fit.
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Submission workflow
|
|
65
|
-
|
|
66
|
-
For each fork target above:
|
|
67
|
-
|
|
68
|
-
1. Visit https://github.com/punkpeye/awesome-mcp-servers (or the alt)
|
|
69
|
-
2. Open `README.md` → click ✏ (Edit) → GitHub will fork on your behalf
|
|
70
|
-
3. Find the appropriate `###` category section
|
|
71
|
-
4. Paste the **Entry markdown** in alphabetical order within the section
|
|
72
|
-
5. Commit message: `Add formlab-mcp`
|
|
73
|
-
6. Open PR with the **PR title** and **PR body** above
|
|
74
|
-
|
|
75
|
-
Total time for all three: ~15 minutes.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## Path A — Official MCP Registry
|
|
80
|
-
|
|
81
|
-
This places `formlab-mcp` in `https://registry.modelcontextprotocol.io`,
|
|
82
|
-
which is what future MCP-aware tools will query first.
|
|
83
|
-
|
|
84
|
-
### Prereqs
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
# Go 1.24+ — needed to build mcp-publisher
|
|
88
|
-
brew install go
|
|
89
|
-
|
|
90
|
-
# Build the publisher CLI
|
|
91
|
-
git clone https://github.com/modelcontextprotocol/registry
|
|
92
|
-
cd registry
|
|
93
|
-
make publisher # produces ./bin/mcp-publisher
|
|
94
|
-
sudo mv bin/mcp-publisher /usr/local/bin/ # or add to PATH
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### Manifest
|
|
98
|
-
|
|
99
|
-
Already written to `mcp/server.json` in this repo. Uses:
|
|
100
|
-
- Namespace: `io.github.juliu1980/formlab-mcp` (GitHub OAuth proves ownership)
|
|
101
|
-
- Status: `active`
|
|
102
|
-
- Repository: `https://github.com/juliu1980/FormLab` with subfolder `mcp`
|
|
103
|
-
- Version: pulled from `package.json` (currently `0.6.12`)
|
|
104
|
-
- Package: npm `formlab-mcp` with stdio transport + positional `exportPath` arg
|
|
105
|
-
|
|
106
|
-
### Publish (the OAuth step is interactive)
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
cd ~/GitHub/formlab/mcp
|
|
110
|
-
mcp-publisher login # opens GitHub OAuth in your browser as juliu1980
|
|
111
|
-
mcp-publisher publish # reads server.json and submits
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
### Verify
|
|
115
|
-
|
|
116
|
-
After publish, the server appears at:
|
|
117
|
-
- `https://registry.modelcontextprotocol.io/v0/servers?search=formlab`
|
|
118
|
-
|
|
119
|
-
### Versioning future updates
|
|
120
|
-
|
|
121
|
-
Bump `package.json` `version` AND `mcp/server.json`'s `version` + the package
|
|
122
|
-
version, then re-run `mcp-publisher publish`. The CLI rejects duplicate
|
|
123
|
-
version submissions.
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## After both paths land
|
|
128
|
-
|
|
129
|
-
- Post to X / LinkedIn announcing it (memory file has a draft)
|
|
130
|
-
- Cross-post to r/cosmeticchemistry, r/paint, r/Chemistry — any lab-adjacent
|
|
131
|
-
subreddits where local-first + AI lands well
|
|
132
|
-
- Add a section to the formvix.com landing page linking to the registry entry
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"ref":"ufizhypibwqqpavhxdwt","name":"FormLab","organization_id":"pbplgvokbayhflgrvygl","organization_slug":"pbplgvokbayhflgrvygl"}
|