@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 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
@@ -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;AACrD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,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"}
@@ -1,6 +1,7 @@
1
1
  import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
2
  import type { APIGroupConfig } from '@mondaydotcomorg/atp-protocol';
3
- interface MCPServerConfig {
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<any[]>;
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<any[]>;
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;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAqB,MAAM,+BAA+B,CAAC;AAGvF,UAAU,eAAe;IACxB,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;;;;OAIG;IACG,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAmD1E;;;;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,GAAG,EAAE,CAAC;IAQjC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAYnC;;;;;OAKG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CAU9E"}
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"}
@@ -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
- * Connects to an MCP server and retrieves its tools.
13
- * @param config - MCP server configuration
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 connectToMCPServer(config) {
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
- name: 'agent-tool-protocol-connector',
24
- version: '1.0.0',
25
- }, {
26
- capabilities: {},
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 toolsResult = await client.listTools();
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":"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"}
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
@@ -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.5",
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.5"
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';
@@ -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 MCPServerConfig {
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
- * Connects to an MCP server and retrieves its tools.
23
- * @param config - MCP server configuration
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 connectToMCPServer(config: MCPServerConfig): Promise<APIGroupConfig> {
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
- name: 'agent-tool-protocol-connector',
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 toolsResult = await client.listTools();
49
- const tools = toolsResult.tools || [];
50
-
51
- const functions: CustomFunctionDef[] = tools.map(
52
- (tool: { name: string; description?: string; inputSchema: unknown }) => {
53
- const inputSchema = convertMCPInputSchema(tool.inputSchema);
54
-
55
- return {
56
- name: tool.name,
57
- description: tool.description || `MCP tool: ${tool.name}`,
58
- inputSchema,
59
- handler: async (input: unknown) => {
60
- const result = await client.callTool({
61
- name: tool.name,
62
- arguments: input as Record<string, unknown>,
63
- });
64
- return result.content;
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<any[]> {
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<any[]> {
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;