mcpgraph 0.1.3 → 0.1.4
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 +42 -2
- package/dist/api.d.ts +71 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +111 -0
- package/dist/api.js.map +1 -0
- package/dist/config/schema.d.ts +87 -4
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +29 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/execution/executor.d.ts +1 -0
- package/dist/execution/executor.d.ts.map +1 -1
- package/dist/execution/executor.js +8 -1
- package/dist/execution/executor.js.map +1 -1
- package/dist/execution/nodes/mcp-tool-executor.d.ts +2 -2
- package/dist/execution/nodes/mcp-tool-executor.d.ts.map +1 -1
- package/dist/execution/nodes/mcp-tool-executor.js +3 -13
- package/dist/execution/nodes/mcp-tool-executor.js.map +1 -1
- package/dist/graph/validator.d.ts.map +1 -1
- package/dist/graph/validator.js +12 -0
- package/dist/graph/validator.js.map +1 -1
- package/dist/main.js +10 -28
- package/dist/main.js.map +1 -1
- package/dist/mcp/client-manager.d.ts +3 -1
- package/dist/mcp/client-manager.d.ts.map +1 -1
- package/dist/mcp/client-manager.js +77 -6
- package/dist/mcp/client-manager.js.map +1 -1
- package/dist/types/config.d.ts +21 -0
- package/dist/types/config.d.ts.map +1 -1
- package/examples/api-usage.ts +69 -0
- package/examples/count_files.yaml +20 -2
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -20,11 +20,13 @@ Here's a simple example that counts files in a directory:
|
|
|
20
20
|
```yaml
|
|
21
21
|
version: "1.0"
|
|
22
22
|
|
|
23
|
+
# MCP Server Metadata
|
|
23
24
|
server:
|
|
24
|
-
name: "
|
|
25
|
+
name: "fileUtils"
|
|
25
26
|
version: "1.0.0"
|
|
26
|
-
description: "
|
|
27
|
+
description: "File utilities"
|
|
27
28
|
|
|
29
|
+
# Tool Definitions
|
|
28
30
|
tools:
|
|
29
31
|
- name: "count_files"
|
|
30
32
|
description: "Counts the number of files in a directory"
|
|
@@ -43,12 +45,24 @@ tools:
|
|
|
43
45
|
type: "number"
|
|
44
46
|
description: "The number of files in the directory"
|
|
45
47
|
|
|
48
|
+
# MCP Servers used by the graph
|
|
49
|
+
servers:
|
|
50
|
+
filesystem:
|
|
51
|
+
command: "npx"
|
|
52
|
+
args:
|
|
53
|
+
- "-y"
|
|
54
|
+
- "@modelcontextprotocol/server-filesystem"
|
|
55
|
+
- "./tests/files"
|
|
56
|
+
|
|
57
|
+
# Graph Nodes
|
|
46
58
|
nodes:
|
|
59
|
+
# Entry node: Receives tool arguments
|
|
47
60
|
- id: "entry_count_files"
|
|
48
61
|
type: "entry"
|
|
49
62
|
tool: "count_files"
|
|
50
63
|
next: "list_directory_node"
|
|
51
64
|
|
|
65
|
+
# List directory contents
|
|
52
66
|
- id: "list_directory_node"
|
|
53
67
|
type: "mcp"
|
|
54
68
|
server: "filesystem"
|
|
@@ -57,6 +71,7 @@ nodes:
|
|
|
57
71
|
path: "$.input.directory"
|
|
58
72
|
next: "count_files_node"
|
|
59
73
|
|
|
74
|
+
# Transform and count files
|
|
60
75
|
- id: "count_files_node"
|
|
61
76
|
type: "transform"
|
|
62
77
|
transform:
|
|
@@ -64,6 +79,7 @@ nodes:
|
|
|
64
79
|
{ "count": $count($split(list_directory_node, "\n")) }
|
|
65
80
|
next: "exit_count_files"
|
|
66
81
|
|
|
82
|
+
# Exit node: Returns the count
|
|
67
83
|
- id: "exit_count_files"
|
|
68
84
|
type: "exit"
|
|
69
85
|
tool: "count_files"
|
|
@@ -145,6 +161,30 @@ Or if not installed (run from npm):
|
|
|
145
161
|
|
|
146
162
|
**Note:** Replace `/path/to/your/config.yaml` with the actual path to your YAML configuration file. The `-c` flag specifies the configuration file to use.
|
|
147
163
|
|
|
164
|
+
### Programmatic API
|
|
165
|
+
|
|
166
|
+
The `mcpgraph` package exports a programmatic API that can be used in your own applications (e.g., for building a UX server or other interfaces):
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
import { McpGraphApi } from 'mcpgraph';
|
|
170
|
+
|
|
171
|
+
// Create an API instance (loads and validates config)
|
|
172
|
+
const api = new McpGraphApi('path/to/config.yaml');
|
|
173
|
+
|
|
174
|
+
// List all available tools
|
|
175
|
+
const tools = api.listTools();
|
|
176
|
+
|
|
177
|
+
// Execute a tool
|
|
178
|
+
const result = await api.executeTool('count_files', {
|
|
179
|
+
directory: './tests/files',
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// Clean up resources
|
|
183
|
+
await api.close();
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
See [`examples/api-usage.ts`](examples/api-usage.ts) for a complete example.
|
|
187
|
+
|
|
148
188
|
## Documentation
|
|
149
189
|
|
|
150
190
|
- [Contributing Guide](CONTRIBUTING.md) - Setup, development, and contribution guidelines
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatic API for mcpGraph
|
|
3
|
+
*
|
|
4
|
+
* This API can be used by:
|
|
5
|
+
* - MCP server (main.ts) - for stdio transport
|
|
6
|
+
* - UX applications - for HTTP/WebSocket servers
|
|
7
|
+
* - Other applications - for programmatic graph execution
|
|
8
|
+
*/
|
|
9
|
+
import type { McpGraphConfig } from './types/config.js';
|
|
10
|
+
import { type ValidationError } from './graph/validator.js';
|
|
11
|
+
export interface ToolInfo {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
inputSchema: Record<string, unknown>;
|
|
15
|
+
outputSchema?: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
export interface ExecutionResult {
|
|
18
|
+
result: unknown;
|
|
19
|
+
structuredContent?: Record<string, unknown>;
|
|
20
|
+
}
|
|
21
|
+
export declare class McpGraphApi {
|
|
22
|
+
private config;
|
|
23
|
+
private executor;
|
|
24
|
+
private clientManager;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new McpGraphApi instance
|
|
27
|
+
* @param configPath - Path to the YAML configuration file
|
|
28
|
+
* @throws Error if config cannot be loaded or validated
|
|
29
|
+
*/
|
|
30
|
+
constructor(configPath: string);
|
|
31
|
+
/**
|
|
32
|
+
* Get the server metadata
|
|
33
|
+
*/
|
|
34
|
+
getServerInfo(): {
|
|
35
|
+
name: string;
|
|
36
|
+
version: string;
|
|
37
|
+
description: string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* List all available tools
|
|
41
|
+
*/
|
|
42
|
+
listTools(): ToolInfo[];
|
|
43
|
+
/**
|
|
44
|
+
* Get information about a specific tool
|
|
45
|
+
*/
|
|
46
|
+
getTool(toolName: string): ToolInfo | undefined;
|
|
47
|
+
/**
|
|
48
|
+
* Execute a tool with the given arguments
|
|
49
|
+
*/
|
|
50
|
+
executeTool(toolName: string, toolArguments?: Record<string, unknown>): Promise<ExecutionResult>;
|
|
51
|
+
/**
|
|
52
|
+
* Get the full configuration
|
|
53
|
+
*/
|
|
54
|
+
getConfig(): McpGraphConfig;
|
|
55
|
+
/**
|
|
56
|
+
* Validate a configuration without creating an API instance
|
|
57
|
+
*/
|
|
58
|
+
static validateConfig(configPath: string): ValidationError[];
|
|
59
|
+
/**
|
|
60
|
+
* Load and validate a configuration without creating an API instance
|
|
61
|
+
*/
|
|
62
|
+
static loadAndValidateConfig(configPath: string): {
|
|
63
|
+
config: McpGraphConfig;
|
|
64
|
+
errors: ValidationError[];
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Clean up resources (close MCP clients, etc.)
|
|
68
|
+
*/
|
|
69
|
+
close(): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI3E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,aAAa,CAAmB;IAExC;;;;OAIG;gBACS,UAAU,EAAE,MAAM;IAmB9B;;OAEG;IACH,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAQvE;;OAEG;IACH,SAAS,IAAI,QAAQ,EAAE;IASvB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAc/C;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAC1C,OAAO,CAAC,eAAe,CAAC;IAS3B;;OAEG;IACH,SAAS,IAAI,cAAc;IAI3B;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,EAAE;IAK5D;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG;QAChD,MAAM,EAAE,cAAc,CAAC;QACvB,MAAM,EAAE,eAAe,EAAE,CAAC;KAC3B;IAMD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatic API for mcpGraph
|
|
3
|
+
*
|
|
4
|
+
* This API can be used by:
|
|
5
|
+
* - MCP server (main.ts) - for stdio transport
|
|
6
|
+
* - UX applications - for HTTP/WebSocket servers
|
|
7
|
+
* - Other applications - for programmatic graph execution
|
|
8
|
+
*/
|
|
9
|
+
import { logger } from './logger.js';
|
|
10
|
+
import { loadConfig } from './config/loader.js';
|
|
11
|
+
import { validateGraph } from './graph/validator.js';
|
|
12
|
+
import { GraphExecutor } from './execution/executor.js';
|
|
13
|
+
import { McpClientManager } from './mcp/client-manager.js';
|
|
14
|
+
export class McpGraphApi {
|
|
15
|
+
config;
|
|
16
|
+
executor;
|
|
17
|
+
clientManager;
|
|
18
|
+
/**
|
|
19
|
+
* Create a new McpGraphApi instance
|
|
20
|
+
* @param configPath - Path to the YAML configuration file
|
|
21
|
+
* @throws Error if config cannot be loaded or validated
|
|
22
|
+
*/
|
|
23
|
+
constructor(configPath) {
|
|
24
|
+
logger.info(`Loading configuration from: ${configPath}`);
|
|
25
|
+
const config = loadConfig(configPath);
|
|
26
|
+
const errors = validateGraph(config);
|
|
27
|
+
if (errors.length > 0) {
|
|
28
|
+
const errorMessages = errors.map((e) => e.message).join(', ');
|
|
29
|
+
throw new Error(`Graph validation failed: ${errorMessages}`);
|
|
30
|
+
}
|
|
31
|
+
this.config = config;
|
|
32
|
+
this.clientManager = new McpClientManager();
|
|
33
|
+
this.executor = new GraphExecutor(config, this.clientManager);
|
|
34
|
+
logger.info(`Loaded configuration: ${config.server.name} v${config.server.version}`);
|
|
35
|
+
logger.info(`Tools defined: ${config.tools.map(t => t.name).join(', ')}`);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the server metadata
|
|
39
|
+
*/
|
|
40
|
+
getServerInfo() {
|
|
41
|
+
return {
|
|
42
|
+
name: this.config.server.name,
|
|
43
|
+
version: this.config.server.version,
|
|
44
|
+
description: this.config.server.description,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* List all available tools
|
|
49
|
+
*/
|
|
50
|
+
listTools() {
|
|
51
|
+
return this.config.tools.map(tool => ({
|
|
52
|
+
name: tool.name,
|
|
53
|
+
description: tool.description,
|
|
54
|
+
inputSchema: tool.inputSchema,
|
|
55
|
+
outputSchema: tool.outputSchema,
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get information about a specific tool
|
|
60
|
+
*/
|
|
61
|
+
getTool(toolName) {
|
|
62
|
+
const tool = this.config.tools.find(t => t.name === toolName);
|
|
63
|
+
if (!tool) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
name: tool.name,
|
|
68
|
+
description: tool.description,
|
|
69
|
+
inputSchema: tool.inputSchema,
|
|
70
|
+
outputSchema: tool.outputSchema,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Execute a tool with the given arguments
|
|
75
|
+
*/
|
|
76
|
+
async executeTool(toolName, toolArguments = {}) {
|
|
77
|
+
const result = await this.executor.executeTool(toolName, toolArguments);
|
|
78
|
+
return {
|
|
79
|
+
result,
|
|
80
|
+
structuredContent: result,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get the full configuration
|
|
85
|
+
*/
|
|
86
|
+
getConfig() {
|
|
87
|
+
return this.config;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Validate a configuration without creating an API instance
|
|
91
|
+
*/
|
|
92
|
+
static validateConfig(configPath) {
|
|
93
|
+
const config = loadConfig(configPath);
|
|
94
|
+
return validateGraph(config);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Load and validate a configuration without creating an API instance
|
|
98
|
+
*/
|
|
99
|
+
static loadAndValidateConfig(configPath) {
|
|
100
|
+
const config = loadConfig(configPath);
|
|
101
|
+
const errors = validateGraph(config);
|
|
102
|
+
return { config, errors };
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Clean up resources (close MCP clients, etc.)
|
|
106
|
+
*/
|
|
107
|
+
async close() {
|
|
108
|
+
await this.clientManager.closeAll();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -17,6 +17,55 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
17
17
|
name: string;
|
|
18
18
|
version: string;
|
|
19
19
|
}>;
|
|
20
|
+
servers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
|
|
21
|
+
type: z.ZodOptional<z.ZodLiteral<"stdio">>;
|
|
22
|
+
command: z.ZodString;
|
|
23
|
+
args: z.ZodArray<z.ZodString, "many">;
|
|
24
|
+
cwd: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
command: string;
|
|
27
|
+
args: string[];
|
|
28
|
+
type?: "stdio" | undefined;
|
|
29
|
+
cwd?: string | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
command: string;
|
|
32
|
+
args: string[];
|
|
33
|
+
type?: "stdio" | undefined;
|
|
34
|
+
cwd?: string | undefined;
|
|
35
|
+
}>, z.ZodObject<{
|
|
36
|
+
type: z.ZodLiteral<"sse">;
|
|
37
|
+
url: z.ZodString;
|
|
38
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
39
|
+
eventSourceInit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
40
|
+
requestInit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
type: "sse";
|
|
43
|
+
url: string;
|
|
44
|
+
headers?: Record<string, string> | undefined;
|
|
45
|
+
eventSourceInit?: Record<string, unknown> | undefined;
|
|
46
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
type: "sse";
|
|
49
|
+
url: string;
|
|
50
|
+
headers?: Record<string, string> | undefined;
|
|
51
|
+
eventSourceInit?: Record<string, unknown> | undefined;
|
|
52
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
53
|
+
}>, z.ZodObject<{
|
|
54
|
+
type: z.ZodLiteral<"streamableHttp">;
|
|
55
|
+
url: z.ZodString;
|
|
56
|
+
headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
57
|
+
requestInit: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
58
|
+
}, "strip", z.ZodTypeAny, {
|
|
59
|
+
type: "streamableHttp";
|
|
60
|
+
url: string;
|
|
61
|
+
headers?: Record<string, string> | undefined;
|
|
62
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
63
|
+
}, {
|
|
64
|
+
type: "streamableHttp";
|
|
65
|
+
url: string;
|
|
66
|
+
headers?: Record<string, string> | undefined;
|
|
67
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
68
|
+
}>]>>>;
|
|
20
69
|
tools: z.ZodArray<z.ZodObject<{
|
|
21
70
|
name: z.ZodString;
|
|
22
71
|
description: z.ZodString;
|
|
@@ -167,18 +216,18 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
167
216
|
next: z.ZodString;
|
|
168
217
|
}, "strip", z.ZodTypeAny, {
|
|
169
218
|
type: "mcp";
|
|
219
|
+
args: Record<string, unknown>;
|
|
170
220
|
id: string;
|
|
171
221
|
next: string;
|
|
172
222
|
tool: string;
|
|
173
223
|
server: string;
|
|
174
|
-
args: Record<string, unknown>;
|
|
175
224
|
}, {
|
|
176
225
|
type: "mcp";
|
|
226
|
+
args: Record<string, unknown>;
|
|
177
227
|
id: string;
|
|
178
228
|
next: string;
|
|
179
229
|
tool: string;
|
|
180
230
|
server: string;
|
|
181
|
-
args: Record<string, unknown>;
|
|
182
231
|
}>, z.ZodObject<{
|
|
183
232
|
id: z.ZodString;
|
|
184
233
|
} & {
|
|
@@ -278,11 +327,11 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
278
327
|
next?: string | undefined;
|
|
279
328
|
} | {
|
|
280
329
|
type: "mcp";
|
|
330
|
+
args: Record<string, unknown>;
|
|
281
331
|
id: string;
|
|
282
332
|
next: string;
|
|
283
333
|
tool: string;
|
|
284
334
|
server: string;
|
|
285
|
-
args: Record<string, unknown>;
|
|
286
335
|
} | {
|
|
287
336
|
type: "transform";
|
|
288
337
|
id: string;
|
|
@@ -299,6 +348,23 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
299
348
|
}[];
|
|
300
349
|
next?: string | undefined;
|
|
301
350
|
})[];
|
|
351
|
+
servers?: Record<string, {
|
|
352
|
+
command: string;
|
|
353
|
+
args: string[];
|
|
354
|
+
type?: "stdio" | undefined;
|
|
355
|
+
cwd?: string | undefined;
|
|
356
|
+
} | {
|
|
357
|
+
type: "sse";
|
|
358
|
+
url: string;
|
|
359
|
+
headers?: Record<string, string> | undefined;
|
|
360
|
+
eventSourceInit?: Record<string, unknown> | undefined;
|
|
361
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
362
|
+
} | {
|
|
363
|
+
type: "streamableHttp";
|
|
364
|
+
url: string;
|
|
365
|
+
headers?: Record<string, string> | undefined;
|
|
366
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
367
|
+
}> | undefined;
|
|
302
368
|
}, {
|
|
303
369
|
version: string;
|
|
304
370
|
server: {
|
|
@@ -340,11 +406,11 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
340
406
|
next?: string | undefined;
|
|
341
407
|
} | {
|
|
342
408
|
type: "mcp";
|
|
409
|
+
args: Record<string, unknown>;
|
|
343
410
|
id: string;
|
|
344
411
|
next: string;
|
|
345
412
|
tool: string;
|
|
346
413
|
server: string;
|
|
347
|
-
args: Record<string, unknown>;
|
|
348
414
|
} | {
|
|
349
415
|
type: "transform";
|
|
350
416
|
id: string;
|
|
@@ -361,6 +427,23 @@ export declare const mcpGraphConfigSchema: z.ZodObject<{
|
|
|
361
427
|
}[];
|
|
362
428
|
next?: string | undefined;
|
|
363
429
|
})[];
|
|
430
|
+
servers?: Record<string, {
|
|
431
|
+
command: string;
|
|
432
|
+
args: string[];
|
|
433
|
+
type?: "stdio" | undefined;
|
|
434
|
+
cwd?: string | undefined;
|
|
435
|
+
} | {
|
|
436
|
+
type: "sse";
|
|
437
|
+
url: string;
|
|
438
|
+
headers?: Record<string, string> | undefined;
|
|
439
|
+
eventSourceInit?: Record<string, unknown> | undefined;
|
|
440
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
441
|
+
} | {
|
|
442
|
+
type: "streamableHttp";
|
|
443
|
+
url: string;
|
|
444
|
+
headers?: Record<string, string> | undefined;
|
|
445
|
+
requestInit?: Record<string, unknown> | undefined;
|
|
446
|
+
}> | undefined;
|
|
364
447
|
}>;
|
|
365
448
|
export type McpGraphConfigSchema = z.infer<typeof mcpGraphConfigSchema>;
|
|
366
449
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8GxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -17,6 +17,34 @@ const serverMetadataSchema = z.object({
|
|
|
17
17
|
version: z.string(),
|
|
18
18
|
description: z.string(),
|
|
19
19
|
});
|
|
20
|
+
const stdioServerConfigSchema = z.object({
|
|
21
|
+
type: z.literal("stdio").optional(),
|
|
22
|
+
command: z.string(),
|
|
23
|
+
args: z.array(z.string()),
|
|
24
|
+
cwd: z.string().optional(),
|
|
25
|
+
});
|
|
26
|
+
const sseServerConfigSchema = z.object({
|
|
27
|
+
type: z.literal("sse"),
|
|
28
|
+
url: z.string(),
|
|
29
|
+
headers: z.record(z.string()).optional(),
|
|
30
|
+
eventSourceInit: z.record(z.unknown()).optional(),
|
|
31
|
+
requestInit: z.record(z.unknown()).optional(),
|
|
32
|
+
});
|
|
33
|
+
const streamableHttpServerConfigSchema = z.object({
|
|
34
|
+
type: z.literal("streamableHttp"),
|
|
35
|
+
url: z.string(),
|
|
36
|
+
headers: z.record(z.string()).optional(),
|
|
37
|
+
requestInit: z.record(z.unknown()).optional(),
|
|
38
|
+
});
|
|
39
|
+
// Server config can be stdio (with or without type), sse, or streamableHttp
|
|
40
|
+
const serverConfigSchema = z.union([
|
|
41
|
+
// Stdio config (type optional, defaults to stdio)
|
|
42
|
+
stdioServerConfigSchema,
|
|
43
|
+
// SSE config (type required)
|
|
44
|
+
sseServerConfigSchema,
|
|
45
|
+
// Streamable HTTP config (type required)
|
|
46
|
+
streamableHttpServerConfigSchema,
|
|
47
|
+
]);
|
|
20
48
|
const baseNodeSchema = z.object({
|
|
21
49
|
id: z.string(),
|
|
22
50
|
type: z.string(),
|
|
@@ -69,6 +97,7 @@ const toolDefinitionSchema = z.object({
|
|
|
69
97
|
export const mcpGraphConfigSchema = z.object({
|
|
70
98
|
version: z.string(),
|
|
71
99
|
server: serverMetadataSchema,
|
|
100
|
+
servers: z.record(serverConfigSchema).optional(),
|
|
72
101
|
tools: z.array(toolDefinitionSchema),
|
|
73
102
|
nodes: z.array(nodeSchema),
|
|
74
103
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export declare class GraphExecutor {
|
|
|
8
8
|
private graph;
|
|
9
9
|
private clientManager;
|
|
10
10
|
constructor(config: McpGraphConfig, clientManager: McpClientManager);
|
|
11
|
+
private getServerConfig;
|
|
11
12
|
executeTool(toolName: string, toolInput: Record<string, unknown>): Promise<unknown>;
|
|
12
13
|
}
|
|
13
14
|
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/execution/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/execution/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAgC,MAAM,oBAAoB,CAAC;AAQvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,aAAa,CAAmB;gBAE5B,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB;IAMnE,OAAO,CAAC,eAAe;IAOjB,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,OAAO,CAAC;CA2EpB"}
|
|
@@ -18,6 +18,12 @@ export class GraphExecutor {
|
|
|
18
18
|
this.graph = new Graph(config.nodes);
|
|
19
19
|
this.clientManager = clientManager;
|
|
20
20
|
}
|
|
21
|
+
getServerConfig(serverName) {
|
|
22
|
+
if (!this.config.servers || !this.config.servers[serverName]) {
|
|
23
|
+
throw new Error(`Server configuration not found: ${serverName}`);
|
|
24
|
+
}
|
|
25
|
+
return this.config.servers[serverName];
|
|
26
|
+
}
|
|
21
27
|
async executeTool(toolName, toolInput) {
|
|
22
28
|
const tool = this.config.tools.find((t) => t.name === toolName);
|
|
23
29
|
if (!tool) {
|
|
@@ -55,7 +61,8 @@ export class GraphExecutor {
|
|
|
55
61
|
result = await executeTransformNode(node, context);
|
|
56
62
|
break;
|
|
57
63
|
case "mcp":
|
|
58
|
-
|
|
64
|
+
const serverConfig = this.getServerConfig(node.server);
|
|
65
|
+
result = await executeMcpToolNode(node, context, this.clientManager, serverConfig);
|
|
59
66
|
break;
|
|
60
67
|
case "switch":
|
|
61
68
|
result = await executeSwitchNode(node, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/execution/executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/execution/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MCP tool node executor
|
|
3
3
|
*/
|
|
4
|
-
import type { McpNode } from "../../types/config.js";
|
|
4
|
+
import type { McpNode, ServerConfig } from "../../types/config.js";
|
|
5
5
|
import type { ExecutionContext } from "../context.js";
|
|
6
6
|
import type { McpClientManager } from "../../mcp/client-manager.js";
|
|
7
|
-
export declare function executeMcpToolNode(node: McpNode, context: ExecutionContext, clientManager: McpClientManager): Promise<{
|
|
7
|
+
export declare function executeMcpToolNode(node: McpNode, context: ExecutionContext, clientManager: McpClientManager, serverConfig: ServerConfig): Promise<{
|
|
8
8
|
output: unknown;
|
|
9
9
|
nextNode: string;
|
|
10
10
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool-executor.d.ts","sourceRoot":"","sources":["../../../src/execution/nodes/mcp-tool-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-tool-executor.d.ts","sourceRoot":"","sources":["../../../src/execution/nodes/mcp-tool-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,gBAAgB,EAC/B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEhD"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { evaluateJsonata } from "../../expressions/jsonata.js";
|
|
5
5
|
import { logger } from "../../logger.js";
|
|
6
|
-
export async function executeMcpToolNode(node, context, clientManager) {
|
|
6
|
+
export async function executeMcpToolNode(node, context, clientManager, serverConfig) {
|
|
7
7
|
logger.debug(`Executing MCP tool node: ${node.id} (${node.server}.${node.tool})`);
|
|
8
8
|
const exprContext = context.getData();
|
|
9
9
|
// Pre-transform: Apply JSONata to format tool arguments
|
|
@@ -21,17 +21,8 @@ export async function executeMcpToolNode(node, context, clientManager) {
|
|
|
21
21
|
}
|
|
22
22
|
logger.debug(`MCP tool args: ${JSON.stringify(transformedArgs, null, 2)}`);
|
|
23
23
|
logger.debug(`Expression context: ${JSON.stringify(exprContext, null, 2)}`);
|
|
24
|
-
// Get or create MCP client
|
|
25
|
-
|
|
26
|
-
// In a real implementation, server config would come from somewhere
|
|
27
|
-
const command = "npx";
|
|
28
|
-
const args = [
|
|
29
|
-
"-y",
|
|
30
|
-
"@modelcontextprotocol/server-filesystem",
|
|
31
|
-
// This should come from config, but for now hardcode test directory
|
|
32
|
-
process.cwd() + "/tests/files",
|
|
33
|
-
];
|
|
34
|
-
const client = await clientManager.getClient(node.server, command, args);
|
|
24
|
+
// Get or create MCP client using server configuration
|
|
25
|
+
const client = await clientManager.getClient(node.server, serverConfig);
|
|
35
26
|
// Call the tool
|
|
36
27
|
const result = await client.callTool({
|
|
37
28
|
name: node.tool,
|
|
@@ -62,7 +53,6 @@ export async function executeMcpToolNode(node, context, clientManager) {
|
|
|
62
53
|
toolOutput = content[0];
|
|
63
54
|
}
|
|
64
55
|
logger.debug(`MCP tool output: ${JSON.stringify(toolOutput, null, 2)}`);
|
|
65
|
-
// Post-transform could go here if needed
|
|
66
56
|
const output = toolOutput;
|
|
67
57
|
context.setNodeOutput(node.id, output);
|
|
68
58
|
context.addHistory(node.id, transformedArgs, output);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool-executor.js","sourceRoot":"","sources":["../../../src/execution/nodes/mcp-tool-executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAa,EACb,OAAyB,EACzB,aAA+B
|
|
1
|
+
{"version":3,"file":"mcp-tool-executor.js","sourceRoot":"","sources":["../../../src/execution/nodes/mcp-tool-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/graph/validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/graph/validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,EAAE,CAyHvE"}
|
package/dist/graph/validator.js
CHANGED
|
@@ -78,6 +78,18 @@ export function validateGraph(config) {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
// Validate mcp nodes reference valid servers
|
|
82
|
+
for (const node of config.nodes) {
|
|
83
|
+
if (node.type === "mcp") {
|
|
84
|
+
const serverName = node.server;
|
|
85
|
+
if (!config.servers || !config.servers[serverName]) {
|
|
86
|
+
errors.push({
|
|
87
|
+
message: `MCP node "${node.id}" references non-existent server "${serverName}"`,
|
|
88
|
+
nodeId: node.id,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
81
93
|
// Validate exit nodes are reachable (basic check - can be enhanced)
|
|
82
94
|
for (const tool of config.tools) {
|
|
83
95
|
const entryNodes = config.nodes.filter((n) => n.type === "entry" && n.tool === tool.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/graph/validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/graph/validator.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
* mcpGraph - MCP server that runs a directed graph of MCP server calls
|
|
4
4
|
*/
|
|
5
5
|
import { logger } from './logger.js';
|
|
6
|
-
import {
|
|
7
|
-
import { validateGraph } from './graph/validator.js';
|
|
8
|
-
import { GraphExecutor } from './execution/executor.js';
|
|
9
|
-
import { McpClientManager } from './mcp/client-manager.js';
|
|
6
|
+
import { McpGraphApi } from './api.js';
|
|
10
7
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
11
8
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
12
9
|
import { ListToolsRequestSchema, CallToolRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
@@ -23,24 +20,13 @@ const { values } = parseArgs({
|
|
|
23
20
|
async function main() {
|
|
24
21
|
try {
|
|
25
22
|
const configPath = values.config || 'config.yaml';
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
const
|
|
29
|
-
if (errors.length > 0) {
|
|
30
|
-
logger.error('Graph validation failed:');
|
|
31
|
-
for (const error of errors) {
|
|
32
|
-
logger.error(` - ${error.message}`);
|
|
33
|
-
}
|
|
34
|
-
process.exit(1);
|
|
35
|
-
}
|
|
36
|
-
logger.info(`Loaded configuration: ${config.server.name} v${config.server.version}`);
|
|
37
|
-
logger.info(`Tools defined: ${config.tools.map(t => t.name).join(', ')}`);
|
|
38
|
-
const clientManager = new McpClientManager();
|
|
39
|
-
const executor = new GraphExecutor(config, clientManager);
|
|
23
|
+
// Create API instance (loads and validates config)
|
|
24
|
+
const api = new McpGraphApi(configPath);
|
|
25
|
+
const serverInfo = api.getServerInfo();
|
|
40
26
|
// Initialize MCP server
|
|
41
27
|
const server = new Server({
|
|
42
|
-
name:
|
|
43
|
-
version:
|
|
28
|
+
name: serverInfo.name,
|
|
29
|
+
version: serverInfo.version,
|
|
44
30
|
}, {
|
|
45
31
|
capabilities: {
|
|
46
32
|
tools: {},
|
|
@@ -48,7 +34,7 @@ async function main() {
|
|
|
48
34
|
});
|
|
49
35
|
// Register tools
|
|
50
36
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
51
|
-
tools:
|
|
37
|
+
tools: api.listTools().map(tool => ({
|
|
52
38
|
name: tool.name,
|
|
53
39
|
description: tool.description,
|
|
54
40
|
inputSchema: tool.inputSchema,
|
|
@@ -56,20 +42,16 @@ async function main() {
|
|
|
56
42
|
}));
|
|
57
43
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
58
44
|
const toolName = request.params.name;
|
|
59
|
-
const tool = config.tools.find(t => t.name === toolName);
|
|
60
|
-
if (!tool) {
|
|
61
|
-
throw new Error(`Tool not found: ${toolName}`);
|
|
62
|
-
}
|
|
63
45
|
logger.info(`Tool called: ${toolName}`);
|
|
64
|
-
const
|
|
46
|
+
const executionResult = await api.executeTool(toolName, request.params.arguments || {});
|
|
65
47
|
return {
|
|
66
48
|
content: [
|
|
67
49
|
{
|
|
68
50
|
type: 'text',
|
|
69
|
-
text: JSON.stringify(result),
|
|
51
|
+
text: JSON.stringify(executionResult.result),
|
|
70
52
|
},
|
|
71
53
|
],
|
|
72
|
-
structuredContent:
|
|
54
|
+
structuredContent: executionResult.structuredContent,
|
|
73
55
|
};
|
|
74
56
|
});
|
|
75
57
|
const transport = new StdioServerTransport();
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
* MCP client manager for external MCP servers
|
|
3
3
|
*/
|
|
4
4
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
5
|
+
import type { ServerConfig } from "../types/config.js";
|
|
5
6
|
export declare class McpClientManager {
|
|
6
7
|
private clients;
|
|
7
8
|
constructor();
|
|
8
|
-
getClient(serverName: string,
|
|
9
|
+
getClient(serverName: string, serverConfig: ServerConfig): Promise<Client>;
|
|
9
10
|
closeAll(): Promise<void>;
|
|
11
|
+
private createTransport;
|
|
10
12
|
}
|
|
11
13
|
//# sourceMappingURL=client-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/client-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"client-manager.d.ts","sourceRoot":"","sources":["../../src/mcp/client-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAsB;;IAM/B,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA0B1E,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAQjB,eAAe;CAkF9B"}
|
|
@@ -3,21 +3,20 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
5
5
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
6
|
+
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
7
|
+
import { StreamableHTTPClientTransport, } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
6
8
|
import { logger } from "../logger.js";
|
|
7
9
|
export class McpClientManager {
|
|
8
10
|
clients;
|
|
9
11
|
constructor() {
|
|
10
12
|
this.clients = new Map();
|
|
11
13
|
}
|
|
12
|
-
async getClient(serverName,
|
|
14
|
+
async getClient(serverName, serverConfig) {
|
|
13
15
|
if (this.clients.has(serverName)) {
|
|
14
16
|
return this.clients.get(serverName);
|
|
15
17
|
}
|
|
16
|
-
logger.info(`Creating MCP client for server: ${serverName}`);
|
|
17
|
-
const transport =
|
|
18
|
-
command,
|
|
19
|
-
args,
|
|
20
|
-
});
|
|
18
|
+
logger.info(`Creating MCP client for server: ${serverName} (type: ${getServerType(serverConfig)})`);
|
|
19
|
+
const transport = await this.createTransport(serverConfig);
|
|
21
20
|
const client = new Client({
|
|
22
21
|
name: `mcpgraph-${serverName}`,
|
|
23
22
|
version: "0.1.0",
|
|
@@ -35,5 +34,77 @@ export class McpClientManager {
|
|
|
35
34
|
}
|
|
36
35
|
this.clients.clear();
|
|
37
36
|
}
|
|
37
|
+
async createTransport(serverConfig) {
|
|
38
|
+
// Default to stdio if type is not specified
|
|
39
|
+
const configType = getServerType(serverConfig);
|
|
40
|
+
if (configType === "stdio" || !("type" in serverConfig)) {
|
|
41
|
+
const stdioConfig = serverConfig;
|
|
42
|
+
const transportOptions = {
|
|
43
|
+
command: stdioConfig.command,
|
|
44
|
+
args: stdioConfig.args,
|
|
45
|
+
env: process.env,
|
|
46
|
+
};
|
|
47
|
+
if (stdioConfig.cwd) {
|
|
48
|
+
transportOptions.cwd = stdioConfig.cwd;
|
|
49
|
+
}
|
|
50
|
+
return new StdioClientTransport(transportOptions);
|
|
51
|
+
}
|
|
52
|
+
else if (configType === "sse") {
|
|
53
|
+
const sseConfig = serverConfig;
|
|
54
|
+
const options = {};
|
|
55
|
+
// Merge headers into requestInit if provided
|
|
56
|
+
if (sseConfig.headers || sseConfig.requestInit) {
|
|
57
|
+
const existingRequestInit = sseConfig.requestInit || {};
|
|
58
|
+
const existingHeaders = existingRequestInit.headers
|
|
59
|
+
? new Headers(existingRequestInit.headers)
|
|
60
|
+
: new Headers();
|
|
61
|
+
// Add config headers to existing headers
|
|
62
|
+
if (sseConfig.headers) {
|
|
63
|
+
for (const [key, value] of Object.entries(sseConfig.headers)) {
|
|
64
|
+
existingHeaders.set(key, value);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
options.requestInit = {
|
|
68
|
+
...existingRequestInit,
|
|
69
|
+
headers: existingHeaders,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (sseConfig.eventSourceInit) {
|
|
73
|
+
options.eventSourceInit = sseConfig.eventSourceInit;
|
|
74
|
+
}
|
|
75
|
+
return new SSEClientTransport(new URL(sseConfig.url), options);
|
|
76
|
+
}
|
|
77
|
+
else if (configType === "streamableHttp") {
|
|
78
|
+
const httpConfig = serverConfig;
|
|
79
|
+
const options = {};
|
|
80
|
+
// Merge headers into requestInit if provided
|
|
81
|
+
if (httpConfig.headers || httpConfig.requestInit) {
|
|
82
|
+
const existingRequestInit = httpConfig.requestInit || {};
|
|
83
|
+
const existingHeaders = existingRequestInit.headers
|
|
84
|
+
? new Headers(existingRequestInit.headers)
|
|
85
|
+
: new Headers();
|
|
86
|
+
// Add config headers to existing headers
|
|
87
|
+
if (httpConfig.headers) {
|
|
88
|
+
for (const [key, value] of Object.entries(httpConfig.headers)) {
|
|
89
|
+
existingHeaders.set(key, value);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
options.requestInit = {
|
|
93
|
+
...existingRequestInit,
|
|
94
|
+
headers: existingHeaders,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return new StreamableHTTPClientTransport(new URL(httpConfig.url), options);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
throw new Error(`Unsupported server transport type: ${configType}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function getServerType(serverConfig) {
|
|
105
|
+
if (!("type" in serverConfig) || serverConfig.type === undefined || serverConfig.type === "stdio") {
|
|
106
|
+
return "stdio";
|
|
107
|
+
}
|
|
108
|
+
return serverConfig.type;
|
|
38
109
|
}
|
|
39
110
|
//# sourceMappingURL=client-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-manager.js","sourceRoot":"","sources":["../../src/mcp/client-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"client-manager.js","sourceRoot":"","sources":["../../src/mcp/client-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/types/config.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
export interface McpGraphConfig {
|
|
5
5
|
version: string;
|
|
6
6
|
server: ServerMetadata;
|
|
7
|
+
servers?: Record<string, ServerConfig>;
|
|
7
8
|
tools: ToolDefinition[];
|
|
8
9
|
nodes: NodeDefinition[];
|
|
9
10
|
}
|
|
@@ -12,6 +13,26 @@ export interface ServerMetadata {
|
|
|
12
13
|
version: string;
|
|
13
14
|
description: string;
|
|
14
15
|
}
|
|
16
|
+
export type ServerConfig = StdioServerConfig | SseServerConfig | StreamableHttpServerConfig;
|
|
17
|
+
export interface StdioServerConfig {
|
|
18
|
+
type?: "stdio";
|
|
19
|
+
command: string;
|
|
20
|
+
args: string[];
|
|
21
|
+
cwd?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SseServerConfig {
|
|
24
|
+
type: "sse";
|
|
25
|
+
url: string;
|
|
26
|
+
headers?: Record<string, string>;
|
|
27
|
+
eventSourceInit?: Record<string, unknown>;
|
|
28
|
+
requestInit?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
export interface StreamableHttpServerConfig {
|
|
31
|
+
type: "streamableHttp";
|
|
32
|
+
url: string;
|
|
33
|
+
headers?: Record<string, string>;
|
|
34
|
+
requestInit?: Record<string, unknown>;
|
|
35
|
+
}
|
|
15
36
|
export interface ToolDefinition {
|
|
16
37
|
name: string;
|
|
17
38
|
description: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,YAAY,EAAE,UAAU,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,QAAQ,GACR,OAAO,GACP,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAS,SAAQ,QAAQ;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CAEd;AAED,MAAM,WAAW,OAAQ,SAAQ,QAAQ;IACvC,IAAI,EAAE,KAAK,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAc,SAAQ,QAAQ;IAC7C,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAW,SAAQ,QAAQ;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example: Using the mcpGraph API programmatically
|
|
3
|
+
*
|
|
4
|
+
* This example shows how to use the McpGraphApi class in your own applications,
|
|
5
|
+
* such as a UX server or other programmatic interface.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { McpGraphApi } from '../src/api.js';
|
|
9
|
+
|
|
10
|
+
async function example() {
|
|
11
|
+
// Create an API instance (loads and validates config)
|
|
12
|
+
const api = new McpGraphApi('examples/count_files.yaml');
|
|
13
|
+
|
|
14
|
+
// Get server information
|
|
15
|
+
const serverInfo = api.getServerInfo();
|
|
16
|
+
console.log(`Server: ${serverInfo.name} v${serverInfo.version}`);
|
|
17
|
+
|
|
18
|
+
// List all available tools
|
|
19
|
+
const tools = api.listTools();
|
|
20
|
+
console.log(`Available tools: ${tools.map(t => t.name).join(', ')}`);
|
|
21
|
+
|
|
22
|
+
// Get information about a specific tool
|
|
23
|
+
const toolInfo = api.getTool('count_files');
|
|
24
|
+
if (toolInfo) {
|
|
25
|
+
console.log(`Tool: ${toolInfo.name}`);
|
|
26
|
+
console.log(`Description: ${toolInfo.description}`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Execute a tool
|
|
30
|
+
const result = await api.executeTool('count_files', {
|
|
31
|
+
directory: './tests/files',
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
console.log('Execution result:', result.result);
|
|
35
|
+
console.log('Structured content:', result.structuredContent);
|
|
36
|
+
|
|
37
|
+
// Clean up resources
|
|
38
|
+
await api.close();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Example: Validate config without creating an API instance
|
|
42
|
+
function validateConfigExample() {
|
|
43
|
+
const errors = McpGraphApi.validateConfig('examples/count_files.yaml');
|
|
44
|
+
if (errors.length > 0) {
|
|
45
|
+
console.error('Validation errors:');
|
|
46
|
+
for (const error of errors) {
|
|
47
|
+
console.error(` - ${error.message}`);
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
console.log('Config is valid!');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Example: Load and validate config
|
|
55
|
+
function loadAndValidateExample() {
|
|
56
|
+
const { config, errors } = McpGraphApi.loadAndValidateConfig('examples/count_files.yaml');
|
|
57
|
+
if (errors.length > 0) {
|
|
58
|
+
console.error('Validation errors:', errors);
|
|
59
|
+
} else {
|
|
60
|
+
console.log('Config loaded successfully');
|
|
61
|
+
console.log(`Tools: ${config.tools.map(t => t.name).join(', ')}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Run examples
|
|
66
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
67
|
+
example().catch(console.error);
|
|
68
|
+
}
|
|
69
|
+
|
|
@@ -2,9 +2,9 @@ version: "1.0"
|
|
|
2
2
|
|
|
3
3
|
# MCP Server Metadata
|
|
4
4
|
server:
|
|
5
|
-
name: "
|
|
5
|
+
name: "fileUtils"
|
|
6
6
|
version: "1.0.0"
|
|
7
|
-
description: "
|
|
7
|
+
description: "File utilities"
|
|
8
8
|
|
|
9
9
|
# Tool Definitions
|
|
10
10
|
tools:
|
|
@@ -25,6 +25,24 @@ tools:
|
|
|
25
25
|
type: "number"
|
|
26
26
|
description: "The number of files in the directory"
|
|
27
27
|
|
|
28
|
+
# MCP Servers used by the graph
|
|
29
|
+
servers:
|
|
30
|
+
# Stdio server (type is optional, defaults to stdio)
|
|
31
|
+
filesystem:
|
|
32
|
+
command: "npx"
|
|
33
|
+
args:
|
|
34
|
+
- "-y"
|
|
35
|
+
- "@modelcontextprotocol/server-filesystem"
|
|
36
|
+
- "/Users/bob/Documents/GitHub/mcpGraph/tests/files"
|
|
37
|
+
|
|
38
|
+
# Example: Streamable HTTP server (preferred for HTTP/SSE)
|
|
39
|
+
# httpServer:
|
|
40
|
+
# type: "streamableHttp"
|
|
41
|
+
# url: "https://api.example.com/mcp"
|
|
42
|
+
# headers:
|
|
43
|
+
# Authorization: "Bearer token"
|
|
44
|
+
# X-Custom-Header: "value"
|
|
45
|
+
|
|
28
46
|
# Graph Nodes
|
|
29
47
|
nodes:
|
|
30
48
|
# Entry node: Receives tool arguments
|
package/package.json
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcpgraph",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "MCP server that executes directed graphs of MCP server calls",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"type": "module",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/api.js",
|
|
9
|
+
"./api": "./dist/api.js"
|
|
10
|
+
},
|
|
7
11
|
"bin": {
|
|
8
12
|
"mcpgraph": "./dist/main.js"
|
|
9
13
|
},
|