@mondaydotcomorg/atp-mcp-adapter 0.21.5 → 0.21.7
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/mcp-connector.d.ts +22 -5
- package/dist/mcp-connector.d.ts.map +1 -1
- package/dist/mcp-connector.js +76 -10
- package/dist/mcp-connector.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/index.ts +1 -1
- package/src/mcp-connector.ts +113 -33
- package/src/types.ts +17 -0
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { MCPConnector } from './mcp-connector.js';
|
|
|
2
2
|
export { MCPHttpConnector } from './http-connector.js';
|
|
3
3
|
export { registerATPTools, registerToolsWithMCP } from './atp-to-mcp.js';
|
|
4
4
|
export { convertMCPInputSchema, convertMCPToolToFunction } from './schema-utils.js';
|
|
5
|
-
export type { MCPTool, MCPPrompt } from './types.js';
|
|
5
|
+
export type { MCPTool, MCPPrompt, MCPStdioServerConfig, MCPSSEServerConfig, MCPServerConfig } from './types.js';
|
|
6
6
|
export type { MCPToolResult, MCPServerLike } from './atp-to-mcp.js';
|
|
7
7
|
export type { MCPToolSchema, MCPToolDefinition } from './schema-utils.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACpF,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACpF,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChH,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/mcp-connector.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
2
|
import type { APIGroupConfig } from '@mondaydotcomorg/atp-protocol';
|
|
3
|
-
|
|
3
|
+
import type { MCPStdioServerConfig, MCPSSEServerConfig, MCPServerConfig } from './types.js';
|
|
4
|
+
interface MCPServerConfigLegacy {
|
|
4
5
|
name: string;
|
|
5
6
|
command: string;
|
|
6
7
|
args: string[];
|
|
@@ -13,12 +14,28 @@ export declare class MCPConnector {
|
|
|
13
14
|
private clients;
|
|
14
15
|
private currentClient;
|
|
15
16
|
private currentServerName;
|
|
17
|
+
/**
|
|
18
|
+
* Fetches all tools from an MCP server, handling pagination if present.
|
|
19
|
+
*/
|
|
20
|
+
private fetchAllTools;
|
|
21
|
+
/**
|
|
22
|
+
* Connects to an MCP server using stdio transport.
|
|
23
|
+
* @param config - MCP stdio server configuration
|
|
24
|
+
* @returns APIGroupConfig with converted tools
|
|
25
|
+
*/
|
|
26
|
+
connectToStdioServer(config: MCPStdioServerConfig): Promise<APIGroupConfig>;
|
|
27
|
+
/**
|
|
28
|
+
* Connects to an MCP server using SSE transport.
|
|
29
|
+
* @param config - MCP SSE server configuration
|
|
30
|
+
* @returns APIGroupConfig with converted tools
|
|
31
|
+
*/
|
|
32
|
+
connectToSSEServer(config: MCPSSEServerConfig): Promise<APIGroupConfig>;
|
|
16
33
|
/**
|
|
17
34
|
* Connects to an MCP server and retrieves its tools.
|
|
18
|
-
* @param config - MCP server configuration
|
|
35
|
+
* @param config - MCP server configuration (supports both stdio and SSE)
|
|
19
36
|
* @returns APIGroupConfig with converted tools
|
|
20
37
|
*/
|
|
21
|
-
connectToMCPServer(config: MCPServerConfig): Promise<APIGroupConfig>;
|
|
38
|
+
connectToMCPServer(config: MCPServerConfig | MCPServerConfigLegacy): Promise<APIGroupConfig>;
|
|
22
39
|
/**
|
|
23
40
|
* Connects to multiple MCP servers.
|
|
24
41
|
* @param configs - Array of MCP server configurations
|
|
@@ -39,12 +56,12 @@ export declare class MCPConnector {
|
|
|
39
56
|
* Lists all tools from the currently connected MCP server.
|
|
40
57
|
* @returns Array of tools
|
|
41
58
|
*/
|
|
42
|
-
listTools(): Promise<
|
|
59
|
+
listTools(): Promise<unknown[]>;
|
|
43
60
|
/**
|
|
44
61
|
* Lists all prompts from the currently connected MCP server.
|
|
45
62
|
* @returns Array of prompts
|
|
46
63
|
*/
|
|
47
|
-
listPrompts(): Promise<
|
|
64
|
+
listPrompts(): Promise<unknown[]>;
|
|
48
65
|
/**
|
|
49
66
|
* Calls a tool on the currently connected MCP server.
|
|
50
67
|
* @param name - Tool name
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-connector.d.ts","sourceRoot":"","sources":["../src/mcp-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-connector.d.ts","sourceRoot":"","sources":["../src/mcp-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAGnE,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,+BAA+B,CAAC;AAEvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE5F,UAAU,qBAAqB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,YAAY;IACxB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,iBAAiB,CAAuB;IAEhD;;OAEG;YACW,aAAa;IAc3B;;;;OAIG;IACG,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC;IA2CjF;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC;IAyC7E;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IAkBlG;;;;OAIG;IACG,wBAAwB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAIrF;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC;;;;OAIG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI3C;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAQrC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAYvC;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAU9E"}
|
package/dist/mcp-connector.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
2
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
3
|
+
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
3
4
|
import { convertMCPInputSchema } from './schema-utils.js';
|
|
4
5
|
/**
|
|
5
6
|
* MCPConnector connects to MCP servers and converts their tools to Agent Tool Protocol format.
|
|
@@ -9,28 +10,72 @@ export class MCPConnector {
|
|
|
9
10
|
currentClient = null;
|
|
10
11
|
currentServerName = null;
|
|
11
12
|
/**
|
|
12
|
-
*
|
|
13
|
-
|
|
13
|
+
* Fetches all tools from an MCP server, handling pagination if present.
|
|
14
|
+
*/
|
|
15
|
+
async fetchAllTools(client) {
|
|
16
|
+
const allTools = [];
|
|
17
|
+
let cursor;
|
|
18
|
+
do {
|
|
19
|
+
const toolsResult = await client.listTools(cursor ? { cursor } : undefined);
|
|
20
|
+
const tools = toolsResult.tools || [];
|
|
21
|
+
allTools.push(...tools);
|
|
22
|
+
cursor = toolsResult.nextCursor;
|
|
23
|
+
} while (cursor);
|
|
24
|
+
return allTools;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Connects to an MCP server using stdio transport.
|
|
28
|
+
* @param config - MCP stdio server configuration
|
|
14
29
|
* @returns APIGroupConfig with converted tools
|
|
15
30
|
*/
|
|
16
|
-
async
|
|
31
|
+
async connectToStdioServer(config) {
|
|
17
32
|
const transport = new StdioClientTransport({
|
|
18
33
|
command: config.command,
|
|
19
34
|
args: config.args,
|
|
20
35
|
env: config.env,
|
|
21
36
|
});
|
|
22
|
-
const client = new Client({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
37
|
+
const client = new Client({ name: 'agent-tool-protocol-connector', version: '1.0.0' }, { capabilities: {} });
|
|
38
|
+
await client.connect(transport);
|
|
39
|
+
this.clients.set(config.name, client);
|
|
40
|
+
this.currentClient = client;
|
|
41
|
+
this.currentServerName = config.name;
|
|
42
|
+
const tools = await this.fetchAllTools(client);
|
|
43
|
+
const functions = tools.map((tool) => {
|
|
44
|
+
const inputSchema = convertMCPInputSchema(tool.inputSchema);
|
|
45
|
+
return {
|
|
46
|
+
name: tool.name,
|
|
47
|
+
description: tool.description || `MCP tool: ${tool.name}`,
|
|
48
|
+
inputSchema,
|
|
49
|
+
handler: async (input) => {
|
|
50
|
+
const result = await client.callTool({
|
|
51
|
+
name: tool.name,
|
|
52
|
+
arguments: input,
|
|
53
|
+
});
|
|
54
|
+
return result.content;
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
return {
|
|
59
|
+
name: config.name,
|
|
60
|
+
type: 'mcp',
|
|
61
|
+
functions,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Connects to an MCP server using SSE transport.
|
|
66
|
+
* @param config - MCP SSE server configuration
|
|
67
|
+
* @returns APIGroupConfig with converted tools
|
|
68
|
+
*/
|
|
69
|
+
async connectToSSEServer(config) {
|
|
70
|
+
const transport = new SSEClientTransport(new URL(config.serverUrl), {
|
|
71
|
+
requestInit: { headers: config.headers || {} },
|
|
27
72
|
});
|
|
73
|
+
const client = new Client({ name: 'agent-tool-protocol-connector', version: '1.0.0' }, { capabilities: {} });
|
|
28
74
|
await client.connect(transport);
|
|
29
75
|
this.clients.set(config.name, client);
|
|
30
76
|
this.currentClient = client;
|
|
31
77
|
this.currentServerName = config.name;
|
|
32
|
-
const
|
|
33
|
-
const tools = toolsResult.tools || [];
|
|
78
|
+
const tools = await this.fetchAllTools(client);
|
|
34
79
|
const functions = tools.map((tool) => {
|
|
35
80
|
const inputSchema = convertMCPInputSchema(tool.inputSchema);
|
|
36
81
|
return {
|
|
@@ -52,6 +97,27 @@ export class MCPConnector {
|
|
|
52
97
|
functions,
|
|
53
98
|
};
|
|
54
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Connects to an MCP server and retrieves its tools.
|
|
102
|
+
* @param config - MCP server configuration (supports both stdio and SSE)
|
|
103
|
+
* @returns APIGroupConfig with converted tools
|
|
104
|
+
*/
|
|
105
|
+
async connectToMCPServer(config) {
|
|
106
|
+
if ('transport' in config) {
|
|
107
|
+
if (config.transport === 'sse') {
|
|
108
|
+
return this.connectToSSEServer(config);
|
|
109
|
+
}
|
|
110
|
+
return this.connectToStdioServer(config);
|
|
111
|
+
}
|
|
112
|
+
// Legacy support: treat as stdio config
|
|
113
|
+
return this.connectToStdioServer({
|
|
114
|
+
name: config.name,
|
|
115
|
+
transport: 'stdio',
|
|
116
|
+
command: config.command,
|
|
117
|
+
args: config.args,
|
|
118
|
+
env: config.env,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
55
121
|
/**
|
|
56
122
|
* Connects to multiple MCP servers.
|
|
57
123
|
* @param configs - Array of MCP server configurations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-connector.js","sourceRoot":"","sources":["../src/mcp-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-connector.js","sourceRoot":"","sources":["../src/mcp-connector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAU1D;;GAEG;AACH,MAAM,OAAO,YAAY;IAChB,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,aAAa,GAAkB,IAAI,CAAC;IACpC,iBAAiB,GAAkB,IAAI,CAAC;IAEhD;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,MAAc;QACzC,MAAM,QAAQ,GAAwE,EAAE,CAAC;QACzF,IAAI,MAA0B,CAAC;QAE/B,GAAG,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC5E,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;YACxB,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC;QACjC,CAAC,QAAQ,MAAM,EAAE;QAEjB,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,oBAAoB,CAAC,MAA4B;QACtD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;YAC1C,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;SACf,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CACxB,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,OAAO,EAAE,EAC3D,EAAE,YAAY,EAAE,EAAE,EAAE,CACpB,CAAC;QAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC;QAErC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAwB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzD,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5D,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,CAAC,IAAI,EAAE;gBACzD,WAAW;gBACX,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;oBACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;wBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,SAAS,EAAE,KAAgC;qBAC3C,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC,OAAO,CAAC;gBACvB,CAAC;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACN,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,KAAK;YACX,SAAS;SACT,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAA0B;QAClD,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;YACnE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE;SAC9C,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CACxB,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,OAAO,EAAE,EAC3D,EAAE,YAAY,EAAE,EAAE,EAAE,CACpB,CAAC;QAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC;QAErC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAwB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzD,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5D,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,CAAC,IAAI,EAAE;gBACzD,WAAW;gBACX,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,EAAE;oBACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;wBACpC,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,SAAS,EAAE,KAAgC;qBAC3C,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC,OAAO,CAAC;gBACvB,CAAC;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACN,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,KAAK;YACX,SAAS;SACT,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAA+C;QACvE,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YACD,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,wCAAwC;QACxC,OAAO,IAAI,CAAC,oBAAoB,CAAC;YAChC,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;SACf,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,wBAAwB,CAAC,OAA0B;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QAClB,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACjF,IAAI,CAAC;gBACJ,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS;QACd,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QACzD,OAAO,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;YAC7D,OAAO,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACX,CAAC;IACF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,KAA8B;QAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YAChD,IAAI;YACJ,SAAS,EAAE,KAAK;SAChB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,OAAO,CAAC;IACvB,CAAC;CACD"}
|
package/dist/types.d.ts
CHANGED
|
@@ -19,4 +19,18 @@ export interface MCPPrompt {
|
|
|
19
19
|
required?: boolean;
|
|
20
20
|
}>;
|
|
21
21
|
}
|
|
22
|
+
export interface MCPStdioServerConfig {
|
|
23
|
+
name: string;
|
|
24
|
+
transport: 'stdio';
|
|
25
|
+
command: string;
|
|
26
|
+
args: string[];
|
|
27
|
+
env?: Record<string, string>;
|
|
28
|
+
}
|
|
29
|
+
export interface MCPSSEServerConfig {
|
|
30
|
+
name: string;
|
|
31
|
+
transport: 'sse';
|
|
32
|
+
serverUrl: string;
|
|
33
|
+
headers?: Record<string, string>;
|
|
34
|
+
}
|
|
35
|
+
export type MCPServerConfig = MCPStdioServerConfig | MCPSSEServerConfig;
|
|
22
36
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACF;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;CACH"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,OAAO;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACF;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,kBAAkB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondaydotcomorg/atp-mcp-adapter",
|
|
3
|
-
"version": "0.21.
|
|
3
|
+
"version": "0.21.7",
|
|
4
4
|
"description": "MCP compatibility adapter for Agent Tool Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"license": "MIT",
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@mondaydotcomorg/atp-protocol": "0.19.22",
|
|
48
|
-
"@mondaydotcomorg/atp-server": "0.21.
|
|
48
|
+
"@mondaydotcomorg/atp-server": "0.21.6"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@modelcontextprotocol/sdk": ">=0.5.0",
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,6 @@ export { MCPConnector } from './mcp-connector.js';
|
|
|
2
2
|
export { MCPHttpConnector } from './http-connector.js';
|
|
3
3
|
export { registerATPTools, registerToolsWithMCP } from './atp-to-mcp.js';
|
|
4
4
|
export { convertMCPInputSchema, convertMCPToolToFunction } from './schema-utils.js';
|
|
5
|
-
export type { MCPTool, MCPPrompt } from './types.js';
|
|
5
|
+
export type { MCPTool, MCPPrompt, MCPStdioServerConfig, MCPSSEServerConfig, MCPServerConfig } from './types.js';
|
|
6
6
|
export type { MCPToolResult, MCPServerLike } from './atp-to-mcp.js';
|
|
7
7
|
export type { MCPToolSchema, MCPToolDefinition } from './schema-utils.js';
|
package/src/mcp-connector.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
2
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
3
|
+
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
3
4
|
import type { APIGroupConfig, CustomFunctionDef } from '@mondaydotcomorg/atp-protocol';
|
|
4
5
|
import { convertMCPInputSchema } from './schema-utils.js';
|
|
6
|
+
import type { MCPStdioServerConfig, MCPSSEServerConfig, MCPServerConfig } from './types.js';
|
|
5
7
|
|
|
6
|
-
interface
|
|
8
|
+
interface MCPServerConfigLegacy {
|
|
7
9
|
name: string;
|
|
8
10
|
command: string;
|
|
9
11
|
args: string[];
|
|
@@ -19,11 +21,28 @@ export class MCPConnector {
|
|
|
19
21
|
private currentServerName: string | null = null;
|
|
20
22
|
|
|
21
23
|
/**
|
|
22
|
-
*
|
|
23
|
-
|
|
24
|
+
* Fetches all tools from an MCP server, handling pagination if present.
|
|
25
|
+
*/
|
|
26
|
+
private async fetchAllTools(client: Client): Promise<Array<{ name: string; description?: string; inputSchema: unknown }>> {
|
|
27
|
+
const allTools: Array<{ name: string; description?: string; inputSchema: unknown }> = [];
|
|
28
|
+
let cursor: string | undefined;
|
|
29
|
+
|
|
30
|
+
do {
|
|
31
|
+
const toolsResult = await client.listTools(cursor ? { cursor } : undefined);
|
|
32
|
+
const tools = toolsResult.tools || [];
|
|
33
|
+
allTools.push(...tools);
|
|
34
|
+
cursor = toolsResult.nextCursor;
|
|
35
|
+
} while (cursor);
|
|
36
|
+
|
|
37
|
+
return allTools;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Connects to an MCP server using stdio transport.
|
|
42
|
+
* @param config - MCP stdio server configuration
|
|
24
43
|
* @returns APIGroupConfig with converted tools
|
|
25
44
|
*/
|
|
26
|
-
async
|
|
45
|
+
async connectToStdioServer(config: MCPStdioServerConfig): Promise<APIGroupConfig> {
|
|
27
46
|
const transport = new StdioClientTransport({
|
|
28
47
|
command: config.command,
|
|
29
48
|
args: config.args,
|
|
@@ -31,13 +50,8 @@ export class MCPConnector {
|
|
|
31
50
|
});
|
|
32
51
|
|
|
33
52
|
const client = new Client(
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
version: '1.0.0',
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
capabilities: {},
|
|
40
|
-
}
|
|
53
|
+
{ name: 'agent-tool-protocol-connector', version: '1.0.0' },
|
|
54
|
+
{ capabilities: {} }
|
|
41
55
|
);
|
|
42
56
|
|
|
43
57
|
await client.connect(transport);
|
|
@@ -45,28 +59,71 @@ export class MCPConnector {
|
|
|
45
59
|
this.currentClient = client;
|
|
46
60
|
this.currentServerName = config.name;
|
|
47
61
|
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
62
|
+
const tools = await this.fetchAllTools(client);
|
|
63
|
+
|
|
64
|
+
const functions: CustomFunctionDef[] = tools.map((tool) => {
|
|
65
|
+
const inputSchema = convertMCPInputSchema(tool.inputSchema);
|
|
66
|
+
|
|
67
|
+
return {
|
|
68
|
+
name: tool.name,
|
|
69
|
+
description: tool.description || `MCP tool: ${tool.name}`,
|
|
70
|
+
inputSchema,
|
|
71
|
+
handler: async (input: unknown) => {
|
|
72
|
+
const result = await client.callTool({
|
|
73
|
+
name: tool.name,
|
|
74
|
+
arguments: input as Record<string, unknown>,
|
|
75
|
+
});
|
|
76
|
+
return result.content;
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
name: config.name,
|
|
83
|
+
type: 'mcp',
|
|
84
|
+
functions,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Connects to an MCP server using SSE transport.
|
|
90
|
+
* @param config - MCP SSE server configuration
|
|
91
|
+
* @returns APIGroupConfig with converted tools
|
|
92
|
+
*/
|
|
93
|
+
async connectToSSEServer(config: MCPSSEServerConfig): Promise<APIGroupConfig> {
|
|
94
|
+
const transport = new SSEClientTransport(new URL(config.serverUrl), {
|
|
95
|
+
requestInit: { headers: config.headers || {} },
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
const client = new Client(
|
|
99
|
+
{ name: 'agent-tool-protocol-connector', version: '1.0.0' },
|
|
100
|
+
{ capabilities: {} }
|
|
68
101
|
);
|
|
69
102
|
|
|
103
|
+
await client.connect(transport);
|
|
104
|
+
this.clients.set(config.name, client);
|
|
105
|
+
this.currentClient = client;
|
|
106
|
+
this.currentServerName = config.name;
|
|
107
|
+
|
|
108
|
+
const tools = await this.fetchAllTools(client);
|
|
109
|
+
|
|
110
|
+
const functions: CustomFunctionDef[] = tools.map((tool) => {
|
|
111
|
+
const inputSchema = convertMCPInputSchema(tool.inputSchema);
|
|
112
|
+
|
|
113
|
+
return {
|
|
114
|
+
name: tool.name,
|
|
115
|
+
description: tool.description || `MCP tool: ${tool.name}`,
|
|
116
|
+
inputSchema,
|
|
117
|
+
handler: async (input: unknown) => {
|
|
118
|
+
const result = await client.callTool({
|
|
119
|
+
name: tool.name,
|
|
120
|
+
arguments: input as Record<string, unknown>,
|
|
121
|
+
});
|
|
122
|
+
return result.content;
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
|
|
70
127
|
return {
|
|
71
128
|
name: config.name,
|
|
72
129
|
type: 'mcp',
|
|
@@ -74,6 +131,29 @@ export class MCPConnector {
|
|
|
74
131
|
};
|
|
75
132
|
}
|
|
76
133
|
|
|
134
|
+
/**
|
|
135
|
+
* Connects to an MCP server and retrieves its tools.
|
|
136
|
+
* @param config - MCP server configuration (supports both stdio and SSE)
|
|
137
|
+
* @returns APIGroupConfig with converted tools
|
|
138
|
+
*/
|
|
139
|
+
async connectToMCPServer(config: MCPServerConfig | MCPServerConfigLegacy): Promise<APIGroupConfig> {
|
|
140
|
+
if ('transport' in config) {
|
|
141
|
+
if (config.transport === 'sse') {
|
|
142
|
+
return this.connectToSSEServer(config);
|
|
143
|
+
}
|
|
144
|
+
return this.connectToStdioServer(config);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Legacy support: treat as stdio config
|
|
148
|
+
return this.connectToStdioServer({
|
|
149
|
+
name: config.name,
|
|
150
|
+
transport: 'stdio',
|
|
151
|
+
command: config.command,
|
|
152
|
+
args: config.args,
|
|
153
|
+
env: config.env,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
77
157
|
/**
|
|
78
158
|
* Connects to multiple MCP servers.
|
|
79
159
|
* @param configs - Array of MCP server configurations
|
|
@@ -109,7 +189,7 @@ export class MCPConnector {
|
|
|
109
189
|
* Lists all tools from the currently connected MCP server.
|
|
110
190
|
* @returns Array of tools
|
|
111
191
|
*/
|
|
112
|
-
async listTools(): Promise<
|
|
192
|
+
async listTools(): Promise<unknown[]> {
|
|
113
193
|
if (!this.currentClient) {
|
|
114
194
|
throw new Error('Not connected to any MCP server');
|
|
115
195
|
}
|
|
@@ -121,7 +201,7 @@ export class MCPConnector {
|
|
|
121
201
|
* Lists all prompts from the currently connected MCP server.
|
|
122
202
|
* @returns Array of prompts
|
|
123
203
|
*/
|
|
124
|
-
async listPrompts(): Promise<
|
|
204
|
+
async listPrompts(): Promise<unknown[]> {
|
|
125
205
|
if (!this.currentClient) {
|
|
126
206
|
throw new Error('Not connected to any MCP server');
|
|
127
207
|
}
|
package/src/types.ts
CHANGED
|
@@ -21,3 +21,20 @@ export interface MCPPrompt {
|
|
|
21
21
|
required?: boolean;
|
|
22
22
|
}>;
|
|
23
23
|
}
|
|
24
|
+
|
|
25
|
+
export interface MCPStdioServerConfig {
|
|
26
|
+
name: string;
|
|
27
|
+
transport: 'stdio';
|
|
28
|
+
command: string;
|
|
29
|
+
args: string[];
|
|
30
|
+
env?: Record<string, string>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface MCPSSEServerConfig {
|
|
34
|
+
name: string;
|
|
35
|
+
transport: 'sse';
|
|
36
|
+
serverUrl: string;
|
|
37
|
+
headers?: Record<string, string>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export type MCPServerConfig = MCPStdioServerConfig | MCPSSEServerConfig;
|