@netpad/mcp-server 2.0.0 → 2.1.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.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,35 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.1] - 2026-01-16
9
+
10
+ ### Added
11
+
12
+ #### AI-Assisted Workflow Configuration
13
+ - Added `aiAssist` metadata to workflow node config fields, enabling AI-powered configuration generation in the NetPad UI
14
+ - Supported fields with AI assistance:
15
+ - `mongodb-query.filter` - Generate MongoDB queries from natural language
16
+ - `transform.expression` - Generate JavaScript transform expressions
17
+ - `http-request.url` - Generate API URLs dynamically
18
+ - `http-request.headers` - Generate HTTP headers
19
+ - `http-request.body` - Generate request payloads
20
+ - `email-send.to` - Generate recipient expressions
21
+ - `email-send.subject` - Generate email subjects
22
+ - `email-send.body` - Generate email content
23
+ - `ai-generate.prompt` - Generate AI prompts
24
+ - `ai-classify.categories` - Generate classification categories
25
+ - `ai-classify.instructions` - Generate classification instructions
26
+ - `code.code` - Generate JavaScript code
27
+
28
+ #### New Node Type
29
+ - Added `code` node type to `custom` category for executing custom JavaScript code
30
+
31
+ ### Changed
32
+ - Added `AIAssistConfig` and `NodeConfigFieldDefinition` type exports for external type checking
33
+ - Updated README with AI-assisted configuration documentation
34
+
35
+ ---
36
+
8
37
  ## [2.0.0] - 2026-01-15
9
38
 
10
39
  ### Added
package/README.md CHANGED
@@ -34,6 +34,7 @@ An MCP (Model Context Protocol) server for AI-assisted NetPad application develo
34
34
  - **Logic Nodes**: Conditional routing, switch, filter, loop
35
35
  - **Data Nodes**: Transform, code execution, variable management
36
36
  - **Integrations**: MongoDB, HTTP, Email, Slack, Google Sheets
37
+ - **AI-Assisted Configuration**: Many node fields support AI generation (transforms, code, prompts, HTTP requests)
37
38
 
38
39
  ### Conversational Forms & RAG
39
40
  - **AI-Powered Forms**: Natural language data collection
@@ -257,6 +258,20 @@ Pre-built automation patterns:
257
258
  | `webhook-to-database` | Process webhooks to database |
258
259
  | `scheduled-report` | Generate scheduled reports |
259
260
 
261
+ ## AI-Assisted Node Configuration
262
+
263
+ Many workflow node fields support AI-powered configuration generation. The `aiAssist` metadata on config fields indicates which fields can use AI generation in the NetPad UI:
264
+
265
+ | Node Type | Field | AI Assistance |
266
+ |-----------|-------|---------------|
267
+ | `mongodb-query` | filter | Generate MongoDB queries from natural language |
268
+ | `transform` | expression | Generate JavaScript transforms |
269
+ | `http-request` | url, headers, body | Generate URLs, headers, and request bodies |
270
+ | `email-send` | to, subject, body | Generate email content |
271
+ | `ai-generate` | prompt | Generate AI prompts |
272
+ | `ai-classify` | categories, instructions | Generate classification rules |
273
+ | `code` | code | Generate JavaScript code |
274
+
260
275
  ## Resources
261
276
 
262
277
  The server exposes documentation as MCP resources:
