@forestadmin/mcp-server 1.5.4 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/http-client/index.js +7 -5
- package/dist/server.js +7 -1
- package/dist/tools/describe-collection.js +9 -2
- package/dist/tools/execute-action.d.ts +5 -0
- package/dist/tools/execute-action.js +51 -0
- package/dist/tools/get-action-form.d.ts +5 -0
- package/dist/tools/get-action-form.js +74 -0
- package/dist/utils/action-helpers.d.ts +21 -0
- package/dist/utils/action-helpers.js +37 -0
- package/dist/utils/activity-logs-creator.js +2 -3
- package/dist/utils/agent-caller.d.ts +17 -7
- package/dist/utils/agent-caller.js +18 -3
- package/dist/utils/schema-fetcher.d.ts +16 -0
- package/dist/utils/schema-fetcher.js +24 -1
- package/package.json +3 -3
|
@@ -12,14 +12,16 @@ function createForestServerClient(options) {
|
|
|
12
12
|
if (!options.envSecret) {
|
|
13
13
|
throw new Error('envSecret is required to create ForestServerClient');
|
|
14
14
|
}
|
|
15
|
-
const
|
|
15
|
+
const forestHttpApi = new forestadmin_client_1.ForestHttpApi();
|
|
16
|
+
const serviceOptions = {
|
|
16
17
|
forestServerUrl: options.forestServerUrl,
|
|
17
18
|
envSecret: options.envSecret,
|
|
18
|
-
}
|
|
19
|
-
const
|
|
20
|
-
|
|
19
|
+
};
|
|
20
|
+
const schemaService = new forestadmin_client_1.SchemaService(forestHttpApi, serviceOptions);
|
|
21
|
+
const activityLogsService = new forestadmin_client_1.ActivityLogsService(forestHttpApi, {
|
|
22
|
+
...serviceOptions,
|
|
21
23
|
headers: { 'Forest-Application-Source': 'MCP' },
|
|
22
24
|
});
|
|
23
25
|
return new mcp_http_client_1.default(schemaService, activityLogsService);
|
|
24
26
|
}
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC1jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBV0EsNERBb0JDO0FBN0JELHdFQUFvRztBQUVwRyx3RUFBdUQ7QUE2QjlDLGlDQTdCRix5QkFBc0IsQ0E2QkU7QUF0Qi9CLFNBQWdCLHdCQUF3QixDQUN0QyxPQUF3QztJQUV4QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxrQ0FBYSxFQUFFLENBQUM7SUFDMUMsTUFBTSxjQUFjLEdBQUc7UUFDckIsZUFBZSxFQUFFLE9BQU8sQ0FBQyxlQUFlO1FBQ3hDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztLQUM3QixDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxrQ0FBYSxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN2RSxNQUFNLG1CQUFtQixHQUFHLElBQUksd0NBQW1CLENBQUMsYUFBYSxFQUFFO1FBQ2pFLEdBQUcsY0FBYztRQUNqQixPQUFPLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUU7S0FDaEQsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLHlCQUFzQixDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hFLENBQUMifQ==
|
package/dist/server.js
CHANGED
|
@@ -55,6 +55,8 @@ const mcp_paths_1 = require("./mcp-paths");
|
|
|
55
55
|
const create_1 = __importDefault(require("./tools/create"));
|
|
56
56
|
const delete_1 = __importDefault(require("./tools/delete"));
|
|
57
57
|
const describe_collection_1 = __importDefault(require("./tools/describe-collection"));
|
|
58
|
+
const execute_action_1 = __importDefault(require("./tools/execute-action"));
|
|
59
|
+
const get_action_form_1 = __importDefault(require("./tools/get-action-form"));
|
|
58
60
|
const list_1 = __importDefault(require("./tools/list"));
|
|
59
61
|
const list_related_1 = __importDefault(require("./tools/list-related"));
|
|
60
62
|
const update_1 = __importDefault(require("./tools/update"));
|
|
@@ -79,6 +81,8 @@ const SAFE_ARGUMENTS_FOR_LOGGING = {
|
|
|
79
81
|
update: ['collectionName', 'recordId'],
|
|
80
82
|
delete: ['collectionName', 'recordIds'],
|
|
81
83
|
describeCollection: ['collectionName'],
|
|
84
|
+
getActionForm: ['collectionName', 'actionName', 'recordIds'],
|
|
85
|
+
executeAction: ['collectionName', 'actionName', 'recordIds'],
|
|
82
86
|
};
|
|
83
87
|
/**
|
|
84
88
|
* Forest Admin MCP Server
|
|
@@ -122,6 +126,8 @@ class ForestMCPServer {
|
|
|
122
126
|
(0, create_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
123
127
|
(0, update_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
124
128
|
(0, delete_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
129
|
+
(0, get_action_form_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
130
|
+
(0, execute_action_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
125
131
|
];
|
|
126
132
|
this.logger('Info', `[MCP] Registered ${toolNames.length} tools: ${toolNames.join(', ')}`);
|
|
127
133
|
}
|
|
@@ -354,4 +360,4 @@ class ForestMCPServer {
|
|
|
354
360
|
}
|
|
355
361
|
}
|
|
356
362
|
exports.default = ForestMCPServer;
|
|
357
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzRDtBQUN0RCxzRUFBc0U7QUFDdEUsdUJBQXFCO0FBS3JCLDhGQUFtRztBQUNuRyxzRkFBdUY7QUFDdkYsMEdBQW9HO0FBQ3BHLGtHQUFtRztBQUNuRywrRUFHeUQ7QUFDekQsb0VBQW9FO0FBQ3BFLDBGQUFtRztBQUNuRyxnREFBd0I7QUFDeEIsc0RBQThCO0FBQzlCLDJDQUE2QjtBQUU3QixvRkFBMEQ7QUFDMUQsK0NBQXlEO0FBQ3pELDJDQUF5QztBQUN6Qyw0REFBK0M7QUFDL0MsNERBQStDO0FBQy9DLHNGQUF3RTtBQUN4RSx3REFBMkM7QUFDM0Msd0VBQTBEO0FBQzFELDREQUErQztBQUMvQywyREFBK0U7QUFDL0UsZ0ZBQXdFO0FBQ3hFLHVDQUEwQztBQVcxQyxTQUFTLGVBQWUsQ0FBQyxLQUFlO0lBQ3RDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLElBQUksS0FBSyxLQUFLLE1BQU07UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRWxGLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQy9DLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNs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
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzRDtBQUN0RCxzRUFBc0U7QUFDdEUsdUJBQXFCO0FBS3JCLDhGQUFtRztBQUNuRyxzRkFBdUY7QUFDdkYsMEdBQW9HO0FBQ3BHLGtHQUFtRztBQUNuRywrRUFHeUQ7QUFDekQsb0VBQW9FO0FBQ3BFLDBGQUFtRztBQUNuRyxnREFBd0I7QUFDeEIsc0RBQThCO0FBQzlCLDJDQUE2QjtBQUU3QixvRkFBMEQ7QUFDMUQsK0NBQXlEO0FBQ3pELDJDQUF5QztBQUN6Qyw0REFBK0M7QUFDL0MsNERBQStDO0FBQy9DLHNGQUF3RTtBQUN4RSw0RUFBOEQ7QUFDOUQsOEVBQStEO0FBQy9ELHdEQUEyQztBQUMzQyx3RUFBMEQ7QUFDMUQsNERBQStDO0FBQy9DLDJEQUErRTtBQUMvRSxnRkFBd0U7QUFDeEUsdUNBQTBDO0FBVzFDLFNBQVMsZUFBZSxDQUFDLEtBQWU7SUFDdEMsSUFBSSxLQUFLLEtBQUssT0FBTztRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEYsSUFBSSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFbEYsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDL0MsZUFBZSxDQUFDLEtBQUssQ0FB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
|
|
@@ -56,7 +56,14 @@ function declareDescribeCollectionTool(mcpServer, forestServerClient, logger, co
|
|
|
56
56
|
const argumentShape = createDescribeCollectionArgumentShape(collectionNames);
|
|
57
57
|
return (0, tool_with_logging_1.default)(mcpServer, 'describeCollection', {
|
|
58
58
|
title: 'Describe a collection',
|
|
59
|
-
description:
|
|
59
|
+
description: `Discover a collection's schema: fields, types, operators, relations, and available actions. Always call this first before querying or modifying data.
|
|
60
|
+
|
|
61
|
+
Actions properties:
|
|
62
|
+
- type: 'single' (requires one record), 'bulk' (multiple records), 'global' (no record needed)
|
|
63
|
+
- hasForm: true if action requires form input (use getActionForm to see fields)
|
|
64
|
+
- download: true if action returns a file download (not executable via AI)
|
|
65
|
+
|
|
66
|
+
Check \`_meta\` for data availability context.`,
|
|
60
67
|
inputSchema: argumentShape,
|
|
61
68
|
}, async (options, extra) => {
|
|
62
69
|
const { rpcClient } = (0, agent_caller_1.default)(extra);
|
|
@@ -133,4 +140,4 @@ function declareDescribeCollectionTool(mcpServer, forestServerClient, logger, co
|
|
|
133
140
|
});
|
|
134
141
|
}, logger);
|
|
135
142
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9kZXNjcmliZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZ0ZBLGdEQStHQztBQTNMRCw2QkFBd0I7QUFFeEIseUVBQWdEO0FBQ2hELDREQUlpQztBQUNqQyxtRkFBaUU7QUFDakUsbUZBQXlEO0FBVXpELFNBQVMscUNBQXFDLENBQUMsZUFBeUI7SUFDdEUsT0FBTztRQUNMLGNBQWMsRUFDWixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxlQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUU7S0FDN0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQixDQUNqQyxTQUFzRCxFQUN0RCxjQUFzQixFQUN0QixNQUFjO0lBRWQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRS9FLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUNKLE9BQU8sRUFDUCxtREFBbUQsY0FBYyx5QkFBeUIsQ0FDM0YsQ0FBQztZQUVG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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
2
|
+
import type { Logger } from '../server';
|
|
3
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
export default function declareExecuteActionTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
5
|
+
//# sourceMappingURL=execute-action.d.ts.map
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = declareExecuteActionTool;
|
|
7
|
+
const action_helpers_1 = require("../utils/action-helpers");
|
|
8
|
+
const agent_caller_1 = require("../utils/agent-caller");
|
|
9
|
+
const tool_with_logging_1 = __importDefault(require("../utils/tool-with-logging"));
|
|
10
|
+
const with_activity_log_1 = __importDefault(require("../utils/with-activity-log"));
|
|
11
|
+
function declareExecuteActionTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
12
|
+
const argumentShape = (0, action_helpers_1.createActionArgumentShape)(collectionNames);
|
|
13
|
+
return (0, tool_with_logging_1.default)(mcpServer, 'executeAction', {
|
|
14
|
+
title: 'Execute an action',
|
|
15
|
+
description: `Execute a specific action on one or more records. IMPORTANT: You MUST call getActionForm first and ensure "canExecute" is true before calling this tool.
|
|
16
|
+
|
|
17
|
+
Required workflow:
|
|
18
|
+
1. Call getActionForm to retrieve the form fields and check if the form is valid
|
|
19
|
+
2. If getActionForm returns "canExecute": false, call it again with values until "canExecute": true
|
|
20
|
+
3. Only then call executeAction with the same values used in the last getActionForm call
|
|
21
|
+
|
|
22
|
+
If you call executeAction with missing required fields, it will return an error with the missing fields instead of executing the action.`,
|
|
23
|
+
inputSchema: argumentShape,
|
|
24
|
+
}, async (options, extra) => {
|
|
25
|
+
const { rpcClient } = await (0, agent_caller_1.buildClientWithActions)(extra, forestServerClient);
|
|
26
|
+
// Cast to satisfy the type system - the API accepts both string[] and number[]
|
|
27
|
+
const recordIds = (options.recordIds ?? []);
|
|
28
|
+
return (0, with_activity_log_1.default)({
|
|
29
|
+
forestServerClient,
|
|
30
|
+
request: extra,
|
|
31
|
+
action: 'action',
|
|
32
|
+
context: {
|
|
33
|
+
collectionName: options.collectionName,
|
|
34
|
+
recordIds,
|
|
35
|
+
label: `triggered the action "${options.actionName}"`,
|
|
36
|
+
},
|
|
37
|
+
logger,
|
|
38
|
+
operation: async () => {
|
|
39
|
+
const action = await rpcClient
|
|
40
|
+
.collection(options.collectionName)
|
|
41
|
+
.action(options.actionName, { recordIds });
|
|
42
|
+
if (options.values) {
|
|
43
|
+
await action.setFields(options.values);
|
|
44
|
+
}
|
|
45
|
+
const result = await action.execute();
|
|
46
|
+
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
}, logger);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0ZS1hY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMvZXhlY3V0ZS1hY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFnQkEsMkNBd0RDO0FBcEVELDREQUFvRTtBQUNwRSx3REFBK0Q7QUFDL0QsbUZBQWlFO0FBQ2pFLG1GQUF5RDtBQVN6RCxTQUF3Qix3QkFBd0IsQ0FDOUMsU0FBb0IsRUFDcEIsa0JBQXNDLEVBQ3RDLE1BQWMsRUFDZCxrQkFBNEIsRUFBRTtJQUU5QixNQUFNLGFBQWEsR0FBRyxJQUFBLDBDQUF5QixFQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sSUFBQSwyQkFBdUIsRUFDNUIsU0FBUyxFQUNULGVBQWUsRUFDZjtRQUNFLEtBQUssRUFBRSxtQkFBbUI7UUFDMUIsV0FBVyxFQUFFOzs7Ozs7O3lJQU9zSDtRQUNuSSxXQUFXLEVBQUUsYUFBYTtLQUMzQixFQUNELEtBQUssRUFBRSxPQUE4QixFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLElBQUEscUNBQXNCLEVBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFOUUsK0VBQStFO1FBQy9FLE1BQU0sU0FBUyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQXdCLENBQUM7UUFFbkUsT0FBTyxJQUFBLDJCQUFlLEVBQUM7WUFDckIsa0JBQWtCO1lBQ2xCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDdEMsU0FBUztnQkFDVCxLQUFLLEVBQUUseUJBQXlCLE9BQU8sQ0FBQyxVQUFVLEdBQUc7YUFDdEQ7WUFDRCxNQUFNO1lBQ04sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVM7cUJBQzNCLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO3FCQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7Z0JBRTdDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNuQixNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO2dCQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUV0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
2
|
+
import type { Logger } from '../server';
|
|
3
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
export default function declareGetActionFormTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
5
|
+
//# sourceMappingURL=get-action-form.d.ts.map
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.default = declareGetActionFormTool;
|
|
7
|
+
const action_helpers_1 = require("../utils/action-helpers");
|
|
8
|
+
const agent_caller_1 = require("../utils/agent-caller");
|
|
9
|
+
const tool_with_logging_1 = __importDefault(require("../utils/tool-with-logging"));
|
|
10
|
+
function declareGetActionFormTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
11
|
+
const argumentShape = (0, action_helpers_1.createActionArgumentShape)(collectionNames);
|
|
12
|
+
return (0, tool_with_logging_1.default)(mcpServer, 'getActionForm', {
|
|
13
|
+
title: 'Retrieve action form',
|
|
14
|
+
description: `Retrieve and validate the form for a specific action. This tool MUST be called before executeAction to ensure all required fields are filled.
|
|
15
|
+
|
|
16
|
+
Workflow:
|
|
17
|
+
1. Call getActionForm with the action name and record IDs to get the form fields
|
|
18
|
+
2. Check the "canExecute" field in the response - if false, required fields are missing
|
|
19
|
+
3. Call getActionForm again with the "values" parameter to fill in the missing required fields
|
|
20
|
+
4. Repeat step 2-3 until "canExecute" is true
|
|
21
|
+
5. Only then call executeAction with the same values
|
|
22
|
+
|
|
23
|
+
The response includes:
|
|
24
|
+
- fields: Array of form fields with name, type, current value, isRequired flag, and enumValues (for Enum type fields)
|
|
25
|
+
- canExecute: Boolean indicating if all required fields have values (ready to execute)
|
|
26
|
+
- requiredFields: Array of field names that are required but missing values (empty when canExecute is true)
|
|
27
|
+
- skippedFields: Array of field names that were skipped because they no longer exist in the form (due to dynamic form behavior)`,
|
|
28
|
+
inputSchema: argumentShape,
|
|
29
|
+
}, async (options, extra) => {
|
|
30
|
+
const { rpcClient } = await (0, agent_caller_1.buildClientWithActions)(extra, forestServerClient);
|
|
31
|
+
// TODO: Enhance when more methods are available in the agent client helper
|
|
32
|
+
// https://github.com/ForestAdmin/forestadmin-experimental/pull/140
|
|
33
|
+
const recordIds = (options.recordIds ?? []);
|
|
34
|
+
const action = await rpcClient
|
|
35
|
+
.collection(options.collectionName)
|
|
36
|
+
.action(options.actionName, { recordIds });
|
|
37
|
+
let skippedFields = [];
|
|
38
|
+
if (options.values) {
|
|
39
|
+
skippedFields = await action.tryToSetFields(options.values);
|
|
40
|
+
}
|
|
41
|
+
const fields = action.getFields();
|
|
42
|
+
const requiredFields = fields
|
|
43
|
+
.filter(field => field.isRequired())
|
|
44
|
+
.filter(field => field.getValue() === undefined || field.getValue() === null)
|
|
45
|
+
.map(field => field.getName());
|
|
46
|
+
const canExecute = requiredFields.length === 0;
|
|
47
|
+
return {
|
|
48
|
+
content: [
|
|
49
|
+
{
|
|
50
|
+
type: 'text',
|
|
51
|
+
text: JSON.stringify({
|
|
52
|
+
fields: fields.map(field => {
|
|
53
|
+
const baseField = {
|
|
54
|
+
name: field.getName(),
|
|
55
|
+
type: field.getType(),
|
|
56
|
+
value: field.getValue(),
|
|
57
|
+
isRequired: field.isRequired() ?? false,
|
|
58
|
+
};
|
|
59
|
+
if (field.getType() === 'Enum') {
|
|
60
|
+
const enumField = action.getEnumField(field.getName());
|
|
61
|
+
return { ...baseField, enumValues: enumField.getOptions() ?? null };
|
|
62
|
+
}
|
|
63
|
+
return baseField;
|
|
64
|
+
}),
|
|
65
|
+
canExecute,
|
|
66
|
+
requiredFields,
|
|
67
|
+
skippedFields,
|
|
68
|
+
}),
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
}, logger);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWFjdGlvbi1mb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2dldC1hY3Rpb24tZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLDJDQXFGQztBQWhHRCw0REFBb0U7QUFDcEUsd0RBQStEO0FBQy9ELG1GQUFpRTtBQVNqRSxTQUF3Qix3QkFBd0IsQ0FDOUMsU0FBb0IsRUFDcEIsa0JBQXNDLEVBQ3RDLE1BQWMsRUFDZCxrQkFBNEIsRUFBRTtJQUU5QixNQUFNLGFBQWEsR0FBRyxJQUFBLDBDQUF5QixFQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sSUFBQSwyQkFBdUIsRUFDNUIsU0FBUyxFQUNULGVBQWUsRUFDZjtRQUNFLEtBQUssRUFBRSxzQkFBc0I7UUFDN0IsV0FBVyxFQUFFOzs7Ozs7Ozs7Ozs7O2dJQWE2RztRQUMxSCxXQUFXLEVBQUUsYUFBYTtLQUMzQixFQUNELEtBQUssRUFBRSxPQUE4QixFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzlDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLElBQUEscUNBQXNCLEVBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFOUUsMkVBQTJFO1FBQzNFLG1FQUFtRTtRQUNuRSxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLElBQUksRUFBRSxDQUF3QixDQUFDO1FBQ25FLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUzthQUMzQixVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQzthQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFFN0MsSUFBSSxhQUFhLEdBQWEsRUFBRSxDQUFDO1FBRWpDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLGFBQWEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFbEMsTUFBTSxjQUFjLEdBQUcsTUFBTTthQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDbkMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO2FBQzVFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBRWpDLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBRS9DLE9BQU87WUFDTCxPQUFPLEVBQUU7Z0JBQ1A7b0JBQ0UsSUFBSSxFQUFFLE1BQU07b0JBQ1osSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7d0JBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUN6QixNQUFNLFNBQVMsR0FBRztnQ0FDaEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUU7Z0NBQ3JCLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFO2dDQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQ0FDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsSUFBSSxLQUFLOzZCQUN4QyxDQUFDOzRCQUVGLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLE1BQU0sRUFBRSxDQUFDO2dDQUMvQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO2dDQUV2RCxPQUFPLEVBQUUsR0FBRyxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQzs0QkFDdEUsQ0FBQzs0QkFFRCxPQUFPLFNBQVMsQ0FBQzt3QkFDbkIsQ0FBQyxDQUFDO3dCQUNGLFVBQVU7d0JBQ1YsY0FBYzt3QkFDZCxhQUFhO3FCQUNkLENBQUM7aUJBQ0g7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod preprocess to handle LLM sending values as JSON string instead of object.
|
|
4
|
+
* Some LLMs may serialize the values object as a JSON string, so we need to parse it.
|
|
5
|
+
*/
|
|
6
|
+
export declare const valuesWithPreprocess: z.ZodPipe<z.ZodTransform<any, unknown>, z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
7
|
+
/**
|
|
8
|
+
* Creates the Zod argument shape for action tools (executeAction and getActionForm).
|
|
9
|
+
*
|
|
10
|
+
* @param collectionNames - Optional list of collection names for enum validation
|
|
11
|
+
* @returns Zod schema shape for action tool arguments
|
|
12
|
+
*/
|
|
13
|
+
export declare function createActionArgumentShape(collectionNames: string[]): {
|
|
14
|
+
collectionName: z.ZodString | z.ZodEnum<{
|
|
15
|
+
[x: string]: string;
|
|
16
|
+
}>;
|
|
17
|
+
actionName: z.ZodString;
|
|
18
|
+
recordIds: z.ZodNullable<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
19
|
+
values: z.ZodOptional<z.ZodPipe<z.ZodTransform<any, unknown>, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=action-helpers.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.valuesWithPreprocess = void 0;
|
|
4
|
+
exports.createActionArgumentShape = createActionArgumentShape;
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
/**
|
|
7
|
+
* Zod preprocess to handle LLM sending values as JSON string instead of object.
|
|
8
|
+
* Some LLMs may serialize the values object as a JSON string, so we need to parse it.
|
|
9
|
+
*/
|
|
10
|
+
exports.valuesWithPreprocess = zod_1.z.preprocess(val => {
|
|
11
|
+
if (typeof val !== 'string')
|
|
12
|
+
return val;
|
|
13
|
+
try {
|
|
14
|
+
return JSON.parse(val);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return val;
|
|
18
|
+
}
|
|
19
|
+
}, zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()));
|
|
20
|
+
/**
|
|
21
|
+
* Creates the Zod argument shape for action tools (executeAction and getActionForm).
|
|
22
|
+
*
|
|
23
|
+
* @param collectionNames - Optional list of collection names for enum validation
|
|
24
|
+
* @returns Zod schema shape for action tool arguments
|
|
25
|
+
*/
|
|
26
|
+
function createActionArgumentShape(collectionNames) {
|
|
27
|
+
return {
|
|
28
|
+
collectionName: collectionNames.length > 0 ? zod_1.z.enum(collectionNames) : zod_1.z.string(),
|
|
29
|
+
actionName: zod_1.z.string().describe('The name of the action.'),
|
|
30
|
+
recordIds: zod_1.z
|
|
31
|
+
.array(zod_1.z.union([zod_1.z.string(), zod_1.z.number()]))
|
|
32
|
+
.nullable()
|
|
33
|
+
.describe('The IDs of the records to execute the action on. Use null for global actions.'),
|
|
34
|
+
values: exports.valuesWithPreprocess.optional().describe('Optional values for the action form fields.'),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvYWN0aW9uLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0JBLDhEQVdDO0FBakNELDZCQUF3QjtBQUV4Qjs7O0dBR0c7QUFDVSxRQUFBLG9CQUFvQixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDckQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQUV0Qzs7Ozs7R0FLRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLGVBQXlCO0lBQ2pFLE9BQU87UUFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxJQUFJLENBQUMsZUFBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQzVGLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDO1FBQzFELFNBQVMsRUFBRSxPQUFDO2FBQ1QsS0FBSyxDQUFDLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN4QyxRQUFRLEVBQUU7YUFDVixRQUFRLENBQUMsK0VBQStFLENBQUM7UUFDNUYsTUFBTSxFQUFFLDRCQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyw2Q0FBNkMsQ0FBQztLQUNoRyxDQUFDO0FBQ0osQ0FBQyJ9
|
|
@@ -44,7 +44,7 @@ async function createPendingActivityLog(forestServerClient, request, action, ext
|
|
|
44
44
|
const MAX_RETRIES = 5;
|
|
45
45
|
const RETRY_DELAY_MS = 500;
|
|
46
46
|
async function updateActivityLogStatus(options, attempt = 1) {
|
|
47
|
-
const { forestServerClient, request, activityLog, status,
|
|
47
|
+
const { forestServerClient, request, activityLog, status, logger } = options;
|
|
48
48
|
// Use optional chaining with fallback since we're in error handling context
|
|
49
49
|
// and don't want to throw a different error if auth context is missing
|
|
50
50
|
const forestServerToken = request.authInfo?.extra?.forestServerToken ?? '';
|
|
@@ -53,7 +53,6 @@ async function updateActivityLogStatus(options, attempt = 1) {
|
|
|
53
53
|
forestServerToken,
|
|
54
54
|
activityLog,
|
|
55
55
|
status,
|
|
56
|
-
errorMessage,
|
|
57
56
|
});
|
|
58
57
|
}
|
|
59
58
|
catch (error) {
|
|
@@ -98,4 +97,4 @@ function markActivityLogAsSucceeded(options) {
|
|
|
98
97
|
logger('Error', `Unexpected error updating activity log to 'succeeded': ${error}`);
|
|
99
98
|
});
|
|
100
99
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9ncy1jcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FjdGl2aXR5LWxvZ3MtY3JlYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTZDQSwyQ0F3QkM7QUF5REQsMERBYUM7QUFTRCxnRUFZQztBQXRKRCx3RUFBZ0U7QUFJaEUsTUFBTSxjQUFjLEdBQStDO0lBQ2pFLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFLE1BQU07SUFDZCxNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsT0FBTztJQUNmLE1BQU0sRUFBRSxPQUFPO0lBQ2YsZUFBZSxFQUFFLE1BQU07SUFDdkIsa0JBQWtCLEVBQUUsTUFBTTtDQUMzQixDQUFDO0FBRUYsU0FBUyxjQUFjLENBQUMsT0FBK0Q7SUFJckYsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQztJQUNyRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUM7SUFFekQsSUFBSSxDQUFDLGlCQUFpQixJQUFJLE9BQU8saUJBQWlCLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVjLEtBQUssVUFBVSx3QkFBd0IsQ0FD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
|
|
@@ -1,13 +1,23 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
1
2
|
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
2
3
|
import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
export type AuthData = {
|
|
5
|
+
userId: number;
|
|
6
|
+
renderingId: number;
|
|
7
|
+
environmentId?: number;
|
|
8
|
+
projectId?: number;
|
|
9
|
+
environmentApiEndpoint: string;
|
|
10
|
+
};
|
|
3
11
|
export default function buildClient(request: RequestHandlerExtra<ServerRequest, ServerNotification>): {
|
|
4
12
|
rpcClient: import("@forestadmin/agent-client/dist/domains/remote-agent-client").default<Record<string, unknown>>;
|
|
5
|
-
authData:
|
|
6
|
-
userId: number;
|
|
7
|
-
renderingId: number;
|
|
8
|
-
environmentId?: number;
|
|
9
|
-
projectId?: number;
|
|
10
|
-
environmentApiEndpoint: string;
|
|
11
|
-
};
|
|
13
|
+
authData: AuthData;
|
|
12
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Builds a client with action endpoints loaded from the Forest schema.
|
|
17
|
+
* Use this for tools that need to execute actions.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildClientWithActions(request: RequestHandlerExtra<ServerRequest, ServerNotification>, forestServerClient: ForestServerClient): Promise<{
|
|
20
|
+
rpcClient: import("@forestadmin/agent-client/dist/domains/remote-agent-client").default<Record<string, unknown>>;
|
|
21
|
+
authData: AuthData;
|
|
22
|
+
}>;
|
|
13
23
|
//# sourceMappingURL=agent-caller.d.ts.map
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = buildClient;
|
|
4
|
+
exports.buildClientWithActions = buildClientWithActions;
|
|
4
5
|
const agent_client_1 = require("@forestadmin/agent-client");
|
|
5
|
-
|
|
6
|
+
const schema_fetcher_1 = require("./schema-fetcher");
|
|
7
|
+
function createClient(options) {
|
|
8
|
+
const { request, actionEndpoints = {} } = options;
|
|
6
9
|
const token = request.authInfo?.token;
|
|
7
10
|
const url = request.authInfo?.extra?.environmentApiEndpoint;
|
|
8
11
|
if (!token) {
|
|
@@ -14,11 +17,23 @@ function buildClient(request) {
|
|
|
14
17
|
const rpcClient = (0, agent_client_1.createRemoteAgentClient)({
|
|
15
18
|
token,
|
|
16
19
|
url,
|
|
17
|
-
actionEndpoints
|
|
20
|
+
actionEndpoints,
|
|
18
21
|
});
|
|
19
22
|
return {
|
|
20
23
|
rpcClient,
|
|
21
24
|
authData: request.authInfo?.extra,
|
|
22
25
|
};
|
|
23
26
|
}
|
|
24
|
-
|
|
27
|
+
function buildClient(request) {
|
|
28
|
+
return createClient({ request });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Builds a client with action endpoints loaded from the Forest schema.
|
|
32
|
+
* Use this for tools that need to execute actions.
|
|
33
|
+
*/
|
|
34
|
+
async function buildClientWithActions(request, forestServerClient) {
|
|
35
|
+
const schema = await (0, schema_fetcher_1.fetchForestSchema)(forestServerClient);
|
|
36
|
+
const actionEndpoints = (0, schema_fetcher_1.getActionEndpoints)(schema);
|
|
37
|
+
return createClient({ request, actionEndpoints });
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtY2FsbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FnZW50LWNhbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStDQSw4QkFJQztBQU1ELHdEQVFDO0FBNURELDREQUFvRTtBQUVwRSxxREFBeUU7QUFlekUsU0FBUyxZQUFZLENBQUMsT0FBMkI7SUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxlQUFlLEdBQUcsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ2xELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixDQUFDO0lBRTVELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLElBQUEsc0NBQXVCLEVBQUM7UUFDeEMsS0FBSztRQUNMLEdBQUc7UUFDSCxlQUFlO0tBQ2hCLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxTQUFTO1FBQ1QsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBaUI7S0FDOUMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUF3QixXQUFXLENBQ2pDLE9BQStEO0lBRS9ELE9BQU8sWUFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLHNCQUFzQixDQUMxQyxPQUErRCxFQUMvRCxrQkFBc0M7SUFFdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLGtDQUFpQixFQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDM0QsTUFBTSxlQUFlLEdBQUcsSUFBQSxtQ0FBa0IsRUFBQyxNQUFNLENBQUMsQ0FBQztJQUVuRCxPQUFPLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELENBQUMifQ==
|
|
@@ -39,4 +39,20 @@ export declare function setSchemaCache(schema: ForestSchema, fetchedAt?: number)
|
|
|
39
39
|
* Extracts actions from a collection in the Forest Admin schema.
|
|
40
40
|
*/
|
|
41
41
|
export declare function getActionsOfCollection(schema: ForestSchema, collectionName: string): ForestAction[];
|
|
42
|
+
export type ActionEndpointsByCollection = {
|
|
43
|
+
[collectionName: string]: {
|
|
44
|
+
[actionName: string]: {
|
|
45
|
+
name: string;
|
|
46
|
+
endpoint: string;
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Builds a mapping of action endpoints by collection from the Forest Admin schema.
|
|
52
|
+
* This is used by the agent client to resolve action endpoints.
|
|
53
|
+
*
|
|
54
|
+
* @param schema - The Forest Admin schema
|
|
55
|
+
* @returns A mapping of collection names to action names to their endpoints
|
|
56
|
+
*/
|
|
57
|
+
export declare function getActionEndpoints(schema: ForestSchema): ActionEndpointsByCollection;
|
|
42
58
|
//# sourceMappingURL=schema-fetcher.d.ts.map
|
|
@@ -6,6 +6,7 @@ exports.getFieldsOfCollection = getFieldsOfCollection;
|
|
|
6
6
|
exports.clearSchemaCache = clearSchemaCache;
|
|
7
7
|
exports.setSchemaCache = setSchemaCache;
|
|
8
8
|
exports.getActionsOfCollection = getActionsOfCollection;
|
|
9
|
+
exports.getActionEndpoints = getActionEndpoints;
|
|
9
10
|
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
10
11
|
let schemaCache = null;
|
|
11
12
|
/**
|
|
@@ -70,4 +71,26 @@ function getActionsOfCollection(schema, collectionName) {
|
|
|
70
71
|
}
|
|
71
72
|
return collection.actions || [];
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
+
/**
|
|
75
|
+
* Builds a mapping of action endpoints by collection from the Forest Admin schema.
|
|
76
|
+
* This is used by the agent client to resolve action endpoints.
|
|
77
|
+
*
|
|
78
|
+
* @param schema - The Forest Admin schema
|
|
79
|
+
* @returns A mapping of collection names to action names to their endpoints
|
|
80
|
+
*/
|
|
81
|
+
function getActionEndpoints(schema) {
|
|
82
|
+
const actionEndpoints = {};
|
|
83
|
+
for (const collection of schema.collections) {
|
|
84
|
+
if (collection.actions && collection.actions.length > 0) {
|
|
85
|
+
actionEndpoints[collection.name] = {};
|
|
86
|
+
for (const action of collection.actions) {
|
|
87
|
+
actionEndpoints[collection.name][action.name] = {
|
|
88
|
+
name: action.name,
|
|
89
|
+
endpoint: action.endpoint,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return actionEndpoints;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWZldGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2NoZW1hLWZldGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1Q0EsOENBbUJDO0FBUUQsZ0RBRUM7QUFFRCxzREFRQztBQUtELDRDQUVDO0FBS0Qsd0NBS0M7QUFLRCx3REFXQztBQWVELGdEQWlCQztBQW5IRCxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdkMsSUFBSSxXQUFXLEdBQXVCLElBQUksQ0FBQztBQUUzQzs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGtCQUFzQztJQUV0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdkIsb0VBQW9FO0lBQ3BFLElBQUksV0FBVyxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzVELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUUzRCxlQUFlO0lBQ2YsV0FBVyxHQUFHO1FBQ1osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFO1FBQ3ZCLFNBQVMsRUFBRSxHQUFHO0tBQ2YsQ0FBQztJQUVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFvQjtJQUNyRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFvQixFQUFFLGNBQXNCO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQztJQUUvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLGNBQWMsdUJBQXVCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUFvQixFQUFFLFNBQWtCO0lBQ3JFLFdBQVcsR0FBRztRQUNaLE1BQU07UUFDTixTQUFTLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7S0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxNQUFvQixFQUNwQixjQUFzQjtJQUV0QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7SUFFL0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxjQUFjLHVCQUF1QixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDbEMsQ0FBQztBQVFEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQW9CO0lBQ3JELE1BQU0sZUFBZSxHQUFnQyxFQUFFLENBQUM7SUFFeEQsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsSUFBSSxVQUFVLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hELGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRXRDLEtBQUssTUFBTSxNQUFNLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN4QyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRztvQkFDOUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUNqQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7aUJBQzFCLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Model Context Protocol server for Forest Admin with OAuth authentication",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"directory": "packages/mcp-server"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@forestadmin/agent-client": "1.
|
|
20
|
-
"@forestadmin/forestadmin-client": "1.37.
|
|
19
|
+
"@forestadmin/agent-client": "1.3.0",
|
|
20
|
+
"@forestadmin/forestadmin-client": "1.37.3",
|
|
21
21
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
22
22
|
"cors": "^2.8.5",
|
|
23
23
|
"express": "^5.2.1",
|