@mondaydotcomorg/atp-mcp-adapter 0.19.4 → 0.19.5
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/atp-to-mcp.d.ts +47 -0
- package/dist/atp-to-mcp.d.ts.map +1 -0
- package/dist/atp-to-mcp.js +57 -0
- package/dist/atp-to-mcp.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/atp-to-mcp.ts +80 -0
- package/src/index.ts +2 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { AgentToolProtocolClient, Tool } from '@mondaydotcomorg/atp-client';
|
|
2
|
+
/**
|
|
3
|
+
* MCP tool handler result
|
|
4
|
+
*/
|
|
5
|
+
export interface MCPToolResult {
|
|
6
|
+
content: Array<{
|
|
7
|
+
type: 'text';
|
|
8
|
+
text: string;
|
|
9
|
+
}>;
|
|
10
|
+
isError?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* MCP Server interface (minimal subset needed for tool registration)
|
|
14
|
+
*/
|
|
15
|
+
export interface MCPServerLike {
|
|
16
|
+
tool(name: string, description: string, schema: Record<string, unknown>, handler: (args: Record<string, unknown>) => Promise<MCPToolResult>): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Registers ATP tools with an MCP server.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
24
|
+
* import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';
|
|
25
|
+
* import { registerATPTools } from '@mondaydotcomorg/atp-mcp-adapter';
|
|
26
|
+
*
|
|
27
|
+
* const client = new AgentToolProtocolClient({ baseUrl: 'http://localhost:3000' });
|
|
28
|
+
* await client.init();
|
|
29
|
+
* await client.connect();
|
|
30
|
+
*
|
|
31
|
+
* const mcpServer = new Server({ name: 'my-server', version: '1.0.0' }, { capabilities: { tools: {} } });
|
|
32
|
+
* registerATPTools(client, mcpServer);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function registerATPTools(client: AgentToolProtocolClient, mcpServer: MCPServerLike): void;
|
|
36
|
+
/**
|
|
37
|
+
* Registers an array of ATP tools with an MCP server.
|
|
38
|
+
* Use this if you want more control over which tools to register.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const tools = client.getATPTools().filter(t => t.name !== 'search_api');
|
|
43
|
+
* registerToolsWithMCP(tools, mcpServer);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function registerToolsWithMCP(tools: Tool[], mcpServer: MCPServerLike): void;
|
|
47
|
+
//# sourceMappingURL=atp-to-mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atp-to-mcp.d.ts","sourceRoot":"","sources":["../src/atp-to-mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,IAAI,CACH,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,aAAa,CAAC,GAChE,IAAI,CAAC;CACR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAGhG;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAwBlF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers ATP tools with an MCP server.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```typescript
|
|
6
|
+
* import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
7
|
+
* import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';
|
|
8
|
+
* import { registerATPTools } from '@mondaydotcomorg/atp-mcp-adapter';
|
|
9
|
+
*
|
|
10
|
+
* const client = new AgentToolProtocolClient({ baseUrl: 'http://localhost:3000' });
|
|
11
|
+
* await client.init();
|
|
12
|
+
* await client.connect();
|
|
13
|
+
*
|
|
14
|
+
* const mcpServer = new Server({ name: 'my-server', version: '1.0.0' }, { capabilities: { tools: {} } });
|
|
15
|
+
* registerATPTools(client, mcpServer);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export function registerATPTools(client, mcpServer) {
|
|
19
|
+
const tools = client.getATPTools();
|
|
20
|
+
registerToolsWithMCP(tools, mcpServer);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Registers an array of ATP tools with an MCP server.
|
|
24
|
+
* Use this if you want more control over which tools to register.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const tools = client.getATPTools().filter(t => t.name !== 'search_api');
|
|
29
|
+
* registerToolsWithMCP(tools, mcpServer);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function registerToolsWithMCP(tools, mcpServer) {
|
|
33
|
+
for (const tool of tools) {
|
|
34
|
+
const schema = {
|
|
35
|
+
type: tool.inputSchema.type,
|
|
36
|
+
properties: tool.inputSchema.properties || {},
|
|
37
|
+
required: tool.inputSchema.required || [],
|
|
38
|
+
};
|
|
39
|
+
mcpServer.tool(tool.name, tool.description || '', schema, async (args) => {
|
|
40
|
+
try {
|
|
41
|
+
const result = await tool.func(args);
|
|
42
|
+
const resultText = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
|
|
43
|
+
return {
|
|
44
|
+
content: [{ type: 'text', text: resultText }],
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
49
|
+
return {
|
|
50
|
+
content: [{ type: 'text', text: `Error: ${errorMessage}` }],
|
|
51
|
+
isError: true,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=atp-to-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atp-to-mcp.js","sourceRoot":"","sources":["../src/atp-to-mcp.ts"],"names":[],"mappings":"AAsBA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA+B,EAAE,SAAwB;IACzF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACnC,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,SAAwB;IAC3E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG;YACd,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;YAC3B,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE;YAC7C,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE;SACzC,CAAC;QAEF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;YACjG,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrC,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzF,OAAO;oBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;iBACtD,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5E,OAAO;oBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC;oBACpE,OAAO,EAAE,IAAI;iBACb,CAAC;YACH,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;AACF,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { MCPConnector } from './mcp-connector.js';
|
|
2
2
|
export { MCPHttpConnector } from './http-connector.js';
|
|
3
|
+
export { registerATPTools, registerToolsWithMCP } from './atp-to-mcp.js';
|
|
3
4
|
export type { MCPTool, MCPPrompt } from './types.js';
|
|
5
|
+
export type { MCPToolResult, MCPServerLike } from './atp-to-mcp.js';
|
|
4
6
|
//# 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,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,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mondaydotcomorg/atp-mcp-adapter",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.5",
|
|
4
4
|
"description": "MCP compatibility adapter for Agent Tool Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"license": "MIT",
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@modelcontextprotocol/sdk": "^0.5.0",
|
|
45
|
-
"@mondaydotcomorg/atp-protocol": "0.19.
|
|
46
|
-
"@mondaydotcomorg/atp-server": "0.19.
|
|
45
|
+
"@mondaydotcomorg/atp-protocol": "0.19.5",
|
|
46
|
+
"@mondaydotcomorg/atp-server": "0.19.5",
|
|
47
47
|
"zod": "^3.25.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { AgentToolProtocolClient, Tool } from '@mondaydotcomorg/atp-client';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* MCP tool handler result
|
|
5
|
+
*/
|
|
6
|
+
export interface MCPToolResult {
|
|
7
|
+
content: Array<{ type: 'text'; text: string }>;
|
|
8
|
+
isError?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* MCP Server interface (minimal subset needed for tool registration)
|
|
13
|
+
*/
|
|
14
|
+
export interface MCPServerLike {
|
|
15
|
+
tool(
|
|
16
|
+
name: string,
|
|
17
|
+
description: string,
|
|
18
|
+
schema: Record<string, unknown>,
|
|
19
|
+
handler: (args: Record<string, unknown>) => Promise<MCPToolResult>
|
|
20
|
+
): void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Registers ATP tools with an MCP server.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
29
|
+
* import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';
|
|
30
|
+
* import { registerATPTools } from '@mondaydotcomorg/atp-mcp-adapter';
|
|
31
|
+
*
|
|
32
|
+
* const client = new AgentToolProtocolClient({ baseUrl: 'http://localhost:3000' });
|
|
33
|
+
* await client.init();
|
|
34
|
+
* await client.connect();
|
|
35
|
+
*
|
|
36
|
+
* const mcpServer = new Server({ name: 'my-server', version: '1.0.0' }, { capabilities: { tools: {} } });
|
|
37
|
+
* registerATPTools(client, mcpServer);
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export function registerATPTools(client: AgentToolProtocolClient, mcpServer: MCPServerLike): void {
|
|
41
|
+
const tools = client.getATPTools();
|
|
42
|
+
registerToolsWithMCP(tools, mcpServer);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Registers an array of ATP tools with an MCP server.
|
|
47
|
+
* Use this if you want more control over which tools to register.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* const tools = client.getATPTools().filter(t => t.name !== 'search_api');
|
|
52
|
+
* registerToolsWithMCP(tools, mcpServer);
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export function registerToolsWithMCP(tools: Tool[], mcpServer: MCPServerLike): void {
|
|
56
|
+
for (const tool of tools) {
|
|
57
|
+
const schema = {
|
|
58
|
+
type: tool.inputSchema.type,
|
|
59
|
+
properties: tool.inputSchema.properties || {},
|
|
60
|
+
required: tool.inputSchema.required || [],
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
mcpServer.tool(tool.name, tool.description || '', schema, async (args: Record<string, unknown>) => {
|
|
64
|
+
try {
|
|
65
|
+
const result = await tool.func(args);
|
|
66
|
+
const resultText = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
|
|
67
|
+
return {
|
|
68
|
+
content: [{ type: 'text' as const, text: resultText }],
|
|
69
|
+
};
|
|
70
|
+
} catch (error) {
|
|
71
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
72
|
+
return {
|
|
73
|
+
content: [{ type: 'text' as const, text: `Error: ${errorMessage}` }],
|
|
74
|
+
isError: true,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { MCPConnector } from './mcp-connector.js';
|
|
2
2
|
export { MCPHttpConnector } from './http-connector.js';
|
|
3
|
+
export { registerATPTools, registerToolsWithMCP } from './atp-to-mcp.js';
|
|
3
4
|
export type { MCPTool, MCPPrompt } from './types.js';
|
|
5
|
+
export type { MCPToolResult, MCPServerLike } from './atp-to-mcp.js';
|