package/dist/index.js CHANGED
@@ -17471,7 +17471,7 @@ var WORKFLOW_NODE_TYPES = {
17471
17471
  { key: "database", label: "Database", type: "string", required: true },
17472
17472
  { key: "collection", label: "Collection", type: "string", required: true },
17473
17473
  { key: "operation", label: "Operation", type: "select", options: ["find", "findOne", "aggregate"] },
17474
- { key: "filter", label: "Filter", type: "json" },
17474
+ { key: "filter", label: "Filter", type: "json", aiAssist: { enabled: true, promptHint: 'e.g., "Find users created in the last 7 days"', buttonLabel: "Generate Query" } },
17475
17475
  { key: "projection", label: "Projection", type: "json" },
17476
17476
  { key: "sort", label: "Sort", type: "json" },
17477
17477
  { key: "limit", label: "Limit", type: "number" }
@@ -17505,7 +17505,7 @@ var WORKFLOW_NODE_TYPES = {
17505
17505
  inputs: [{ id: "input", label: "Input", type: "any" }],
17506
17506
  outputs: [{ id: "output", label: "Output", type: "any" }],
17507
17507
  configFields: [
17508
- { key: "expression", label: "Transform Expression", type: "expression", required: true }
17508
+ { key: "expression", label: "Transform Expression", type: "expression", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Extract emails from user array" or "Add processed timestamp"', buttonLabel: "Generate Transform" } }
17509
17509
  ]
17510
17510
  },
17511
17511
  {
@@ -17537,9 +17537,9 @@ var WORKFLOW_NODE_TYPES = {
17537
17537
  inputs: [{ id: "data", label: "Template Data", type: "object" }],
17538
17538
  outputs: [{ id: "result", label: "Result", type: "object" }],
17539
17539
  configFields: [
17540
- { key: "to", label: "To", type: "expression", required: true },
17541
- { key: "subject", label: "Subject", type: "expression", required: true },
17542
- { key: "body", label: "Body", type: "richtext", required: true },
17540
+ { key: "to", label: "To", type: "expression", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Send to form submitter email"', buttonLabel: "Generate Recipients" } },
17541
+ { key: "subject", label: "Subject", type: "expression", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Create a thank you subject with user name"', buttonLabel: "Generate Subject" } },
17542
+ { key: "body", label: "Body", type: "richtext", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Write a professional confirmation email"', buttonLabel: "Generate Body" } },
17543
17543
  { key: "from", label: "From", type: "string" },
17544
17544
  { key: "replyTo", label: "Reply To", type: "string" }
17545
17545
  ]
@@ -17558,10 +17558,10 @@ var WORKFLOW_NODE_TYPES = {
17558
17558
  { id: "status", label: "Status Code", type: "number" }
17559
17559
  ],
17560
17560
  configFields: [
17561
- { key: "url", label: "URL", type: "expression", required: true },
17561
+ { key: "url", label: "URL", type: "expression", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Build Slack webhook URL with channel"', buttonLabel: "Generate URL" } },
17562
17562
  { key: "method", label: "Method", type: "select", options: ["GET", "POST", "PUT", "PATCH", "DELETE"] },
17563
- { key: "headers", label: "Headers", type: "json" },
17564
- { key: "body", label: "Body", type: "json" },
17563
+ { key: "headers", label: "Headers", type: "json", aiAssist: { enabled: true, promptHint: 'e.g., "Add authorization and content-type headers"', buttonLabel: "Generate Headers" } },
17564
+ { key: "body", label: "Body", type: "json", aiAssist: { enabled: true, promptHint: 'e.g., "Create Slack message payload from form data"', buttonLabel: "Generate Body" } },
17565
17565
  { key: "authentication", label: "Authentication", type: "select", options: ["none", "basic", "bearer", "api_key"] }
17566
17566
  ]
17567
17567
  },
@@ -17593,7 +17593,7 @@ var WORKFLOW_NODE_TYPES = {
17593
17593
  inputs: [{ id: "context", label: "Context", type: "object" }],
17594
17594
  outputs: [{ id: "response", label: "AI Response", type: "string" }],
17595
17595
  configFields: [
17596
- { key: "prompt", label: "Prompt", type: "richtext", required: true },
17596
+ { key: "prompt", label: "Prompt", type: "richtext", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Write a prompt to summarize customer feedback"', buttonLabel: "Generate Prompt" } },
17597
17597
  { key: "model", label: "Model", type: "select", options: ["gpt-4", "gpt-3.5-turbo", "claude-3"] },
17598
17598
  { key: "temperature", label: "Temperature", type: "number", default: 0.7 },
17599
17599
  { key: "maxTokens", label: "Max Tokens", type: "number", default: 1e3 }
@@ -17613,8 +17613,26 @@ var WORKFLOW_NODE_TYPES = {
17613
17613
  { id: "confidence", label: "Confidence", type: "number" }
17614
17614
  ],
17615
17615
  configFields: [
17616
- { key: "categories", label: "Categories", type: "array", itemType: "string", required: true },
17617
- { key: "instructions", label: "Classification Instructions", type: "richtext" }
17616
+ { key: "categories", label: "Categories", type: "array", itemType: "string", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Create sentiment categories" or "Support ticket priorities"', buttonLabel: "Generate Categories" } },
17617
+ { key: "instructions", label: "Classification Instructions", type: "richtext", aiAssist: { enabled: true, promptHint: 'e.g., "Write instructions to classify support tickets by urgency"', buttonLabel: "Generate Instructions" } }
17618
+ ]
17619
+ }
17620
+ ],
17621
+ // Custom
17622
+ custom: [
17623
+ {
17624
+ type: "code",
17625
+ name: "Custom Code",
17626
+ description: "Execute custom JavaScript code",
17627
+ icon: "code",
17628
+ color: "#455A64",
17629
+ category: "custom",
17630
+ stage: "processor",
17631
+ inputs: [{ id: "input", label: "Input", type: "any" }],
17632
+ outputs: [{ id: "output", label: "Output", type: "any" }],
17633
+ configFields: [
17634
+ { key: "code", label: "JavaScript Code", type: "code", required: true, aiAssist: { enabled: true, promptHint: 'e.g., "Calculate order total from items array"', buttonLabel: "Generate Code" } },
17635
+ { key: "timeout", label: "Timeout (ms)", type: "number", default: 5e3 }
17618
17636
  ]
17619
17637
  }
17620
17638
  ]