ds-mcp-flowise 1.0.0 → 1.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/README.md +129 -90
- package/dist/index.js +269 -10
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +320 -10
package/README.md
CHANGED
|
@@ -1,55 +1,122 @@
|
|
|
1
1
|
# DS-MCP-FLOWISE
|
|
2
2
|
|
|
3
|
-
MCP (Model Context Protocol) server
|
|
3
|
+
MCP (Model Context Protocol) server that gives AI assistants (Claude, GPT, etc.) deep knowledge of [Flowise](https://flowiseai.com/) nodes so they can help you design, build, and deploy chatflows and agentflows.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## What This Does
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- **
|
|
7
|
+
When connected to Claude Code (or other MCP clients), this server lets the AI:
|
|
8
|
+
- Know all 311 Flowise nodes and their configurations
|
|
9
|
+
- Understand how nodes connect together
|
|
10
|
+
- Design complete flows based on your requirements
|
|
11
|
+
- Output valid JSON you can import into Flowise
|
|
12
|
+
- **Deploy flows directly to your Flowise instance** (optional API integration)
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Quick Start
|
|
15
15
|
|
|
16
|
-
###
|
|
16
|
+
### 1. Add to Claude Code
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
# Clone the repository
|
|
20
|
-
git clone https://github.com/dtsoden/DS-MCP-FLOWISE.git
|
|
21
|
-
cd DS-MCP-FLOWISE
|
|
18
|
+
Add this to your Claude Code MCP configuration (`claude_desktop_config.json` or via settings):
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"flowise": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "ds-mcp-flowise"]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
25
30
|
|
|
26
|
-
|
|
27
|
-
npm run extract
|
|
28
|
-
npm run prepare-db
|
|
31
|
+
That's it. No cloning, no building. The `npx` command downloads and runs it automatically.
|
|
29
32
|
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
### 2. Start a Conversation
|
|
34
|
+
|
|
35
|
+
Open Claude Code and describe what you want to build:
|
|
36
|
+
|
|
37
|
+
> "Build me a RAG chatbot that uses Pinecone for vector storage and OpenAI for the LLM"
|
|
38
|
+
|
|
39
|
+
### 3. Get Your Flow
|
|
40
|
+
|
|
41
|
+
Claude will use the MCP tools to:
|
|
42
|
+
- Find the right nodes (ChatOpenAI, Pinecone, embeddings, etc.)
|
|
43
|
+
- Check their schemas and required inputs
|
|
44
|
+
- Design the complete flow
|
|
45
|
+
- Output the JSON with all nodes and edges
|
|
46
|
+
|
|
47
|
+
### 4. Import into Flowise
|
|
48
|
+
|
|
49
|
+
1. Open Flowise
|
|
50
|
+
2. Create a new Chatflow or Agentflow
|
|
51
|
+
3. Click the menu (⋮) → **Load Chatflow**
|
|
52
|
+
4. Paste the JSON Claude gave you
|
|
53
|
+
5. Configure credentials (API keys) for each node
|
|
54
|
+
6. Save and test
|
|
55
|
+
|
|
56
|
+
## Flowise API Integration (Optional)
|
|
57
|
+
|
|
58
|
+
Instead of manually importing JSON, you can connect directly to your Flowise instance to create, update, and manage chatflows via the API.
|
|
59
|
+
|
|
60
|
+
### Setup
|
|
61
|
+
|
|
62
|
+
1. Create a `.env` file in the project root (or in your working directory):
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
FLOWISE_API_URL=https://your-flowise-instance.com
|
|
66
|
+
FLOWISE_API_KEY=your-api-key-here
|
|
32
67
|
```
|
|
33
68
|
|
|
34
|
-
|
|
69
|
+
2. Get your API key from Flowise:
|
|
70
|
+
- Open your Flowise instance
|
|
71
|
+
- Go to **Settings** → **API Keys**
|
|
72
|
+
- Create a new API key or copy an existing one
|
|
73
|
+
|
|
74
|
+
3. The MCP server will automatically load credentials from `.env` when it starts.
|
|
75
|
+
|
|
76
|
+
### Usage
|
|
77
|
+
|
|
78
|
+
Once configured, you can ask Claude:
|
|
79
|
+
|
|
80
|
+
- "Test the connection to my Flowise instance"
|
|
81
|
+
- "List all my chatflows"
|
|
82
|
+
- "Create a new chatflow with this design and deploy it"
|
|
83
|
+
- "Update the existing chatflow with these changes"
|
|
84
|
+
|
|
85
|
+
### Security Notes
|
|
35
86
|
|
|
36
|
-
|
|
87
|
+
- Never commit your `.env` file to version control
|
|
88
|
+
- The `.env` file is already in `.gitignore`
|
|
89
|
+
- API keys should be kept private and rotated periodically
|
|
37
90
|
|
|
91
|
+
## Alternative Installation Methods
|
|
92
|
+
|
|
93
|
+
### Global Install (npm)
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm install -g ds-mcp-flowise
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Then in your MCP config:
|
|
38
100
|
```json
|
|
39
101
|
{
|
|
40
102
|
"mcpServers": {
|
|
41
103
|
"flowise": {
|
|
42
|
-
"command": "
|
|
43
|
-
"args": ["/path/to/DS-MCP-FLOWISE/dist/index.js"]
|
|
104
|
+
"command": "ds-mcp-flowise"
|
|
44
105
|
}
|
|
45
106
|
}
|
|
46
107
|
}
|
|
47
108
|
```
|
|
48
109
|
|
|
49
|
-
###
|
|
110
|
+
### Build from Source
|
|
50
111
|
|
|
51
|
-
|
|
112
|
+
```bash
|
|
113
|
+
git clone https://github.com/dtsoden/DS-MCP-FLOWISE.git
|
|
114
|
+
cd DS-MCP-FLOWISE
|
|
115
|
+
npm install
|
|
116
|
+
npm run build
|
|
117
|
+
```
|
|
52
118
|
|
|
119
|
+
Then in your MCP config:
|
|
53
120
|
```json
|
|
54
121
|
{
|
|
55
122
|
"mcpServers": {
|
|
@@ -61,23 +128,23 @@ Add to `claude_desktop_config.json`:
|
|
|
61
128
|
}
|
|
62
129
|
```
|
|
63
130
|
|
|
64
|
-
## Tools
|
|
131
|
+
## Available Tools
|
|
65
132
|
|
|
66
133
|
### Node Discovery
|
|
67
134
|
|
|
68
135
|
| Tool | Description |
|
|
69
136
|
|------|-------------|
|
|
70
|
-
| `list_categories` | List all node categories with counts |
|
|
137
|
+
| `list_categories` | List all 26 node categories with counts |
|
|
71
138
|
| `list_nodes` | List nodes, optionally filtered by category |
|
|
72
139
|
| `get_node_schema` | Get detailed schema for a node including all inputs |
|
|
73
|
-
| `search_nodes` |
|
|
140
|
+
| `search_nodes` | Search nodes by keyword |
|
|
74
141
|
| `find_compatible_nodes` | Find nodes that can connect to a given node |
|
|
75
142
|
|
|
76
143
|
### Template Library
|
|
77
144
|
|
|
78
145
|
| Tool | Description |
|
|
79
146
|
|------|-------------|
|
|
80
|
-
| `list_templates` | List marketplace templates by type |
|
|
147
|
+
| `list_templates` | List 64 marketplace templates by type |
|
|
81
148
|
| `get_template` | Get complete template with nodes and edges |
|
|
82
149
|
|
|
83
150
|
### Flow Building
|
|
@@ -87,86 +154,58 @@ Add to `claude_desktop_config.json`:
|
|
|
87
154
|
| `validate_flow` | Validate a flow's nodes and connections |
|
|
88
155
|
| `generate_flow_skeleton` | Generate a starting flow for common use cases |
|
|
89
156
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
### Discover Available Nodes
|
|
93
|
-
|
|
94
|
-
```
|
|
95
|
-
Use list_categories to see all node types
|
|
96
|
-
|
|
97
|
-
Use list_nodes with category="Chat Models" to see chat models
|
|
98
|
-
|
|
99
|
-
Use search_nodes with query="vector database" to find vector stores
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Build a RAG Chatbot
|
|
157
|
+
### Flowise API (requires .env configuration)
|
|
103
158
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
159
|
+
| Tool | Description |
|
|
160
|
+
|------|-------------|
|
|
161
|
+
| `flowise_test_connection` | Test connection to your Flowise instance |
|
|
162
|
+
| `flowise_list_chatflows` | List all chatflows in your instance |
|
|
163
|
+
| `flowise_get_chatflow` | Get details of a specific chatflow |
|
|
164
|
+
| `flowise_create_chatflow` | Create and deploy a new chatflow |
|
|
165
|
+
| `flowise_update_chatflow` | Update an existing chatflow |
|
|
166
|
+
| `flowise_delete_chatflow` | Delete a chatflow |
|
|
112
167
|
|
|
113
|
-
|
|
114
|
-
Use generate_flow_skeleton with use_case="rag_chatbot"
|
|
115
|
-
|
|
116
|
-
Supported use cases:
|
|
117
|
-
- simple_chatbot
|
|
118
|
-
- rag_chatbot
|
|
119
|
-
- conversational_agent
|
|
120
|
-
- document_qa
|
|
121
|
-
- api_agent
|
|
122
|
-
- multi_agent
|
|
123
|
-
```
|
|
168
|
+
> **Note:** The Flowise API currently only supports **chatflows**. Agentflows must be created through the Flowise UI by importing the generated JSON.
|
|
124
169
|
|
|
125
|
-
##
|
|
170
|
+
## Example Prompts
|
|
126
171
|
|
|
127
|
-
|
|
172
|
+
Once connected, try asking Claude:
|
|
128
173
|
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
174
|
+
- "What vector stores does Flowise support?"
|
|
175
|
+
- "Show me how to build a simple chatbot with memory"
|
|
176
|
+
- "Create a RAG flow using Pinecone and Claude"
|
|
177
|
+
- "What nodes can connect to a ConversationChain?"
|
|
178
|
+
- "Build me an agent that can search the web and query a database"
|
|
132
179
|
|
|
133
|
-
##
|
|
180
|
+
## What's Included
|
|
134
181
|
|
|
135
|
-
|
|
182
|
+
- **311 Flowise nodes** with full schemas
|
|
183
|
+
- **1,915 input parameters** documented
|
|
184
|
+
- **26 node categories** (Chat Models, Vector Stores, Tools, etc.)
|
|
185
|
+
- **64 marketplace templates** as examples
|
|
186
|
+
- **SQLite database** for fast queries
|
|
136
187
|
|
|
137
|
-
|
|
138
|
-
- **node_inputs** - Input parameters for each node
|
|
139
|
-
- **categories** - Node categories with counts
|
|
140
|
-
- **templates** - Marketplace templates
|
|
141
|
-
- **nodes_fts** - Full-text search index for nodes
|
|
142
|
-
- **templates_fts** - Full-text search index for templates
|
|
188
|
+
## Updating the Node Database
|
|
143
189
|
|
|
144
|
-
|
|
190
|
+
To update with the latest Flowise nodes:
|
|
145
191
|
|
|
146
192
|
```bash
|
|
147
|
-
|
|
148
|
-
|
|
193
|
+
git clone https://github.com/dtsoden/DS-MCP-FLOWISE.git
|
|
194
|
+
cd DS-MCP-FLOWISE
|
|
195
|
+
npm install
|
|
149
196
|
|
|
150
|
-
#
|
|
197
|
+
# This clones Flowise and extracts all node definitions
|
|
151
198
|
npm run extract
|
|
152
199
|
|
|
153
|
-
#
|
|
200
|
+
# This rebuilds the SQLite database
|
|
154
201
|
npm run prepare-db
|
|
155
202
|
|
|
156
|
-
# Build for production
|
|
157
203
|
npm run build
|
|
158
204
|
```
|
|
159
205
|
|
|
160
|
-
## How It Works
|
|
161
|
-
|
|
162
|
-
1. **Extraction**: Parses Flowise source code to extract all node definitions
|
|
163
|
-
2. **Database**: Stores nodes, inputs, and templates in SQLite for fast queries
|
|
164
|
-
3. **MCP Server**: Exposes tools and resources via Model Context Protocol
|
|
165
|
-
4. **AI Integration**: Claude/GPT can query nodes, search, and validate flows
|
|
166
|
-
|
|
167
206
|
## Credits
|
|
168
207
|
|
|
169
|
-
- [Flowise](https://github.com/FlowiseAI/Flowise) - The
|
|
208
|
+
- [Flowise](https://github.com/FlowiseAI/Flowise) - The no-code LLM orchestration platform
|
|
170
209
|
- Inspired by [n8n-mcp](https://github.com/czlonkowski/n8n-mcp) architecture
|
|
171
210
|
|
|
172
211
|
## License
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,34 @@ import * as fs from 'fs';
|
|
|
15
15
|
import { fileURLToPath } from 'url';
|
|
16
16
|
const __filename = fileURLToPath(import.meta.url);
|
|
17
17
|
const __dirname = path.dirname(__filename);
|
|
18
|
+
// Load .env file if it exists
|
|
19
|
+
function loadEnv() {
|
|
20
|
+
const envPaths = [
|
|
21
|
+
path.join(process.cwd(), '.env'),
|
|
22
|
+
path.join(__dirname, '..', '.env'),
|
|
23
|
+
path.join(__dirname, '..', '..', '.env'),
|
|
24
|
+
];
|
|
25
|
+
for (const envPath of envPaths) {
|
|
26
|
+
if (fs.existsSync(envPath)) {
|
|
27
|
+
const envContent = fs.readFileSync(envPath, 'utf-8');
|
|
28
|
+
for (const line of envContent.split('\n')) {
|
|
29
|
+
const trimmed = line.trim();
|
|
30
|
+
if (trimmed && !trimmed.startsWith('#')) {
|
|
31
|
+
const [key, ...valueParts] = trimmed.split('=');
|
|
32
|
+
const value = valueParts.join('=');
|
|
33
|
+
if (key && value) {
|
|
34
|
+
process.env[key.trim()] = value.trim();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
loadEnv();
|
|
43
|
+
// Flowise API configuration
|
|
44
|
+
const FLOWISE_API_URL = process.env.FLOWISE_API_URL || '';
|
|
45
|
+
const FLOWISE_API_KEY = process.env.FLOWISE_API_KEY || '';
|
|
18
46
|
// Find database path
|
|
19
47
|
function findDatabasePath() {
|
|
20
48
|
const possiblePaths = [
|
|
@@ -50,10 +78,33 @@ function queryOne(sql, params = []) {
|
|
|
50
78
|
const results = query(sql, params);
|
|
51
79
|
return results.length > 0 ? results[0] : null;
|
|
52
80
|
}
|
|
81
|
+
// === FLOWISE API HELPERS ===
|
|
82
|
+
async function flowiseApiRequest(endpoint, method = 'GET', body) {
|
|
83
|
+
if (!FLOWISE_API_URL) {
|
|
84
|
+
throw new Error('FLOWISE_API_URL not configured. Set it in .env file.');
|
|
85
|
+
}
|
|
86
|
+
const url = `${FLOWISE_API_URL.replace(/\/$/, '')}/api/v1${endpoint}`;
|
|
87
|
+
const headers = {
|
|
88
|
+
'Content-Type': 'application/json',
|
|
89
|
+
};
|
|
90
|
+
if (FLOWISE_API_KEY) {
|
|
91
|
+
headers['Authorization'] = `Bearer ${FLOWISE_API_KEY}`;
|
|
92
|
+
}
|
|
93
|
+
const response = await fetch(url, {
|
|
94
|
+
method,
|
|
95
|
+
headers,
|
|
96
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
97
|
+
});
|
|
98
|
+
if (!response.ok) {
|
|
99
|
+
const errorText = await response.text();
|
|
100
|
+
throw new Error(`Flowise API error (${response.status}): ${errorText}`);
|
|
101
|
+
}
|
|
102
|
+
return response.json();
|
|
103
|
+
}
|
|
53
104
|
// Create MCP server
|
|
54
105
|
const server = new Server({
|
|
55
106
|
name: 'ds-mcp-flowise',
|
|
56
|
-
version: '1.
|
|
107
|
+
version: '1.1.0',
|
|
57
108
|
}, {
|
|
58
109
|
capabilities: {
|
|
59
110
|
tools: {},
|
|
@@ -63,6 +114,7 @@ const server = new Server({
|
|
|
63
114
|
});
|
|
64
115
|
// === TOOL DEFINITIONS ===
|
|
65
116
|
const TOOLS = [
|
|
117
|
+
// Node discovery tools
|
|
66
118
|
{
|
|
67
119
|
name: 'list_categories',
|
|
68
120
|
description: 'List all available Flowise node categories with node counts',
|
|
@@ -224,6 +276,113 @@ const TOOLS = [
|
|
|
224
276
|
required: ['use_case'],
|
|
225
277
|
},
|
|
226
278
|
},
|
|
279
|
+
// Flowise API tools
|
|
280
|
+
{
|
|
281
|
+
name: 'flowise_list_chatflows',
|
|
282
|
+
description: 'List all chatflows in the connected Flowise instance. Requires FLOWISE_API_URL and FLOWISE_API_KEY to be configured.',
|
|
283
|
+
inputSchema: {
|
|
284
|
+
type: 'object',
|
|
285
|
+
properties: {},
|
|
286
|
+
required: [],
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: 'flowise_get_chatflow',
|
|
291
|
+
description: 'Get details of a specific chatflow by ID from the connected Flowise instance.',
|
|
292
|
+
inputSchema: {
|
|
293
|
+
type: 'object',
|
|
294
|
+
properties: {
|
|
295
|
+
id: {
|
|
296
|
+
type: 'string',
|
|
297
|
+
description: 'The chatflow ID',
|
|
298
|
+
},
|
|
299
|
+
},
|
|
300
|
+
required: ['id'],
|
|
301
|
+
},
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
name: 'flowise_create_chatflow',
|
|
305
|
+
description: 'Create a new chatflow in the connected Flowise instance. This pushes your designed flow directly to Flowise.',
|
|
306
|
+
inputSchema: {
|
|
307
|
+
type: 'object',
|
|
308
|
+
properties: {
|
|
309
|
+
name: {
|
|
310
|
+
type: 'string',
|
|
311
|
+
description: 'Name for the chatflow',
|
|
312
|
+
},
|
|
313
|
+
nodes: {
|
|
314
|
+
type: 'array',
|
|
315
|
+
description: 'Array of node objects',
|
|
316
|
+
items: { type: 'object' },
|
|
317
|
+
},
|
|
318
|
+
edges: {
|
|
319
|
+
type: 'array',
|
|
320
|
+
description: 'Array of edge objects',
|
|
321
|
+
items: { type: 'object' },
|
|
322
|
+
},
|
|
323
|
+
deployed: {
|
|
324
|
+
type: 'boolean',
|
|
325
|
+
description: 'Whether to deploy immediately (default: false)',
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
required: ['name', 'nodes', 'edges'],
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
name: 'flowise_update_chatflow',
|
|
333
|
+
description: 'Update an existing chatflow in the connected Flowise instance.',
|
|
334
|
+
inputSchema: {
|
|
335
|
+
type: 'object',
|
|
336
|
+
properties: {
|
|
337
|
+
id: {
|
|
338
|
+
type: 'string',
|
|
339
|
+
description: 'The chatflow ID to update',
|
|
340
|
+
},
|
|
341
|
+
name: {
|
|
342
|
+
type: 'string',
|
|
343
|
+
description: 'New name for the chatflow (optional)',
|
|
344
|
+
},
|
|
345
|
+
nodes: {
|
|
346
|
+
type: 'array',
|
|
347
|
+
description: 'Updated array of node objects',
|
|
348
|
+
items: { type: 'object' },
|
|
349
|
+
},
|
|
350
|
+
edges: {
|
|
351
|
+
type: 'array',
|
|
352
|
+
description: 'Updated array of edge objects',
|
|
353
|
+
items: { type: 'object' },
|
|
354
|
+
},
|
|
355
|
+
deployed: {
|
|
356
|
+
type: 'boolean',
|
|
357
|
+
description: 'Whether the chatflow should be deployed',
|
|
358
|
+
},
|
|
359
|
+
},
|
|
360
|
+
required: ['id'],
|
|
361
|
+
},
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
name: 'flowise_delete_chatflow',
|
|
365
|
+
description: 'Delete a chatflow from the connected Flowise instance. Use with caution!',
|
|
366
|
+
inputSchema: {
|
|
367
|
+
type: 'object',
|
|
368
|
+
properties: {
|
|
369
|
+
id: {
|
|
370
|
+
type: 'string',
|
|
371
|
+
description: 'The chatflow ID to delete',
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
required: ['id'],
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
name: 'flowise_test_connection',
|
|
379
|
+
description: 'Test the connection to the configured Flowise instance. Use this to verify your API URL and key are correct.',
|
|
380
|
+
inputSchema: {
|
|
381
|
+
type: 'object',
|
|
382
|
+
properties: {},
|
|
383
|
+
required: [],
|
|
384
|
+
},
|
|
385
|
+
},
|
|
227
386
|
];
|
|
228
387
|
// === TOOL IMPLEMENTATIONS ===
|
|
229
388
|
function listCategories() {
|
|
@@ -265,7 +424,6 @@ function getNodeSchema(name) {
|
|
|
265
424
|
WHERE node_name = ?
|
|
266
425
|
ORDER BY additional_params, input_label
|
|
267
426
|
`, [name]);
|
|
268
|
-
// Parse JSON fields
|
|
269
427
|
const schema = {
|
|
270
428
|
...node,
|
|
271
429
|
base_classes: JSON.parse(node.base_classes || '[]'),
|
|
@@ -335,10 +493,8 @@ function findCompatibleNodes(nodeName, direction = 'inputs') {
|
|
|
335
493
|
}
|
|
336
494
|
const baseClasses = JSON.parse(node.base_classes || '[]');
|
|
337
495
|
if (direction === 'inputs') {
|
|
338
|
-
// Find nodes whose outputs (base_classes) match this node's input types
|
|
339
496
|
const inputs = query(`SELECT input_type FROM node_inputs WHERE node_name = ?`, [nodeName]);
|
|
340
497
|
const inputTypes = inputs.map((i) => i.input_type);
|
|
341
|
-
// Find nodes that have these types in their base_classes
|
|
342
498
|
const allNodes = query(`SELECT name, label, category, base_classes FROM nodes`);
|
|
343
499
|
const compatible = allNodes.filter((n) => {
|
|
344
500
|
const nodeBaseClasses = JSON.parse(n.base_classes || '[]');
|
|
@@ -351,7 +507,6 @@ function findCompatibleNodes(nodeName, direction = 'inputs') {
|
|
|
351
507
|
return JSON.stringify({ compatible_inputs: compatible }, null, 2);
|
|
352
508
|
}
|
|
353
509
|
else {
|
|
354
|
-
// Find nodes that accept this node's output types
|
|
355
510
|
const allInputs = query(`
|
|
356
511
|
SELECT DISTINCT n.name, n.label, n.category, ni.input_type
|
|
357
512
|
FROM nodes n
|
|
@@ -362,7 +517,6 @@ function findCompatibleNodes(nodeName, direction = 'inputs') {
|
|
|
362
517
|
label: i.label,
|
|
363
518
|
category: i.category,
|
|
364
519
|
}));
|
|
365
|
-
// Deduplicate
|
|
366
520
|
const unique = Array.from(new Map(compatible.map((c) => [c.name, c])).values());
|
|
367
521
|
return JSON.stringify({ compatible_outputs: unique }, null, 2);
|
|
368
522
|
}
|
|
@@ -370,7 +524,6 @@ function findCompatibleNodes(nodeName, direction = 'inputs') {
|
|
|
370
524
|
function validateFlow(nodes, edges) {
|
|
371
525
|
const errors = [];
|
|
372
526
|
const warnings = [];
|
|
373
|
-
// Check all nodes exist
|
|
374
527
|
const nodeNames = new Set();
|
|
375
528
|
for (const node of nodes) {
|
|
376
529
|
const nodeName = node.data?.name || node.type || node.name;
|
|
@@ -384,7 +537,6 @@ function validateFlow(nodes, edges) {
|
|
|
384
537
|
}
|
|
385
538
|
nodeNames.add(node.id);
|
|
386
539
|
}
|
|
387
|
-
// Check all edges reference valid nodes
|
|
388
540
|
for (const edge of edges) {
|
|
389
541
|
if (!nodeNames.has(edge.source)) {
|
|
390
542
|
errors.push(`Edge references non-existent source node: ${edge.source}`);
|
|
@@ -501,6 +653,85 @@ function generateFlowSkeleton(useCase, chatModel) {
|
|
|
501
653
|
}
|
|
502
654
|
return JSON.stringify(skeleton, null, 2);
|
|
503
655
|
}
|
|
656
|
+
// === FLOWISE API IMPLEMENTATIONS ===
|
|
657
|
+
async function flowiseTestConnection() {
|
|
658
|
+
if (!FLOWISE_API_URL) {
|
|
659
|
+
return JSON.stringify({
|
|
660
|
+
connected: false,
|
|
661
|
+
error: 'FLOWISE_API_URL not configured. Create a .env file with FLOWISE_API_URL and FLOWISE_API_KEY.',
|
|
662
|
+
});
|
|
663
|
+
}
|
|
664
|
+
try {
|
|
665
|
+
const chatflows = await flowiseApiRequest('/chatflows');
|
|
666
|
+
return JSON.stringify({
|
|
667
|
+
connected: true,
|
|
668
|
+
url: FLOWISE_API_URL,
|
|
669
|
+
chatflows_count: Array.isArray(chatflows) ? chatflows.length : 0,
|
|
670
|
+
}, null, 2);
|
|
671
|
+
}
|
|
672
|
+
catch (error) {
|
|
673
|
+
return JSON.stringify({
|
|
674
|
+
connected: false,
|
|
675
|
+
url: FLOWISE_API_URL,
|
|
676
|
+
error: String(error),
|
|
677
|
+
}, null, 2);
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
async function flowiseListChatflows() {
|
|
681
|
+
const chatflows = await flowiseApiRequest('/chatflows');
|
|
682
|
+
// Return summary info for each chatflow
|
|
683
|
+
const summary = chatflows.map((cf) => ({
|
|
684
|
+
id: cf.id,
|
|
685
|
+
name: cf.name,
|
|
686
|
+
deployed: cf.deployed,
|
|
687
|
+
createdDate: cf.createdDate,
|
|
688
|
+
updatedDate: cf.updatedDate,
|
|
689
|
+
}));
|
|
690
|
+
return JSON.stringify(summary, null, 2);
|
|
691
|
+
}
|
|
692
|
+
async function flowiseGetChatflow(id) {
|
|
693
|
+
const chatflow = await flowiseApiRequest(`/chatflows/${id}`);
|
|
694
|
+
return JSON.stringify(chatflow, null, 2);
|
|
695
|
+
}
|
|
696
|
+
async function flowiseCreateChatflow(name, nodes, edges, deployed = false) {
|
|
697
|
+
const flowData = {
|
|
698
|
+
name,
|
|
699
|
+
flowData: JSON.stringify({ nodes, edges }),
|
|
700
|
+
deployed,
|
|
701
|
+
};
|
|
702
|
+
const result = await flowiseApiRequest('/chatflows', 'POST', flowData);
|
|
703
|
+
return JSON.stringify({
|
|
704
|
+
success: true,
|
|
705
|
+
id: result.id,
|
|
706
|
+
name: result.name,
|
|
707
|
+
message: `Chatflow "${name}" created successfully!`,
|
|
708
|
+
url: `${FLOWISE_API_URL}/chatflows/${result.id}`,
|
|
709
|
+
}, null, 2);
|
|
710
|
+
}
|
|
711
|
+
async function flowiseUpdateChatflow(id, name, nodes, edges, deployed) {
|
|
712
|
+
const updateData = {};
|
|
713
|
+
if (name)
|
|
714
|
+
updateData.name = name;
|
|
715
|
+
if (nodes && edges) {
|
|
716
|
+
updateData.flowData = JSON.stringify({ nodes, edges });
|
|
717
|
+
}
|
|
718
|
+
if (deployed !== undefined)
|
|
719
|
+
updateData.deployed = deployed;
|
|
720
|
+
const result = await flowiseApiRequest(`/chatflows/${id}`, 'PUT', updateData);
|
|
721
|
+
return JSON.stringify({
|
|
722
|
+
success: true,
|
|
723
|
+
id: result.id,
|
|
724
|
+
name: result.name,
|
|
725
|
+
message: `Chatflow updated successfully!`,
|
|
726
|
+
}, null, 2);
|
|
727
|
+
}
|
|
728
|
+
async function flowiseDeleteChatflow(id) {
|
|
729
|
+
await flowiseApiRequest(`/chatflows/${id}`, 'DELETE');
|
|
730
|
+
return JSON.stringify({
|
|
731
|
+
success: true,
|
|
732
|
+
message: `Chatflow ${id} deleted successfully!`,
|
|
733
|
+
}, null, 2);
|
|
734
|
+
}
|
|
504
735
|
// === REQUEST HANDLERS ===
|
|
505
736
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
506
737
|
tools: TOOLS,
|
|
@@ -510,6 +741,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
510
741
|
try {
|
|
511
742
|
let result;
|
|
512
743
|
switch (name) {
|
|
744
|
+
// Node discovery tools
|
|
513
745
|
case 'list_categories':
|
|
514
746
|
result = listCategories();
|
|
515
747
|
break;
|
|
@@ -537,6 +769,25 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
537
769
|
case 'generate_flow_skeleton':
|
|
538
770
|
result = generateFlowSkeleton(args?.use_case, args?.chat_model);
|
|
539
771
|
break;
|
|
772
|
+
// Flowise API tools
|
|
773
|
+
case 'flowise_test_connection':
|
|
774
|
+
result = await flowiseTestConnection();
|
|
775
|
+
break;
|
|
776
|
+
case 'flowise_list_chatflows':
|
|
777
|
+
result = await flowiseListChatflows();
|
|
778
|
+
break;
|
|
779
|
+
case 'flowise_get_chatflow':
|
|
780
|
+
result = await flowiseGetChatflow(args?.id);
|
|
781
|
+
break;
|
|
782
|
+
case 'flowise_create_chatflow':
|
|
783
|
+
result = await flowiseCreateChatflow(args?.name, args?.nodes, args?.edges, args?.deployed);
|
|
784
|
+
break;
|
|
785
|
+
case 'flowise_update_chatflow':
|
|
786
|
+
result = await flowiseUpdateChatflow(args?.id, args?.name, args?.nodes, args?.edges, args?.deployed);
|
|
787
|
+
break;
|
|
788
|
+
case 'flowise_delete_chatflow':
|
|
789
|
+
result = await flowiseDeleteChatflow(args?.id);
|
|
790
|
+
break;
|
|
540
791
|
default:
|
|
541
792
|
throw new Error(`Unknown tool: ${name}`);
|
|
542
793
|
}
|
|
@@ -636,7 +887,8 @@ First, use list_categories to see available node types.
|
|
|
636
887
|
Then, use search_nodes or list_nodes to find relevant components.
|
|
637
888
|
Use get_node_schema to understand how to configure each node.
|
|
638
889
|
Check list_templates for similar examples.
|
|
639
|
-
|
|
890
|
+
Use validate_flow to verify the flow is valid.
|
|
891
|
+
Finally, use flowise_create_chatflow to push it directly to Flowise!`,
|
|
640
892
|
},
|
|
641
893
|
},
|
|
642
894
|
],
|
|
@@ -655,7 +907,8 @@ Agent flows use nodes from the "Agent Flows" category.
|
|
|
655
907
|
Use list_nodes with category="Agent Flows" to see available nodes.
|
|
656
908
|
Use list_templates with type="agentflowv2" for examples.
|
|
657
909
|
Key nodes include: startAgentflow, agentAgentflow, llmAgentflow, toolAgentflow, conditionAgentflow.
|
|
658
|
-
Use get_node_schema to understand each node's configuration
|
|
910
|
+
Use get_node_schema to understand each node's configuration.
|
|
911
|
+
Finally, use flowise_create_chatflow to push it directly to Flowise!`,
|
|
659
912
|
},
|
|
660
913
|
},
|
|
661
914
|
],
|
|
@@ -672,6 +925,12 @@ async function main() {
|
|
|
672
925
|
db = new SQL.Database(dbBuffer);
|
|
673
926
|
console.error('DS-MCP-FLOWISE server started');
|
|
674
927
|
console.error(`Database loaded from: ${dbPath}`);
|
|
928
|
+
if (FLOWISE_API_URL) {
|
|
929
|
+
console.error(`Flowise API configured: ${FLOWISE_API_URL}`);
|
|
930
|
+
}
|
|
931
|
+
else {
|
|
932
|
+
console.error('Flowise API not configured (set FLOWISE_API_URL in .env for direct flow creation)');
|
|
933
|
+
}
|
|
675
934
|
const transport = new StdioServerTransport();
|
|
676
935
|
await server.connect(transport);
|
|
677
936
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ds-mcp-flowise",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "MCP server for building and managing Flowise chatflows and agentflows. Provides AI assistants with comprehensive knowledge of Flowise nodes
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"description": "MCP server for building and managing Flowise chatflows and agentflows. Provides AI assistants with comprehensive knowledge of Flowise nodes, tools for workflow creation, and direct API integration to deploy chatflows.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
package/src/index.ts
CHANGED
|
@@ -25,6 +25,38 @@ import { fileURLToPath } from 'url';
|
|
|
25
25
|
const __filename = fileURLToPath(import.meta.url);
|
|
26
26
|
const __dirname = path.dirname(__filename);
|
|
27
27
|
|
|
28
|
+
// Load .env file if it exists
|
|
29
|
+
function loadEnv() {
|
|
30
|
+
const envPaths = [
|
|
31
|
+
path.join(process.cwd(), '.env'),
|
|
32
|
+
path.join(__dirname, '..', '.env'),
|
|
33
|
+
path.join(__dirname, '..', '..', '.env'),
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
for (const envPath of envPaths) {
|
|
37
|
+
if (fs.existsSync(envPath)) {
|
|
38
|
+
const envContent = fs.readFileSync(envPath, 'utf-8');
|
|
39
|
+
for (const line of envContent.split('\n')) {
|
|
40
|
+
const trimmed = line.trim();
|
|
41
|
+
if (trimmed && !trimmed.startsWith('#')) {
|
|
42
|
+
const [key, ...valueParts] = trimmed.split('=');
|
|
43
|
+
const value = valueParts.join('=');
|
|
44
|
+
if (key && value) {
|
|
45
|
+
process.env[key.trim()] = value.trim();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
loadEnv();
|
|
55
|
+
|
|
56
|
+
// Flowise API configuration
|
|
57
|
+
const FLOWISE_API_URL = process.env.FLOWISE_API_URL || '';
|
|
58
|
+
const FLOWISE_API_KEY = process.env.FLOWISE_API_KEY || '';
|
|
59
|
+
|
|
28
60
|
// Find database path
|
|
29
61
|
function findDatabasePath(): string {
|
|
30
62
|
const possiblePaths = [
|
|
@@ -67,11 +99,46 @@ function queryOne(sql: string, params: any[] = []): any | null {
|
|
|
67
99
|
return results.length > 0 ? results[0] : null;
|
|
68
100
|
}
|
|
69
101
|
|
|
102
|
+
// === FLOWISE API HELPERS ===
|
|
103
|
+
|
|
104
|
+
async function flowiseApiRequest(
|
|
105
|
+
endpoint: string,
|
|
106
|
+
method: string = 'GET',
|
|
107
|
+
body?: any
|
|
108
|
+
): Promise<any> {
|
|
109
|
+
if (!FLOWISE_API_URL) {
|
|
110
|
+
throw new Error('FLOWISE_API_URL not configured. Set it in .env file.');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const url = `${FLOWISE_API_URL.replace(/\/$/, '')}/api/v1${endpoint}`;
|
|
114
|
+
|
|
115
|
+
const headers: Record<string, string> = {
|
|
116
|
+
'Content-Type': 'application/json',
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
if (FLOWISE_API_KEY) {
|
|
120
|
+
headers['Authorization'] = `Bearer ${FLOWISE_API_KEY}`;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const response = await fetch(url, {
|
|
124
|
+
method,
|
|
125
|
+
headers,
|
|
126
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
if (!response.ok) {
|
|
130
|
+
const errorText = await response.text();
|
|
131
|
+
throw new Error(`Flowise API error (${response.status}): ${errorText}`);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return response.json();
|
|
135
|
+
}
|
|
136
|
+
|
|
70
137
|
// Create MCP server
|
|
71
138
|
const server = new Server(
|
|
72
139
|
{
|
|
73
140
|
name: 'ds-mcp-flowise',
|
|
74
|
-
version: '1.
|
|
141
|
+
version: '1.1.0',
|
|
75
142
|
},
|
|
76
143
|
{
|
|
77
144
|
capabilities: {
|
|
@@ -85,6 +152,7 @@ const server = new Server(
|
|
|
85
152
|
// === TOOL DEFINITIONS ===
|
|
86
153
|
|
|
87
154
|
const TOOLS = [
|
|
155
|
+
// Node discovery tools
|
|
88
156
|
{
|
|
89
157
|
name: 'list_categories',
|
|
90
158
|
description: 'List all available Flowise node categories with node counts',
|
|
@@ -246,6 +314,114 @@ const TOOLS = [
|
|
|
246
314
|
required: ['use_case'],
|
|
247
315
|
},
|
|
248
316
|
},
|
|
317
|
+
|
|
318
|
+
// Flowise API tools
|
|
319
|
+
{
|
|
320
|
+
name: 'flowise_list_chatflows',
|
|
321
|
+
description: 'List all chatflows in the connected Flowise instance. Requires FLOWISE_API_URL and FLOWISE_API_KEY to be configured.',
|
|
322
|
+
inputSchema: {
|
|
323
|
+
type: 'object' as const,
|
|
324
|
+
properties: {},
|
|
325
|
+
required: [],
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
name: 'flowise_get_chatflow',
|
|
330
|
+
description: 'Get details of a specific chatflow by ID from the connected Flowise instance.',
|
|
331
|
+
inputSchema: {
|
|
332
|
+
type: 'object' as const,
|
|
333
|
+
properties: {
|
|
334
|
+
id: {
|
|
335
|
+
type: 'string',
|
|
336
|
+
description: 'The chatflow ID',
|
|
337
|
+
},
|
|
338
|
+
},
|
|
339
|
+
required: ['id'],
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
name: 'flowise_create_chatflow',
|
|
344
|
+
description: 'Create a new chatflow in the connected Flowise instance. This pushes your designed flow directly to Flowise.',
|
|
345
|
+
inputSchema: {
|
|
346
|
+
type: 'object' as const,
|
|
347
|
+
properties: {
|
|
348
|
+
name: {
|
|
349
|
+
type: 'string',
|
|
350
|
+
description: 'Name for the chatflow',
|
|
351
|
+
},
|
|
352
|
+
nodes: {
|
|
353
|
+
type: 'array',
|
|
354
|
+
description: 'Array of node objects',
|
|
355
|
+
items: { type: 'object' },
|
|
356
|
+
},
|
|
357
|
+
edges: {
|
|
358
|
+
type: 'array',
|
|
359
|
+
description: 'Array of edge objects',
|
|
360
|
+
items: { type: 'object' },
|
|
361
|
+
},
|
|
362
|
+
deployed: {
|
|
363
|
+
type: 'boolean',
|
|
364
|
+
description: 'Whether to deploy immediately (default: false)',
|
|
365
|
+
},
|
|
366
|
+
},
|
|
367
|
+
required: ['name', 'nodes', 'edges'],
|
|
368
|
+
},
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
name: 'flowise_update_chatflow',
|
|
372
|
+
description: 'Update an existing chatflow in the connected Flowise instance.',
|
|
373
|
+
inputSchema: {
|
|
374
|
+
type: 'object' as const,
|
|
375
|
+
properties: {
|
|
376
|
+
id: {
|
|
377
|
+
type: 'string',
|
|
378
|
+
description: 'The chatflow ID to update',
|
|
379
|
+
},
|
|
380
|
+
name: {
|
|
381
|
+
type: 'string',
|
|
382
|
+
description: 'New name for the chatflow (optional)',
|
|
383
|
+
},
|
|
384
|
+
nodes: {
|
|
385
|
+
type: 'array',
|
|
386
|
+
description: 'Updated array of node objects',
|
|
387
|
+
items: { type: 'object' },
|
|
388
|
+
},
|
|
389
|
+
edges: {
|
|
390
|
+
type: 'array',
|
|
391
|
+
description: 'Updated array of edge objects',
|
|
392
|
+
items: { type: 'object' },
|
|
393
|
+
},
|
|
394
|
+
deployed: {
|
|
395
|
+
type: 'boolean',
|
|
396
|
+
description: 'Whether the chatflow should be deployed',
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
required: ['id'],
|
|
400
|
+
},
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
name: 'flowise_delete_chatflow',
|
|
404
|
+
description: 'Delete a chatflow from the connected Flowise instance. Use with caution!',
|
|
405
|
+
inputSchema: {
|
|
406
|
+
type: 'object' as const,
|
|
407
|
+
properties: {
|
|
408
|
+
id: {
|
|
409
|
+
type: 'string',
|
|
410
|
+
description: 'The chatflow ID to delete',
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
required: ['id'],
|
|
414
|
+
},
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
name: 'flowise_test_connection',
|
|
418
|
+
description: 'Test the connection to the configured Flowise instance. Use this to verify your API URL and key are correct.',
|
|
419
|
+
inputSchema: {
|
|
420
|
+
type: 'object' as const,
|
|
421
|
+
properties: {},
|
|
422
|
+
required: [],
|
|
423
|
+
},
|
|
424
|
+
},
|
|
249
425
|
];
|
|
250
426
|
|
|
251
427
|
// === TOOL IMPLEMENTATIONS ===
|
|
@@ -300,7 +476,6 @@ function getNodeSchema(name: string): string {
|
|
|
300
476
|
ORDER BY additional_params, input_label
|
|
301
477
|
`, [name]);
|
|
302
478
|
|
|
303
|
-
// Parse JSON fields
|
|
304
479
|
const schema = {
|
|
305
480
|
...node,
|
|
306
481
|
base_classes: JSON.parse(node.base_classes || '[]'),
|
|
@@ -387,11 +562,9 @@ function findCompatibleNodes(nodeName: string, direction: string = 'inputs'): st
|
|
|
387
562
|
const baseClasses = JSON.parse(node.base_classes || '[]') as string[];
|
|
388
563
|
|
|
389
564
|
if (direction === 'inputs') {
|
|
390
|
-
// Find nodes whose outputs (base_classes) match this node's input types
|
|
391
565
|
const inputs = query(`SELECT input_type FROM node_inputs WHERE node_name = ?`, [nodeName]);
|
|
392
566
|
const inputTypes = inputs.map((i: any) => i.input_type);
|
|
393
567
|
|
|
394
|
-
// Find nodes that have these types in their base_classes
|
|
395
568
|
const allNodes = query(`SELECT name, label, category, base_classes FROM nodes`);
|
|
396
569
|
|
|
397
570
|
const compatible = allNodes.filter((n: any) => {
|
|
@@ -405,7 +578,6 @@ function findCompatibleNodes(nodeName: string, direction: string = 'inputs'): st
|
|
|
405
578
|
|
|
406
579
|
return JSON.stringify({ compatible_inputs: compatible }, null, 2);
|
|
407
580
|
} else {
|
|
408
|
-
// Find nodes that accept this node's output types
|
|
409
581
|
const allInputs = query(`
|
|
410
582
|
SELECT DISTINCT n.name, n.label, n.category, ni.input_type
|
|
411
583
|
FROM nodes n
|
|
@@ -420,7 +592,6 @@ function findCompatibleNodes(nodeName: string, direction: string = 'inputs'): st
|
|
|
420
592
|
category: i.category,
|
|
421
593
|
}));
|
|
422
594
|
|
|
423
|
-
// Deduplicate
|
|
424
595
|
const unique = Array.from(new Map(compatible.map((c: any) => [c.name, c])).values());
|
|
425
596
|
|
|
426
597
|
return JSON.stringify({ compatible_outputs: unique }, null, 2);
|
|
@@ -431,7 +602,6 @@ function validateFlow(nodes: any[], edges: any[]): string {
|
|
|
431
602
|
const errors: string[] = [];
|
|
432
603
|
const warnings: string[] = [];
|
|
433
604
|
|
|
434
|
-
// Check all nodes exist
|
|
435
605
|
const nodeNames = new Set<string>();
|
|
436
606
|
for (const node of nodes) {
|
|
437
607
|
const nodeName = node.data?.name || node.type || node.name;
|
|
@@ -447,7 +617,6 @@ function validateFlow(nodes: any[], edges: any[]): string {
|
|
|
447
617
|
nodeNames.add(node.id);
|
|
448
618
|
}
|
|
449
619
|
|
|
450
|
-
// Check all edges reference valid nodes
|
|
451
620
|
for (const edge of edges) {
|
|
452
621
|
if (!nodeNames.has(edge.source)) {
|
|
453
622
|
errors.push(`Edge references non-existent source node: ${edge.source}`);
|
|
@@ -570,6 +739,106 @@ function generateFlowSkeleton(useCase: string, chatModel?: string): string {
|
|
|
570
739
|
return JSON.stringify(skeleton, null, 2);
|
|
571
740
|
}
|
|
572
741
|
|
|
742
|
+
// === FLOWISE API IMPLEMENTATIONS ===
|
|
743
|
+
|
|
744
|
+
async function flowiseTestConnection(): Promise<string> {
|
|
745
|
+
if (!FLOWISE_API_URL) {
|
|
746
|
+
return JSON.stringify({
|
|
747
|
+
connected: false,
|
|
748
|
+
error: 'FLOWISE_API_URL not configured. Create a .env file with FLOWISE_API_URL and FLOWISE_API_KEY.',
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
try {
|
|
753
|
+
const chatflows = await flowiseApiRequest('/chatflows');
|
|
754
|
+
return JSON.stringify({
|
|
755
|
+
connected: true,
|
|
756
|
+
url: FLOWISE_API_URL,
|
|
757
|
+
chatflows_count: Array.isArray(chatflows) ? chatflows.length : 0,
|
|
758
|
+
}, null, 2);
|
|
759
|
+
} catch (error) {
|
|
760
|
+
return JSON.stringify({
|
|
761
|
+
connected: false,
|
|
762
|
+
url: FLOWISE_API_URL,
|
|
763
|
+
error: String(error),
|
|
764
|
+
}, null, 2);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
async function flowiseListChatflows(): Promise<string> {
|
|
769
|
+
const chatflows = await flowiseApiRequest('/chatflows');
|
|
770
|
+
|
|
771
|
+
// Return summary info for each chatflow
|
|
772
|
+
const summary = chatflows.map((cf: any) => ({
|
|
773
|
+
id: cf.id,
|
|
774
|
+
name: cf.name,
|
|
775
|
+
deployed: cf.deployed,
|
|
776
|
+
createdDate: cf.createdDate,
|
|
777
|
+
updatedDate: cf.updatedDate,
|
|
778
|
+
}));
|
|
779
|
+
|
|
780
|
+
return JSON.stringify(summary, null, 2);
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
async function flowiseGetChatflow(id: string): Promise<string> {
|
|
784
|
+
const chatflow = await flowiseApiRequest(`/chatflows/${id}`);
|
|
785
|
+
return JSON.stringify(chatflow, null, 2);
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
async function flowiseCreateChatflow(
|
|
789
|
+
name: string,
|
|
790
|
+
nodes: any[],
|
|
791
|
+
edges: any[],
|
|
792
|
+
deployed: boolean = false
|
|
793
|
+
): Promise<string> {
|
|
794
|
+
const flowData = {
|
|
795
|
+
name,
|
|
796
|
+
flowData: JSON.stringify({ nodes, edges }),
|
|
797
|
+
deployed,
|
|
798
|
+
};
|
|
799
|
+
|
|
800
|
+
const result = await flowiseApiRequest('/chatflows', 'POST', flowData);
|
|
801
|
+
return JSON.stringify({
|
|
802
|
+
success: true,
|
|
803
|
+
id: result.id,
|
|
804
|
+
name: result.name,
|
|
805
|
+
message: `Chatflow "${name}" created successfully!`,
|
|
806
|
+
url: `${FLOWISE_API_URL}/chatflows/${result.id}`,
|
|
807
|
+
}, null, 2);
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
async function flowiseUpdateChatflow(
|
|
811
|
+
id: string,
|
|
812
|
+
name?: string,
|
|
813
|
+
nodes?: any[],
|
|
814
|
+
edges?: any[],
|
|
815
|
+
deployed?: boolean
|
|
816
|
+
): Promise<string> {
|
|
817
|
+
const updateData: any = {};
|
|
818
|
+
|
|
819
|
+
if (name) updateData.name = name;
|
|
820
|
+
if (nodes && edges) {
|
|
821
|
+
updateData.flowData = JSON.stringify({ nodes, edges });
|
|
822
|
+
}
|
|
823
|
+
if (deployed !== undefined) updateData.deployed = deployed;
|
|
824
|
+
|
|
825
|
+
const result = await flowiseApiRequest(`/chatflows/${id}`, 'PUT', updateData);
|
|
826
|
+
return JSON.stringify({
|
|
827
|
+
success: true,
|
|
828
|
+
id: result.id,
|
|
829
|
+
name: result.name,
|
|
830
|
+
message: `Chatflow updated successfully!`,
|
|
831
|
+
}, null, 2);
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
async function flowiseDeleteChatflow(id: string): Promise<string> {
|
|
835
|
+
await flowiseApiRequest(`/chatflows/${id}`, 'DELETE');
|
|
836
|
+
return JSON.stringify({
|
|
837
|
+
success: true,
|
|
838
|
+
message: `Chatflow ${id} deleted successfully!`,
|
|
839
|
+
}, null, 2);
|
|
840
|
+
}
|
|
841
|
+
|
|
573
842
|
// === REQUEST HANDLERS ===
|
|
574
843
|
|
|
575
844
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
@@ -583,6 +852,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
583
852
|
let result: string;
|
|
584
853
|
|
|
585
854
|
switch (name) {
|
|
855
|
+
// Node discovery tools
|
|
586
856
|
case 'list_categories':
|
|
587
857
|
result = listCategories();
|
|
588
858
|
break;
|
|
@@ -610,6 +880,38 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
610
880
|
case 'generate_flow_skeleton':
|
|
611
881
|
result = generateFlowSkeleton(args?.use_case as string, args?.chat_model as string);
|
|
612
882
|
break;
|
|
883
|
+
|
|
884
|
+
// Flowise API tools
|
|
885
|
+
case 'flowise_test_connection':
|
|
886
|
+
result = await flowiseTestConnection();
|
|
887
|
+
break;
|
|
888
|
+
case 'flowise_list_chatflows':
|
|
889
|
+
result = await flowiseListChatflows();
|
|
890
|
+
break;
|
|
891
|
+
case 'flowise_get_chatflow':
|
|
892
|
+
result = await flowiseGetChatflow(args?.id as string);
|
|
893
|
+
break;
|
|
894
|
+
case 'flowise_create_chatflow':
|
|
895
|
+
result = await flowiseCreateChatflow(
|
|
896
|
+
args?.name as string,
|
|
897
|
+
args?.nodes as any[],
|
|
898
|
+
args?.edges as any[],
|
|
899
|
+
args?.deployed as boolean
|
|
900
|
+
);
|
|
901
|
+
break;
|
|
902
|
+
case 'flowise_update_chatflow':
|
|
903
|
+
result = await flowiseUpdateChatflow(
|
|
904
|
+
args?.id as string,
|
|
905
|
+
args?.name as string,
|
|
906
|
+
args?.nodes as any[],
|
|
907
|
+
args?.edges as any[],
|
|
908
|
+
args?.deployed as boolean
|
|
909
|
+
);
|
|
910
|
+
break;
|
|
911
|
+
case 'flowise_delete_chatflow':
|
|
912
|
+
result = await flowiseDeleteChatflow(args?.id as string);
|
|
913
|
+
break;
|
|
914
|
+
|
|
613
915
|
default:
|
|
614
916
|
throw new Error(`Unknown tool: ${name}`);
|
|
615
917
|
}
|
|
@@ -719,7 +1021,8 @@ First, use list_categories to see available node types.
|
|
|
719
1021
|
Then, use search_nodes or list_nodes to find relevant components.
|
|
720
1022
|
Use get_node_schema to understand how to configure each node.
|
|
721
1023
|
Check list_templates for similar examples.
|
|
722
|
-
|
|
1024
|
+
Use validate_flow to verify the flow is valid.
|
|
1025
|
+
Finally, use flowise_create_chatflow to push it directly to Flowise!`,
|
|
723
1026
|
},
|
|
724
1027
|
},
|
|
725
1028
|
],
|
|
@@ -739,7 +1042,8 @@ Agent flows use nodes from the "Agent Flows" category.
|
|
|
739
1042
|
Use list_nodes with category="Agent Flows" to see available nodes.
|
|
740
1043
|
Use list_templates with type="agentflowv2" for examples.
|
|
741
1044
|
Key nodes include: startAgentflow, agentAgentflow, llmAgentflow, toolAgentflow, conditionAgentflow.
|
|
742
|
-
Use get_node_schema to understand each node's configuration
|
|
1045
|
+
Use get_node_schema to understand each node's configuration.
|
|
1046
|
+
Finally, use flowise_create_chatflow to push it directly to Flowise!`,
|
|
743
1047
|
},
|
|
744
1048
|
},
|
|
745
1049
|
],
|
|
@@ -761,6 +1065,12 @@ async function main() {
|
|
|
761
1065
|
console.error('DS-MCP-FLOWISE server started');
|
|
762
1066
|
console.error(`Database loaded from: ${dbPath}`);
|
|
763
1067
|
|
|
1068
|
+
if (FLOWISE_API_URL) {
|
|
1069
|
+
console.error(`Flowise API configured: ${FLOWISE_API_URL}`);
|
|
1070
|
+
} else {
|
|
1071
|
+
console.error('Flowise API not configured (set FLOWISE_API_URL in .env for direct flow creation)');
|
|
1072
|
+
}
|
|
1073
|
+
|
|
764
1074
|
const transport = new StdioServerTransport();
|
|
765
1075
|
await server.connect(transport);
|
|
766
1076
|
}
|