@forestadmin/mcp-server 1.5.0 → 1.5.2
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/forest-oauth-provider.js +5 -2
- package/dist/http-client/index.d.ts +10 -0
- package/dist/http-client/index.js +25 -0
- package/dist/http-client/mcp-http-client.d.ts +14 -0
- package/dist/http-client/mcp-http-client.js +23 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -2
- package/dist/server.d.ts +5 -6
- package/dist/server.js +19 -15
- package/dist/tools/create.d.ts +2 -1
- package/dist/tools/create.js +3 -3
- package/dist/tools/delete.d.ts +2 -1
- package/dist/tools/delete.js +3 -3
- package/dist/tools/describe-collection.d.ts +3 -2
- package/dist/tools/describe-collection.js +4 -4
- package/dist/tools/list-related.d.ts +2 -1
- package/dist/tools/list-related.js +6 -6
- package/dist/tools/list.d.ts +2 -1
- package/dist/tools/list.js +4 -4
- package/dist/tools/update.d.ts +2 -1
- package/dist/tools/update.js +3 -3
- package/dist/utils/activity-logs-creator.d.ts +5 -16
- package/dist/utils/activity-logs-creator.js +50 -69
- package/dist/utils/schema-fetcher.d.ts +6 -39
- package/dist/utils/schema-fetcher.js +4 -27
- package/dist/utils/with-activity-log.d.ts +3 -2
- package/dist/utils/with-activity-log.js +7 -7
- package/dist/version.js +22 -3
- package/package.json +3 -3
|
@@ -138,7 +138,10 @@ class ForestOAuthProvider {
|
|
|
138
138
|
decoded = jsonwebtoken_1.default.verify(refreshToken, this.authSecret);
|
|
139
139
|
}
|
|
140
140
|
catch (error) {
|
|
141
|
-
|
|
141
|
+
if (error instanceof jsonwebtoken_1.default.TokenExpiredError) {
|
|
142
|
+
throw new errors_js_1.InvalidGrantError('Refresh token has expired');
|
|
143
|
+
}
|
|
144
|
+
throw new errors_js_1.InvalidGrantError('Invalid refresh token');
|
|
142
145
|
}
|
|
143
146
|
// Validate token type
|
|
144
147
|
if (decoded.type !== 'refresh') {
|
|
@@ -252,4 +255,4 @@ class ForestOAuthProvider {
|
|
|
252
255
|
}
|
|
253
256
|
}
|
|
254
257
|
exports.default = ForestOAuthProvider;
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LW9hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1vYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHlGQUFzRTtBQUN0RSwrRUFNeUQ7QUFDekQsZ0VBQXdDO0FBVXhDOztHQUVHO0FBQ0gsTUFBcUIsbUJBQW1CO0lBVXRDLFlBQVksRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxHQUNxQjtRQXdXN0Isd0RBQXdEO1FBQ3hELDRCQUF1QixHQUFHLElBQUksQ0FBQztRQXhXN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLDRCQUF1QixFQUFDO1lBQzFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLDRFQUE0RTtZQUM1RSxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsd0RBQXdELEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFF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
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LW9hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1vYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHlGQUFzRTtBQUN0RSwrRUFPeUQ7QUFDekQsZ0VBQXdDO0FBVXhDOztHQUVHO0FBQ0gsTUFBcUIsbUJBQW1CO0lBVXRDLFlBQVksRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxHQUNxQjtRQTRXN0Isd0RBQXdEO1FBQ3hELDRCQUF1QixHQUFHLElBQUksQ0FBQztRQTVXN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLDRCQUF1QixFQUFDO1lBQzFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLDRFQUE0RTtZQUM1RSxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsd0RBQXdELEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFF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
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ForestServerClient } from './types';
|
|
2
|
+
import ForestServerClientImpl from './mcp-http-client';
|
|
3
|
+
export interface CreateForestServerClientOptions {
|
|
4
|
+
forestServerUrl: string;
|
|
5
|
+
envSecret?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function createForestServerClient(options: CreateForestServerClientOptions): ForestServerClient;
|
|
8
|
+
export { ForestServerClientImpl };
|
|
9
|
+
export type { ActivityLogAction, ActivityLogResponse, ActivityLogsServiceInterface, ActivityLogType, CreateActivityLogParams, ForestServerClient, UpdateActivityLogStatusParams, ForestSchemaCollection, ForestSchemaField, ForestSchemaAction, SchemaServiceInterface, } from './types';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
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.ForestServerClientImpl = void 0;
|
|
7
|
+
exports.createForestServerClient = createForestServerClient;
|
|
8
|
+
const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
|
|
9
|
+
const mcp_http_client_1 = __importDefault(require("./mcp-http-client"));
|
|
10
|
+
exports.ForestServerClientImpl = mcp_http_client_1.default;
|
|
11
|
+
function createForestServerClient(options) {
|
|
12
|
+
if (!options.envSecret) {
|
|
13
|
+
throw new Error('envSecret is required to create ForestServerClient');
|
|
14
|
+
}
|
|
15
|
+
const schemaService = new forestadmin_client_1.SchemaService({
|
|
16
|
+
forestServerUrl: options.forestServerUrl,
|
|
17
|
+
envSecret: options.envSecret,
|
|
18
|
+
});
|
|
19
|
+
const activityLogsService = new forestadmin_client_1.ActivityLogsService({
|
|
20
|
+
forestServerUrl: options.forestServerUrl,
|
|
21
|
+
headers: { 'Forest-Application-Source': 'MCP' },
|
|
22
|
+
});
|
|
23
|
+
return new mcp_http_client_1.default(schemaService, activityLogsService);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC1jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBV0EsNERBaUJDO0FBMUJELHdFQUFxRjtBQUVyRix3RUFBdUQ7QUEwQjlDLGlDQTFCRix5QkFBc0IsQ0EwQkU7QUFuQi9CLFNBQWdCLHdCQUF3QixDQUN0QyxPQUF3QztJQUV4QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxrQ0FBYSxDQUFDO1FBQ3RDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtRQUN4QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDN0IsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLHdDQUFtQixDQUFDO1FBQ2xELGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtRQUN4QyxPQUFPLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUU7S0FDaEQsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLHlCQUFzQixDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hFLENBQUMifQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ActivityLogResponse, ActivityLogsServiceInterface, CreateActivityLogParams, ForestSchemaCollection, ForestServerClient, SchemaServiceInterface, UpdateActivityLogStatusParams } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Default implementation of ForestServerClient that uses SchemaService and ActivityLogsService.
|
|
4
|
+
* This provides a convenient API for MCP server operations.
|
|
5
|
+
*/
|
|
6
|
+
export default class ForestServerClientImpl implements ForestServerClient {
|
|
7
|
+
private readonly schemaService;
|
|
8
|
+
private readonly activityLogsService;
|
|
9
|
+
constructor(schemaService: SchemaServiceInterface, activityLogsService: ActivityLogsServiceInterface);
|
|
10
|
+
fetchSchema(): Promise<ForestSchemaCollection[]>;
|
|
11
|
+
createActivityLog(params: CreateActivityLogParams): Promise<ActivityLogResponse>;
|
|
12
|
+
updateActivityLogStatus(params: UpdateActivityLogStatusParams): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mcp-http-client.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Default implementation of ForestServerClient that uses SchemaService and ActivityLogsService.
|
|
5
|
+
* This provides a convenient API for MCP server operations.
|
|
6
|
+
*/
|
|
7
|
+
class ForestServerClientImpl {
|
|
8
|
+
constructor(schemaService, activityLogsService) {
|
|
9
|
+
this.schemaService = schemaService;
|
|
10
|
+
this.activityLogsService = activityLogsService;
|
|
11
|
+
}
|
|
12
|
+
async fetchSchema() {
|
|
13
|
+
return this.schemaService.getSchema();
|
|
14
|
+
}
|
|
15
|
+
async createActivityLog(params) {
|
|
16
|
+
return this.activityLogsService.createActivityLog(params);
|
|
17
|
+
}
|
|
18
|
+
async updateActivityLogStatus(params) {
|
|
19
|
+
return this.activityLogsService.updateActivityLogStatus(params);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.default = ForestServerClientImpl;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWh0dHAtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAtY2xpZW50L21jcC1odHRwLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBOzs7R0FHRztBQUNILE1BQXFCLHNCQUFzQjtJQUN6QyxZQUNtQixhQUFxQyxFQUNyQyxtQkFBaUQ7UUFEakQsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBQ3JDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBOEI7SUFDakUsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBK0I7UUFDckQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFxQztRQUNqRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUFqQkQseUNBaUJDIn0=
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { default as ForestMCPServer } from './server';
|
|
2
2
|
export type { ForestMCPServerOptions, HttpCallback } from './server';
|
|
3
3
|
export { MCP_PATHS, isMcpRoute } from './mcp-paths';
|
|
4
|
+
export { ForestServerClientImpl, createForestServerClient } from './http-client';
|
|
5
|
+
export type { ForestServerClient, ActivityLogsServiceInterface, SchemaServiceInterface, CreateForestServerClientOptions, } from './http-client';
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -3,11 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.isMcpRoute = exports.MCP_PATHS = exports.ForestMCPServer = void 0;
|
|
6
|
+
exports.createForestServerClient = exports.ForestServerClientImpl = exports.isMcpRoute = exports.MCP_PATHS = exports.ForestMCPServer = void 0;
|
|
7
7
|
// Library exports only - no side effects
|
|
8
8
|
var server_1 = require("./server");
|
|
9
9
|
Object.defineProperty(exports, "ForestMCPServer", { enumerable: true, get: function () { return __importDefault(server_1).default; } });
|
|
10
10
|
var mcp_paths_1 = require("./mcp-paths");
|
|
11
11
|
Object.defineProperty(exports, "MCP_PATHS", { enumerable: true, get: function () { return mcp_paths_1.MCP_PATHS; } });
|
|
12
12
|
Object.defineProperty(exports, "isMcpRoute", { enumerable: true, get: function () { return mcp_paths_1.isMcpRoute; } });
|
|
13
|
-
|
|
13
|
+
var http_client_1 = require("./http-client");
|
|
14
|
+
Object.defineProperty(exports, "ForestServerClientImpl", { enumerable: true, get: function () { return http_client_1.ForestServerClientImpl; } });
|
|
15
|
+
Object.defineProperty(exports, "createForestServerClient", { enumerable: true, get: function () { return http_client_1.createForestServerClient; } });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXlDO0FBQ3pDLG1DQUFzRDtBQUE3QywwSEFBQSxPQUFPLE9BQW1CO0FBRW5DLHlDQUFvRDtBQUEzQyxzR0FBQSxTQUFTLE9BQUE7QUFBRSx1R0FBQSxVQUFVLE9BQUE7QUFDOUIsNkNBQWlGO0FBQXhFLHFIQUFBLHNCQUFzQixPQUFBO0FBQUUsdUhBQUEsd0JBQXdCLE9BQUEifQ==
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import './polyfills';
|
|
2
|
+
import type { ForestServerClient } from './http-client';
|
|
2
3
|
import type { Express } from 'express';
|
|
3
4
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
5
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
@@ -20,18 +21,14 @@ export interface ForestMCPServerOptions {
|
|
|
20
21
|
authSecret?: string;
|
|
21
22
|
/** Optional logger function. Defaults to console logging. */
|
|
22
23
|
logger?: Logger;
|
|
24
|
+
/** Optional Forest server client for dependency injection (from agent integration) */
|
|
25
|
+
forestServerClient?: ForestServerClient;
|
|
23
26
|
}
|
|
24
27
|
/**
|
|
25
28
|
* Forest Admin MCP Server
|
|
26
29
|
*
|
|
27
30
|
* This server provides HTTP REST API access to Forest Admin operations
|
|
28
31
|
* with OAuth authentication support.
|
|
29
|
-
*
|
|
30
|
-
* Environment Variables (used as fallback when options not provided):
|
|
31
|
-
* - FOREST_ENV_SECRET: Your Forest Admin environment secret (required)
|
|
32
|
-
* - FOREST_AUTH_SECRET: Your Forest Admin authentication secret, it must be the same one as the one on your agent (required)
|
|
33
|
-
* - FOREST_SERVER_URL: Forest Admin server URL (optional)
|
|
34
|
-
* - MCP_SERVER_PORT: Port for the HTTP server (default: 3931)
|
|
35
32
|
*/
|
|
36
33
|
export default class ForestMCPServer {
|
|
37
34
|
mcpServer: McpServer;
|
|
@@ -40,10 +37,12 @@ export default class ForestMCPServer {
|
|
|
40
37
|
expressApp?: Express;
|
|
41
38
|
forestServerUrl: string;
|
|
42
39
|
forestAppUrl: string;
|
|
40
|
+
forestServerClient: ForestServerClient;
|
|
43
41
|
private envSecret?;
|
|
44
42
|
private authSecret?;
|
|
45
43
|
private logger;
|
|
46
44
|
constructor(options?: ForestMCPServerOptions);
|
|
45
|
+
private createDefaultForestServerClient;
|
|
47
46
|
private setupTools;
|
|
48
47
|
private ensureSecretsAreSet;
|
|
49
48
|
/**
|
package/dist/server.js
CHANGED
|
@@ -50,6 +50,7 @@ const cors_1 = __importDefault(require("cors"));
|
|
|
50
50
|
const express_1 = __importDefault(require("express"));
|
|
51
51
|
const http = __importStar(require("http"));
|
|
52
52
|
const forest_oauth_provider_1 = __importDefault(require("./forest-oauth-provider"));
|
|
53
|
+
const http_client_1 = require("./http-client");
|
|
53
54
|
const mcp_paths_1 = require("./mcp-paths");
|
|
54
55
|
const create_1 = __importDefault(require("./tools/create"));
|
|
55
56
|
const delete_1 = __importDefault(require("./tools/delete"));
|
|
@@ -75,6 +76,7 @@ const SAFE_ARGUMENTS_FOR_LOGGING = {
|
|
|
75
76
|
list: ['collectionName'],
|
|
76
77
|
listRelated: ['collectionName', 'relationName', 'parentRecordId'],
|
|
77
78
|
create: ['collectionName'],
|
|
79
|
+
update: ['collectionName', 'recordId'],
|
|
78
80
|
delete: ['collectionName', 'recordIds'],
|
|
79
81
|
describeCollection: ['collectionName'],
|
|
80
82
|
};
|
|
@@ -83,12 +85,6 @@ const SAFE_ARGUMENTS_FOR_LOGGING = {
|
|
|
83
85
|
*
|
|
84
86
|
* This server provides HTTP REST API access to Forest Admin operations
|
|
85
87
|
* with OAuth authentication support.
|
|
86
|
-
*
|
|
87
|
-
* Environment Variables (used as fallback when options not provided):
|
|
88
|
-
* - FOREST_ENV_SECRET: Your Forest Admin environment secret (required)
|
|
89
|
-
* - FOREST_AUTH_SECRET: Your Forest Admin authentication secret, it must be the same one as the one on your agent (required)
|
|
90
|
-
* - FOREST_SERVER_URL: Forest Admin server URL (optional)
|
|
91
|
-
* - MCP_SERVER_PORT: Port for the HTTP server (default: 3931)
|
|
92
88
|
*/
|
|
93
89
|
class ForestMCPServer {
|
|
94
90
|
constructor(options) {
|
|
@@ -97,27 +93,35 @@ class ForestMCPServer {
|
|
|
97
93
|
this.envSecret = options?.envSecret;
|
|
98
94
|
this.authSecret = options?.authSecret;
|
|
99
95
|
this.logger = options?.logger || defaultLogger;
|
|
96
|
+
// Use injected forestServerClient or create default
|
|
97
|
+
this.forestServerClient = options?.forestServerClient ?? this.createDefaultForestServerClient();
|
|
100
98
|
this.mcpServer = new mcp_js_1.McpServer({
|
|
101
99
|
name: version_1.NAME,
|
|
102
100
|
version: version_1.VERSION,
|
|
103
101
|
});
|
|
104
102
|
}
|
|
103
|
+
createDefaultForestServerClient() {
|
|
104
|
+
return (0, http_client_1.createForestServerClient)({
|
|
105
|
+
forestServerUrl: this.forestServerUrl,
|
|
106
|
+
envSecret: this.envSecret,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
105
109
|
async setupTools() {
|
|
106
110
|
let collectionNames = [];
|
|
107
111
|
try {
|
|
108
|
-
const schema = await (0, schema_fetcher_1.fetchForestSchema)(this.
|
|
112
|
+
const schema = await (0, schema_fetcher_1.fetchForestSchema)(this.forestServerClient);
|
|
109
113
|
collectionNames = (0, schema_fetcher_1.getCollectionNames)(schema);
|
|
110
114
|
}
|
|
111
115
|
catch (error) {
|
|
112
|
-
this.logger('Warn', `Failed to fetch forest schema
|
|
116
|
+
this.logger('Warn', `Failed to fetch forest schema: ${error}. MCP server will operate in degraded mode without collection name validation.`);
|
|
113
117
|
}
|
|
114
118
|
const toolNames = [
|
|
115
|
-
(0, describe_collection_1.default)(this.mcpServer, this.
|
|
116
|
-
(0, list_1.default)(this.mcpServer, this.
|
|
117
|
-
(0, list_related_1.default)(this.mcpServer, this.
|
|
118
|
-
(0, create_1.default)(this.mcpServer, this.
|
|
119
|
-
(0, update_1.default)(this.mcpServer, this.
|
|
120
|
-
(0, delete_1.default)(this.mcpServer, this.
|
|
119
|
+
(0, describe_collection_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
120
|
+
(0, list_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
121
|
+
(0, list_related_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
122
|
+
(0, create_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
123
|
+
(0, update_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
124
|
+
(0, delete_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
|
|
121
125
|
];
|
|
122
126
|
this.logger('Info', `[MCP] Registered ${toolNames.length} tools: ${toolNames.join(', ')}`);
|
|
123
127
|
}
|
|
@@ -350,4 +354,4 @@ class ForestMCPServer {
|
|
|
350
354
|
}
|
|
351
355
|
}
|
|
352
356
|
exports.default = ForestMCPServer;
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzRDtBQUN0RCxzRUFBc0U7QUFDdEUsdUJBQXFCO0FBSXJCLDhGQUFtRztBQUNuRyxzRkFBdUY7QUFDdkYsMEdBQW9HO0FBQ3BHLGtHQUFtRztBQUNuRywrRUFHeUQ7QUFDekQsb0VBQW9FO0FBQ3BFLDBGQUFtRztBQUNuRyxnREFBd0I7QUFDeEIsc0RBQThCO0FBQzlCLDJDQUE2QjtBQUU3QixvRkFBMEQ7QUFDMUQsMkNBQXlDO0FBQ3pDLDREQUErQztBQUMvQyw0REFBK0M7QUFDL0Msc0ZBQXdFO0FBQ3hFLHdEQUEyQztBQUMzQyx3RUFBMEQ7QUFDMUQsNERBQStDO0FBQy9DLDJEQUErRTtBQUMvRSxnRkFBd0U7QUFDeEUsdUNBQTBDO0FBVzFDLFNBQVMsZUFBZSxDQUFDLEtBQWU7SUFDdEMsSUFBSSxLQUFLLEtBQUssT0FBTztRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEYsSUFBSSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFbEYsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDL0MsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztB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
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzRDtBQUN0RCxzRUFBc0U7QUFDdEUsdUJBQXFCO0FBS3JCLDhGQUFtRztBQUNuRyxzRkFBdUY7QUFDdkYsMEdBQW9HO0FBQ3BHLGtHQUFtRztBQUNuRywrRUFHeUQ7QUFDekQsb0VBQW9FO0FBQ3BFLDBGQUFtRztBQUNuRyxnREFBd0I7QUFDeEIsc0RBQThCO0FBQzlCLDJDQUE2QjtBQUU3QixvRkFBMEQ7QUFDMUQsK0NBQXlEO0FBQ3pELDJDQUF5QztBQUN6Qyw0REFBK0M7QUFDL0MsNERBQStDO0FBQy9DLHNGQUF3RTtBQUN4RSx3REFBMkM7QUFDM0Msd0VBQTBEO0FBQzFELDREQUErQztBQUMvQywyREFBK0U7QUFDL0UsZ0ZBQXdFO0FBQ3hFLHVDQUEwQztBQVcxQyxTQUFTLGVBQWUsQ0FBQyxLQUFlO0lBQ3RDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLElBQUksS0FBSyxLQUFLLE1BQU07UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRWxGLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQy9DLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNs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
|
package/dist/tools/create.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
1
2
|
import type { Logger } from '../server';
|
|
2
3
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
-
export default function declareCreateTool(mcpServer: McpServer,
|
|
4
|
+
export default function declareCreateTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
4
5
|
//# sourceMappingURL=create.d.ts.map
|
package/dist/tools/create.js
CHANGED
|
@@ -25,7 +25,7 @@ function createArgumentShape(collectionNames) {
|
|
|
25
25
|
attributes: attributesWithPreprocess.describe('The attributes of the record to create. Must be an object with field names as keys.'),
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
|
-
function declareCreateTool(mcpServer,
|
|
28
|
+
function declareCreateTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
29
29
|
const argumentShape = createArgumentShape(collectionNames);
|
|
30
30
|
return (0, tool_with_logging_1.default)(mcpServer, 'create', {
|
|
31
31
|
title: 'Create a record',
|
|
@@ -34,7 +34,7 @@ function declareCreateTool(mcpServer, forestServerUrl, logger, collectionNames =
|
|
|
34
34
|
}, async (options, extra) => {
|
|
35
35
|
const { rpcClient } = (0, agent_caller_1.default)(extra);
|
|
36
36
|
return (0, with_activity_log_1.default)({
|
|
37
|
-
|
|
37
|
+
forestServerClient,
|
|
38
38
|
request: extra,
|
|
39
39
|
action: 'create',
|
|
40
40
|
context: { collectionName: options.collectionName },
|
|
@@ -48,4 +48,4 @@ function declareCreateTool(mcpServer, forestServerUrl, logger, collectionNames =
|
|
|
48
48
|
});
|
|
49
49
|
}, logger);
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQW9DQSxvQ0FvQ0M7QUFwRUQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELCtFQUErRTtBQUMvRSxNQUFNLHdCQUF3QixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQU90QyxTQUFTLG1CQUFtQixDQUFDLGVBQXlCO0lBQ3BELE9BQU87UUFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxJQUFJLENBQUMsZUFBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQzVGLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLENBQzNDLHFGQUFxRixDQUN0RjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBd0IsaUJBQWlCLENBQ3ZDLFNBQW9CLEVBQ3BCLGtCQUFzQyxFQUN0QyxNQUFjLEVBQ2Qsa0JBQTRCLEVBQUU7SUFFOUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFBLDJCQUF1QixFQUM1QixTQUFTLEVBQ1QsUUFBUSxFQUNSO1FBQ0UsS0FBSyxFQUFFLGlCQUFpQjtRQUN4QixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELFdBQVcsRUFBRSxhQUFhO0tBQzNCLEVBQ0QsS0FBSyxFQUFFLE9BQXVCLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsc0JBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUEsMkJBQWUsRUFBQztZQUNyQixrQkFBa0I7WUFDbEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUNuRCxNQUFNO1lBQ04sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVM7cUJBQzNCLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO3FCQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUU5QixPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMzRSxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
|
package/dist/tools/delete.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
1
2
|
import type { Logger } from '../server';
|
|
2
3
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
-
export default function declareDeleteTool(mcpServer: McpServer,
|
|
4
|
+
export default function declareDeleteTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
4
5
|
//# sourceMappingURL=delete.d.ts.map
|
package/dist/tools/delete.js
CHANGED
|
@@ -16,7 +16,7 @@ function createArgumentShape(collectionNames) {
|
|
|
16
16
|
.describe('The IDs of the records to delete.'),
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
function declareDeleteTool(mcpServer,
|
|
19
|
+
function declareDeleteTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
20
20
|
const argumentShape = createArgumentShape(collectionNames);
|
|
21
21
|
return (0, tool_with_logging_1.default)(mcpServer, 'delete', {
|
|
22
22
|
title: 'Delete records',
|
|
@@ -27,7 +27,7 @@ function declareDeleteTool(mcpServer, forestServerUrl, logger, collectionNames =
|
|
|
27
27
|
// Cast to satisfy the type system - the API accepts both string[] and number[]
|
|
28
28
|
const recordIds = options.recordIds;
|
|
29
29
|
return (0, with_activity_log_1.default)({
|
|
30
|
-
|
|
30
|
+
forestServerClient,
|
|
31
31
|
request: extra,
|
|
32
32
|
action: 'delete',
|
|
33
33
|
context: {
|
|
@@ -44,4 +44,4 @@ function declareDeleteTool(mcpServer, forestServerUrl, logger, collectionNames =
|
|
|
44
44
|
});
|
|
45
45
|
}, logger);
|
|
46
46
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2RlbGV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXlCQSxvQ0EwQ0M7QUEvREQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBT3pELFNBQVMsbUJBQW1CLENBQUMsZUFBeUI7SUFDcEQsT0FBTztRQUNMLGNBQWMsRUFDWixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxlQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDNUYsU0FBUyxFQUFFLE9BQUM7YUFDVCxLQUFLLENBQUMsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3hDLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQXdCLGlCQUFpQixDQUN2QyxTQUFvQixFQUNwQixrQkFBc0MsRUFDdEMsTUFBYyxFQUNkLGtCQUE0QixFQUFFO0lBRTlCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRTNELE9BQU8sSUFBQSwyQkFBdUIsRUFDNUIsU0FBUyxFQUNULFFBQVEsRUFDUjtRQUNFLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsV0FBVyxFQUFFLDJEQUEyRDtRQUN4RSxXQUFXLEVBQUUsYUFBYTtLQUMzQixFQUNELEtBQUssRUFBRSxPQUF1QixFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLHNCQUFXLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsK0VBQStFO1FBQy9FLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFnQyxDQUFDO1FBRTNELE9BQU8sSUFBQSwyQkFBZSxFQUFDO1lBQ3JCLGtCQUFrQjtZQUNsQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7Z0JBQ3RDLFNBQVM7YUFDVjtZQUNELE1BQU07WUFDTixTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU0sU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUVyRSxPQUFPO29CQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUN0RixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsRUFDRCxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUMifQ==
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
2
|
+
import type { Logger } from '../server';
|
|
1
3
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
|
|
3
|
-
export default function declareDescribeCollectionTool(mcpServer: McpServer, forestServerUrl: string, logger: Logger, collectionNames?: string[]): string;
|
|
4
|
+
export default function declareDescribeCollectionTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
4
5
|
//# sourceMappingURL=describe-collection.d.ts.map
|
|
@@ -52,7 +52,7 @@ function mapRelationType(relationship) {
|
|
|
52
52
|
return relationship || 'unknown';
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
-
function declareDescribeCollectionTool(mcpServer,
|
|
55
|
+
function declareDescribeCollectionTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
56
56
|
const argumentShape = createDescribeCollectionArgumentShape(collectionNames);
|
|
57
57
|
return (0, tool_with_logging_1.default)(mcpServer, 'describeCollection', {
|
|
58
58
|
title: 'Describe a collection',
|
|
@@ -61,14 +61,14 @@ function declareDescribeCollectionTool(mcpServer, forestServerUrl, logger, colle
|
|
|
61
61
|
}, async (options, extra) => {
|
|
62
62
|
const { rpcClient } = (0, agent_caller_1.default)(extra);
|
|
63
63
|
return (0, with_activity_log_1.default)({
|
|
64
|
-
|
|
64
|
+
forestServerClient,
|
|
65
65
|
request: extra,
|
|
66
66
|
action: 'describeCollection',
|
|
67
67
|
context: { collectionName: options.collectionName },
|
|
68
68
|
logger,
|
|
69
69
|
operation: async () => {
|
|
70
70
|
// Get schema from forest server (relations, isFilterable, isSortable, etc.)
|
|
71
|
-
const schema = await (0, schema_fetcher_1.fetchForestSchema)(
|
|
71
|
+
const schema = await (0, schema_fetcher_1.fetchForestSchema)(forestServerClient);
|
|
72
72
|
const schemaFields = (0, schema_fetcher_1.getFieldsOfCollection)(schema, options.collectionName);
|
|
73
73
|
// Try to get capabilities from agent (may be unavailable on older versions)
|
|
74
74
|
const collectionCapabilities = await tryFetchCapabilities(rpcClient, options.collectionName, logger);
|
|
@@ -133,4 +133,4 @@ function declareDescribeCollectionTool(mcpServer, forestServerUrl, logger, colle
|
|
|
133
133
|
});
|
|
134
134
|
}, logger);
|
|
135
135
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9kZXNjcmliZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZ0ZBLGdEQXlHQztBQXJMRCw2QkFBd0I7QUFFeEIseUVBQWdEO0FBQ2hELDREQUlpQztBQUNqQyxtRkFBaUU7QUFDakUsbUZBQXlEO0FBVXpELFNBQVMscUNBQXFDLENBQUMsZUFBeUI7SUFDdEUsT0FBTztRQUNMLGNBQWMsRUFDWixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxlQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUU7S0FDN0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQixDQUNqQyxTQUFzRCxFQUN0RCxjQUFzQixFQUN0QixNQUFjO0lBRWQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRS9FLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUNKLE9BQU8sRUFDUCxtREFBbUQsY0FBYyx5QkFBeUIsQ0FDM0YsQ0FBQztZQUVG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
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
1
2
|
import type { Logger } from '../server';
|
|
2
3
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
-
export default function declareListRelatedTool(mcpServer: McpServer,
|
|
4
|
+
export default function declareListRelatedTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
4
5
|
//# sourceMappingURL=list-related.d.ts.map
|
|
@@ -21,10 +21,10 @@ function createHasManyArgumentShape(collectionNames) {
|
|
|
21
21
|
* Creates an error enhancer for list-related operations.
|
|
22
22
|
* Enhances error messages with helpful context about available relations and sortable fields.
|
|
23
23
|
*/
|
|
24
|
-
function createErrorEnhancer(
|
|
24
|
+
function createErrorEnhancer(forestServerClient, options, logger) {
|
|
25
25
|
return async (errorMessage) => {
|
|
26
26
|
try {
|
|
27
|
-
const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(
|
|
27
|
+
const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(forestServerClient), options.collectionName);
|
|
28
28
|
const toManyRelations = fields.filter(field => field.relationship === 'HasMany' || field.relationship === 'BelongsToMany');
|
|
29
29
|
if (errorMessage?.toLowerCase()?.includes('not found') &&
|
|
30
30
|
!toManyRelations.some(field => field.field === options.relationName)) {
|
|
@@ -43,7 +43,7 @@ function createErrorEnhancer(forestServerUrl, options, logger) {
|
|
|
43
43
|
return errorMessage;
|
|
44
44
|
};
|
|
45
45
|
}
|
|
46
|
-
function declareListRelatedTool(mcpServer,
|
|
46
|
+
function declareListRelatedTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
47
47
|
const listArgumentShape = createHasManyArgumentShape(collectionNames);
|
|
48
48
|
return (0, tool_with_logging_1.default)(mcpServer, 'listRelated', {
|
|
49
49
|
title: 'List records from a relation',
|
|
@@ -60,7 +60,7 @@ function declareListRelatedTool(mcpServer, forestServerUrl, logger, collectionNa
|
|
|
60
60
|
}
|
|
61
61
|
const extraLabel = labelParts.length > 0 ? ` with ${labelParts.join(' and ')}` : '';
|
|
62
62
|
return (0, with_activity_log_1.default)({
|
|
63
|
-
|
|
63
|
+
forestServerClient,
|
|
64
64
|
request: extra,
|
|
65
65
|
action: 'listRelatedData',
|
|
66
66
|
context: {
|
|
@@ -87,8 +87,8 @@ function declareListRelatedTool(mcpServer, forestServerUrl, logger, collectionNa
|
|
|
87
87
|
}
|
|
88
88
|
return { content: [{ type: 'text', text: JSON.stringify(response) }] };
|
|
89
89
|
},
|
|
90
|
-
errorEnhancer: createErrorEnhancer(
|
|
90
|
+
errorEnhancer: createErrorEnhancer(forestServerClient, options, logger),
|
|
91
91
|
});
|
|
92
92
|
}, logger);
|
|
93
93
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWxhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2xpc3QtcmVsYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdFQSx5Q0FrRUM7QUFwSUQsNkJBQXdCO0FBRXhCLGlDQUFpRDtBQUNqRCx5RUFBZ0Q7QUFDaEQsNERBQW1GO0FBQ25GLG1GQUFpRTtBQUNqRSxtRkFBeUQ7QUFFekQsU0FBUywwQkFBMEIsQ0FBQyxlQUF5QjtJQUMzRCxPQUFPO1FBQ0wsR0FBRyxJQUFBLDhCQUF1QixFQUFDLGVBQWUsQ0FBQztRQUMzQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN4QixjQUFjLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNsRCxDQUFDO0FBQ0osQ0FBQztBQU9EOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLGtCQUFzQyxFQUN0QyxPQUF3QixFQUN4QixNQUFjO0lBRWQsT0FBTyxLQUFLLEVBQUUsWUFBb0IsRUFBRSxFQUFFO1FBQ3BDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUEsc0NBQXFCLEVBQ2xDLE1BQU0sSUFBQSxrQ0FBaUIsRUFBQyxrQkFBa0IsQ0FBQyxFQUMzQyxPQUFPLENBQUMsY0FBYyxDQUN2QixDQUFDO1lBRUYsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDbkMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLGVBQWUsQ0FDcEYsQ0FBQztZQUVGLElBQ0UsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUM7Z0JBQ2xELENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxD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
|
package/dist/tools/list.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
1
2
|
import type { Logger } from '../server';
|
|
2
3
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
4
|
import { z } from 'zod';
|
|
@@ -36,6 +37,6 @@ export declare function createListArgumentShape(collectionNames: string[]): {
|
|
|
36
37
|
}, z.core.$strip>>;
|
|
37
38
|
enableCount: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
38
39
|
};
|
|
39
|
-
export default function declareListTool(mcpServer: McpServer,
|
|
40
|
+
export default function declareListTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
40
41
|
export {};
|
|
41
42
|
//# sourceMappingURL=list.d.ts.map
|
package/dist/tools/list.js
CHANGED
|
@@ -62,7 +62,7 @@ function createListArgumentShape(collectionNames) {
|
|
|
62
62
|
collectionName: collectionNames.length > 0 ? zod_1.z.enum(collectionNames) : zod_1.z.string(),
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
|
-
function declareListTool(mcpServer,
|
|
65
|
+
function declareListTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
66
66
|
const listArgumentShape = createListArgumentShape(collectionNames);
|
|
67
67
|
return (0, tool_with_logging_1.default)(mcpServer, 'list', {
|
|
68
68
|
title: 'List records from a collection',
|
|
@@ -78,7 +78,7 @@ function declareListTool(mcpServer, forestServerUrl, logger, collectionNames = [
|
|
|
78
78
|
actionType = 'filter';
|
|
79
79
|
}
|
|
80
80
|
return (0, with_activity_log_1.default)({
|
|
81
|
-
|
|
81
|
+
forestServerClient,
|
|
82
82
|
request: extra,
|
|
83
83
|
action: actionType,
|
|
84
84
|
context: { collectionName: options.collectionName },
|
|
@@ -103,7 +103,7 @@ function declareListTool(mcpServer, forestServerUrl, logger, collectionNames = [
|
|
|
103
103
|
// Enhance "Invalid sort" errors with available sortable fields
|
|
104
104
|
if (errorMessage?.includes('Invalid sort')) {
|
|
105
105
|
try {
|
|
106
|
-
const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(
|
|
106
|
+
const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(forestServerClient), options.collectionName);
|
|
107
107
|
return `The sort field provided is invalid for this collection. Available fields for the collection ${options.collectionName} are: ${fields
|
|
108
108
|
.filter(field => field.isSortable)
|
|
109
109
|
.map(field => field.field)
|
|
@@ -118,4 +118,4 @@ function declareListTool(mcpServer, forestServerUrl, logger, collectionNames = [
|
|
|
118
118
|
});
|
|
119
119
|
}, logger);
|
|
120
120
|
}
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBaUVBLDBEQU1DO0FBRUQsa0NBOEVDO0FBbEpELDZCQUF3QjtBQUV4QiwrREFBNkM7QUFDN0MseUVBQWdEO0FBQ2hELDREQUFtRjtBQUNuRixtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELDRFQUE0RTtBQUM1RSxNQUFNLHFCQUFxQixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDL0MsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxxRUFBcUU7UUFDckUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0FBQ0gsQ0FBQyxFQUFFLGdCQUFZLENBQUMsQ0FBQztBQUVqQixNQUFNLGtCQUFrQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsY0FBYyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDMUIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsT0FBTyxFQUFFLHFCQUFxQjtTQUMzQixRQUFRLENBQ1Asb0pBQW9KLENBQ3JKO1NBQ0EsUUFBUSxFQUFFO0lBQ2IsSUFBSSxFQUFFLE9BQUM7U0FDSixNQUFNLENBQUM7UUFDTixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNqQixTQUFTLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRTtLQUN2QixDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2Isc0JBQXNCLEVBQUUsT0FBQztTQUN0QixPQUFPLEVBQUU7U0FDVCxRQUFRLEVBQUU7U0FDVixPQUFPLENBQUMsS0FBSyxD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
|
package/dist/tools/update.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
import type { ForestServerClient } from '../http-client';
|
|
1
2
|
import type { Logger } from '../server';
|
|
2
3
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
-
export default function declareUpdateTool(mcpServer: McpServer,
|
|
4
|
+
export default function declareUpdateTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
|
|
4
5
|
//# sourceMappingURL=update.d.ts.map
|
package/dist/tools/update.js
CHANGED
|
@@ -26,7 +26,7 @@ function createArgumentShape(collectionNames) {
|
|
|
26
26
|
attributes: attributesWithPreprocess.describe('The attributes to update. Must be an object with field names as keys.'),
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
|
-
function declareUpdateTool(mcpServer,
|
|
29
|
+
function declareUpdateTool(mcpServer, forestServerClient, logger, collectionNames = []) {
|
|
30
30
|
const argumentShape = createArgumentShape(collectionNames);
|
|
31
31
|
return (0, tool_with_logging_1.default)(mcpServer, 'update', {
|
|
32
32
|
title: 'Update a record',
|
|
@@ -35,7 +35,7 @@ function declareUpdateTool(mcpServer, forestServerUrl, logger, collectionNames =
|
|
|
35
35
|
}, async (options, extra) => {
|
|
36
36
|
const { rpcClient } = (0, agent_caller_1.default)(extra);
|
|
37
37
|
return (0, with_activity_log_1.default)({
|
|
38
|
-
|
|
38
|
+
forestServerClient,
|
|
39
39
|
request: extra,
|
|
40
40
|
action: 'update',
|
|
41
41
|
context: {
|
|
@@ -52,4 +52,4 @@ function declareUpdateTool(mcpServer, forestServerUrl, logger, collectionNames =
|
|
|
52
52
|
});
|
|
53
53
|
}, logger);
|
|
54
54
|
}
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXNDQSxvQ0F1Q0M7QUF6RUQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELCtFQUErRTtBQUMvRSxNQUFNLHdCQUF3QixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQVF0QyxTQUFTLG1CQUFtQixDQUFDLGVBQXlCO0lBQ3BELE9BQU87UUFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxJQUFJLENBQUMsZUFBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQzVGLFFBQVEsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDO1FBQ3ZGLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLENBQzNDLHVFQUF1RSxDQUN4RTtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBd0IsaUJBQWlCLENBQ3ZDLFNBQW9CLEVBQ3BCLGtCQUFzQyxFQUN0QyxNQUFjLEVBQ2Qsa0JBQTRCLEVBQUU7SUFFOUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFBLDJCQUF1QixFQUM1QixTQUFTLEVBQ1QsUUFBUSxFQUNSO1FBQ0UsS0FBSyxFQUFFLGlCQUFpQjtRQUN4QixXQUFXLEVBQUUsd0RBQXdEO1FBQ3JFLFdBQVcsRUFBRSxhQUFhO0tBQzNCLEVBQ0QsS0FBSyxFQUFFLE9BQXVCLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsc0JBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUEsMkJBQWUsRUFBQztZQUNyQixrQkFBa0I7WUFDbEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO2dCQUN0QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7YUFDM0I7WUFDRCxNQUFNO1lBQ04sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVM7cUJBQzNCLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO3FCQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNFLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDIn0=
|
|
@@ -1,26 +1,16 @@
|
|
|
1
|
+
import type { ActivityLogAction, ActivityLogResponse, ForestServerClient } from '../http-client';
|
|
1
2
|
import type { Logger } from '../server';
|
|
2
3
|
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
3
4
|
import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* These must match ActivityLogActions enum in forestadmin-server.
|
|
7
|
-
* @see packages/private-api/src/config/activity-logs.ts
|
|
8
|
-
*/
|
|
9
|
-
export type ActivityLogAction = 'index' | 'search' | 'filter' | 'action' | 'create' | 'update' | 'delete' | 'listRelatedData' | 'describeCollection';
|
|
10
|
-
type ActivityLogResponse = {
|
|
11
|
-
id: string;
|
|
12
|
-
attributes: {
|
|
13
|
-
index: string;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
export default function createPendingActivityLog(forestServerUrl: string, request: RequestHandlerExtra<ServerRequest, ServerNotification>, action: ActivityLogAction, extra?: {
|
|
5
|
+
export type { ActivityLogAction, ActivityLogResponse };
|
|
6
|
+
export default function createPendingActivityLog(forestServerClient: ForestServerClient, request: RequestHandlerExtra<ServerRequest, ServerNotification>, action: ActivityLogAction, extra?: {
|
|
17
7
|
collectionName?: string;
|
|
18
8
|
recordId?: string | number;
|
|
19
9
|
recordIds?: string[] | number[];
|
|
20
10
|
label?: string;
|
|
21
11
|
}): Promise<ActivityLogResponse>;
|
|
22
12
|
interface MarkActivityLogAsFailedOptions {
|
|
23
|
-
|
|
13
|
+
forestServerClient: ForestServerClient;
|
|
24
14
|
request: RequestHandlerExtra<ServerRequest, ServerNotification>;
|
|
25
15
|
activityLog: ActivityLogResponse;
|
|
26
16
|
errorMessage: string;
|
|
@@ -28,11 +18,10 @@ interface MarkActivityLogAsFailedOptions {
|
|
|
28
18
|
}
|
|
29
19
|
export declare function markActivityLogAsFailed(options: MarkActivityLogAsFailedOptions): void;
|
|
30
20
|
interface MarkActivityLogAsSucceededOptions {
|
|
31
|
-
|
|
21
|
+
forestServerClient: ForestServerClient;
|
|
32
22
|
request: RequestHandlerExtra<ServerRequest, ServerNotification>;
|
|
33
23
|
activityLog: ActivityLogResponse;
|
|
34
24
|
logger: Logger;
|
|
35
25
|
}
|
|
36
26
|
export declare function markActivityLogAsSucceeded(options: MarkActivityLogAsSucceededOptions): void;
|
|
37
|
-
export {};
|
|
38
27
|
//# sourceMappingURL=activity-logs-creator.d.ts.map
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = createPendingActivityLog;
|
|
4
4
|
exports.markActivityLogAsFailed = markActivityLogAsFailed;
|
|
5
5
|
exports.markActivityLogAsSucceeded = markActivityLogAsSucceeded;
|
|
6
|
+
const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
|
|
6
7
|
const ACTION_TO_TYPE = {
|
|
7
8
|
index: 'read',
|
|
8
9
|
search: 'read',
|
|
@@ -14,87 +15,67 @@ const ACTION_TO_TYPE = {
|
|
|
14
15
|
listRelatedData: 'read',
|
|
15
16
|
describeCollection: 'read',
|
|
16
17
|
};
|
|
17
|
-
|
|
18
|
-
const type = ACTION_TO_TYPE[action];
|
|
18
|
+
function getAuthContext(request) {
|
|
19
19
|
const forestServerToken = request.authInfo?.extra?.forestServerToken;
|
|
20
20
|
const renderingId = request.authInfo?.extra?.renderingId;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
headers: {
|
|
24
|
-
'Content-Type': 'application/json',
|
|
25
|
-
'Forest-Application-Source': 'MCP',
|
|
26
|
-
Authorization: `Bearer ${forestServerToken}`,
|
|
27
|
-
},
|
|
28
|
-
body: JSON.stringify({
|
|
29
|
-
data: {
|
|
30
|
-
id: 1,
|
|
31
|
-
type: 'activity-logs-requests',
|
|
32
|
-
attributes: {
|
|
33
|
-
type,
|
|
34
|
-
action,
|
|
35
|
-
label: extra?.label,
|
|
36
|
-
status: 'pending',
|
|
37
|
-
records: (extra?.recordIds || (extra?.recordId ? [extra.recordId] : [])),
|
|
38
|
-
},
|
|
39
|
-
relationships: {
|
|
40
|
-
rendering: {
|
|
41
|
-
data: {
|
|
42
|
-
id: renderingId,
|
|
43
|
-
type: 'renderings',
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
collection: {
|
|
47
|
-
data: extra?.collectionName
|
|
48
|
-
? {
|
|
49
|
-
id: extra.collectionName,
|
|
50
|
-
type: 'collections',
|
|
51
|
-
}
|
|
52
|
-
: null,
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
}),
|
|
57
|
-
});
|
|
58
|
-
if (!response.ok) {
|
|
59
|
-
throw new Error(`Failed to create activity log: ${await response.text()}`);
|
|
21
|
+
if (!forestServerToken || typeof forestServerToken !== 'string') {
|
|
22
|
+
throw new Error('Invalid or missing forestServerToken in authentication context');
|
|
60
23
|
}
|
|
61
|
-
|
|
62
|
-
|
|
24
|
+
// renderingId can be number (from JWT) or string - convert to string for API calls
|
|
25
|
+
if (renderingId === undefined || renderingId === null) {
|
|
26
|
+
throw new Error('Invalid or missing renderingId in authentication context');
|
|
27
|
+
}
|
|
28
|
+
return { forestServerToken, renderingId: String(renderingId) };
|
|
29
|
+
}
|
|
30
|
+
async function createPendingActivityLog(forestServerClient, request, action, extra) {
|
|
31
|
+
const type = ACTION_TO_TYPE[action];
|
|
32
|
+
const { forestServerToken, renderingId } = getAuthContext(request);
|
|
33
|
+
return forestServerClient.createActivityLog({
|
|
34
|
+
forestServerToken,
|
|
35
|
+
renderingId,
|
|
36
|
+
action,
|
|
37
|
+
type,
|
|
38
|
+
collectionName: extra?.collectionName,
|
|
39
|
+
recordId: extra?.recordId,
|
|
40
|
+
recordIds: extra?.recordIds,
|
|
41
|
+
label: extra?.label,
|
|
42
|
+
});
|
|
63
43
|
}
|
|
64
44
|
const MAX_RETRIES = 5;
|
|
65
45
|
const RETRY_DELAY_MS = 500;
|
|
66
46
|
async function updateActivityLogStatus(options, attempt = 1) {
|
|
67
|
-
const {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
},
|
|
76
|
-
body: JSON.stringify({
|
|
47
|
+
const { forestServerClient, request, activityLog, status, errorMessage, logger } = options;
|
|
48
|
+
// Use optional chaining with fallback since we're in error handling context
|
|
49
|
+
// and don't want to throw a different error if auth context is missing
|
|
50
|
+
const forestServerToken = request.authInfo?.extra?.forestServerToken ?? '';
|
|
51
|
+
try {
|
|
52
|
+
await forestServerClient.updateActivityLogStatus({
|
|
53
|
+
forestServerToken,
|
|
54
|
+
activityLog,
|
|
77
55
|
status,
|
|
78
|
-
|
|
79
|
-
}),
|
|
80
|
-
});
|
|
81
|
-
if (response.status === 404 && attempt < MAX_RETRIES) {
|
|
82
|
-
logger('Debug', `Activity log not found (attempt ${attempt}/${MAX_RETRIES}), retrying...`);
|
|
83
|
-
await new Promise(resolve => {
|
|
84
|
-
setTimeout(resolve, RETRY_DELAY_MS);
|
|
56
|
+
errorMessage,
|
|
85
57
|
});
|
|
86
|
-
return updateActivityLogStatus(options, attempt + 1);
|
|
87
58
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
59
|
+
catch (error) {
|
|
60
|
+
// Retry on 404 errors (activity log may not be immediately available)
|
|
61
|
+
if (error instanceof forestadmin_client_1.NotFoundError && attempt < MAX_RETRIES) {
|
|
62
|
+
logger('Debug', `Activity log not found (attempt ${attempt}/${MAX_RETRIES}), retrying...`);
|
|
63
|
+
await new Promise(resolve => {
|
|
64
|
+
setTimeout(resolve, RETRY_DELAY_MS);
|
|
65
|
+
});
|
|
66
|
+
return updateActivityLogStatus(options, attempt + 1);
|
|
67
|
+
}
|
|
68
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
69
|
+
logger('Error', `Failed to update activity log status to '${status}': ${errorMsg}`);
|
|
70
|
+
// Rethrow so callers are aware of the failure
|
|
71
|
+
throw error;
|
|
91
72
|
}
|
|
92
73
|
}
|
|
93
74
|
function markActivityLogAsFailed(options) {
|
|
94
|
-
const {
|
|
75
|
+
const { forestServerClient, request, activityLog, errorMessage, logger } = options;
|
|
95
76
|
// Fire-and-forget: don't block error response on activity log update
|
|
96
77
|
updateActivityLogStatus({
|
|
97
|
-
|
|
78
|
+
forestServerClient,
|
|
98
79
|
request,
|
|
99
80
|
activityLog,
|
|
100
81
|
status: 'failed',
|
|
@@ -105,10 +86,10 @@ function markActivityLogAsFailed(options) {
|
|
|
105
86
|
});
|
|
106
87
|
}
|
|
107
88
|
function markActivityLogAsSucceeded(options) {
|
|
108
|
-
const {
|
|
89
|
+
const { forestServerClient, request, activityLog, logger } = options;
|
|
109
90
|
// Fire-and-forget: don't block successful response on activity log update
|
|
110
91
|
updateActivityLogStatus({
|
|
111
|
-
|
|
92
|
+
forestServerClient,
|
|
112
93
|
request,
|
|
113
94
|
activityLog,
|
|
114
95
|
status: 'completed',
|
|
@@ -117,4 +98,4 @@ function markActivityLogAsSucceeded(options) {
|
|
|
117
98
|
logger('Error', `Unexpected error updating activity log to 'succeeded': ${error}`);
|
|
118
99
|
});
|
|
119
100
|
}
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9ncy1jcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FjdGl2aXR5LWxvZ3MtY3JlYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTZDQSwyQ0F3QkM7QUEwREQsMERBYUM7QUFTRCxnRUFZQztBQXZKRCx3RUFBZ0U7QUFJaEUsTUFBTSxjQUFjLEdBQStDO0lBQ2pFLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFLE1BQU07SUFDZCxNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsT0FBTztJQUNmLE1BQU0sRUFBRSxPQUFPO0lBQ2YsZUFBZSxFQUFFLE1BQU07SUFDdkIsa0JBQWtCLEVBQUUsTUFBTTtDQUMzQixDQUFDO0FBRUYsU0FBUyxjQUFjLENBQUMsT0FBK0Q7SUFJckYsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQztJQUNyRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUM7SUFFekQsSUFBSSxDQUFDLGlCQUFpQixJQUFJLE9BQU8saUJBQWlCLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVjLEtBQUssVUFBVSx3QkFBd0IsQ0FD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
|
|
@@ -1,46 +1,13 @@
|
|
|
1
|
+
import type { ForestSchemaAction, ForestSchemaCollection, ForestSchemaField, ForestServerClient } from '../http-client';
|
|
1
2
|
/**
|
|
2
3
|
* Schema Fetcher Utility
|
|
3
4
|
*
|
|
4
5
|
* Fetches the Forest Admin schema from the `/liana/forest-schema` endpoint
|
|
5
6
|
* and caches it for 24 hours.
|
|
6
7
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
isFilterable?: boolean;
|
|
11
|
-
isSortable?: boolean;
|
|
12
|
-
enum: string[] | null;
|
|
13
|
-
inverseOf?: string | null;
|
|
14
|
-
reference: string | null;
|
|
15
|
-
isReadOnly: boolean;
|
|
16
|
-
isRequired: boolean;
|
|
17
|
-
integration?: string | null;
|
|
18
|
-
validations?: unknown[];
|
|
19
|
-
defaultValue?: unknown;
|
|
20
|
-
isPrimaryKey: boolean;
|
|
21
|
-
relationship?: 'HasMany' | 'BelongsToMany' | 'BelongsTo' | 'HasOne' | null;
|
|
22
|
-
}
|
|
23
|
-
export interface ForestAction {
|
|
24
|
-
id: string;
|
|
25
|
-
name: string;
|
|
26
|
-
type: 'single' | 'bulk' | 'global';
|
|
27
|
-
endpoint: string;
|
|
28
|
-
description?: string;
|
|
29
|
-
submitButtonLabel?: string;
|
|
30
|
-
download: boolean;
|
|
31
|
-
fields: {
|
|
32
|
-
field: string;
|
|
33
|
-
}[];
|
|
34
|
-
hooks: {
|
|
35
|
-
load: boolean;
|
|
36
|
-
change: unknown[];
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export interface ForestCollection {
|
|
40
|
-
name: string;
|
|
41
|
-
fields: ForestField[];
|
|
42
|
-
actions?: ForestAction[];
|
|
43
|
-
}
|
|
8
|
+
export type ForestField = ForestSchemaField;
|
|
9
|
+
export type ForestAction = ForestSchemaAction;
|
|
10
|
+
export type ForestCollection = ForestSchemaCollection;
|
|
44
11
|
export interface ForestSchema {
|
|
45
12
|
collections: ForestCollection[];
|
|
46
13
|
}
|
|
@@ -48,10 +15,10 @@ export interface ForestSchema {
|
|
|
48
15
|
* Fetches the Forest Admin schema from the server.
|
|
49
16
|
* The schema is cached for 24 hours to reduce API calls.
|
|
50
17
|
*
|
|
51
|
-
* @param
|
|
18
|
+
* @param forestServerClient - The Forest server client to use for fetching the schema
|
|
52
19
|
* @returns The Forest Admin schema containing collections
|
|
53
20
|
*/
|
|
54
|
-
export declare function fetchForestSchema(
|
|
21
|
+
export declare function fetchForestSchema(forestServerClient: ForestServerClient): Promise<ForestSchema>;
|
|
55
22
|
/**
|
|
56
23
|
* Extracts collection names from the Forest Admin schema.
|
|
57
24
|
*
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.fetchForestSchema = fetchForestSchema;
|
|
7
4
|
exports.getCollectionNames = getCollectionNames;
|
|
@@ -9,42 +6,22 @@ exports.getFieldsOfCollection = getFieldsOfCollection;
|
|
|
9
6
|
exports.clearSchemaCache = clearSchemaCache;
|
|
10
7
|
exports.setSchemaCache = setSchemaCache;
|
|
11
8
|
exports.getActionsOfCollection = getActionsOfCollection;
|
|
12
|
-
const jsonapi_serializer_1 = __importDefault(require("jsonapi-serializer"));
|
|
13
9
|
const ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
14
10
|
let schemaCache = null;
|
|
15
11
|
/**
|
|
16
12
|
* Fetches the Forest Admin schema from the server.
|
|
17
13
|
* The schema is cached for 24 hours to reduce API calls.
|
|
18
14
|
*
|
|
19
|
-
* @param
|
|
15
|
+
* @param forestServerClient - The Forest server client to use for fetching the schema
|
|
20
16
|
* @returns The Forest Admin schema containing collections
|
|
21
17
|
*/
|
|
22
|
-
async function fetchForestSchema(
|
|
18
|
+
async function fetchForestSchema(forestServerClient) {
|
|
23
19
|
const now = Date.now();
|
|
24
20
|
// Return cached schema if it's still valid (less than 24 hours old)
|
|
25
21
|
if (schemaCache && now - schemaCache.fetchedAt < ONE_DAY_MS) {
|
|
26
22
|
return schemaCache.schema;
|
|
27
23
|
}
|
|
28
|
-
const
|
|
29
|
-
if (!envSecret) {
|
|
30
|
-
throw new Error('FOREST_ENV_SECRET environment variable is not set');
|
|
31
|
-
}
|
|
32
|
-
const response = await fetch(`${forestServerUrl}/liana/forest-schema`, {
|
|
33
|
-
method: 'GET',
|
|
34
|
-
headers: {
|
|
35
|
-
'forest-secret-key': envSecret,
|
|
36
|
-
'Content-Type': 'application/json',
|
|
37
|
-
},
|
|
38
|
-
});
|
|
39
|
-
if (!response.ok) {
|
|
40
|
-
const errorText = await response.text();
|
|
41
|
-
throw new Error(`Failed to fetch forest schema: ${errorText}`);
|
|
42
|
-
}
|
|
43
|
-
const schema = (await response.json());
|
|
44
|
-
const serializer = new jsonapi_serializer_1.default.Deserializer({
|
|
45
|
-
keyForAttribute: 'camelCase',
|
|
46
|
-
});
|
|
47
|
-
const collections = (await serializer.deserialize(schema));
|
|
24
|
+
const collections = await forestServerClient.fetchSchema();
|
|
48
25
|
// Update cache
|
|
49
26
|
schemaCache = {
|
|
50
27
|
schema: { collections },
|
|
@@ -93,4 +70,4 @@ function getActionsOfCollection(schema, collectionName) {
|
|
|
93
70
|
}
|
|
94
71
|
return collection.actions || [];
|
|
95
72
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWZldGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2NoZW1hLWZldGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1Q0EsOENBbUJDO0FBUUQsZ0RBRUM7QUFFRCxzREFRQztBQUtELDRDQUVDO0FBS0Qsd0NBS0M7QUFLRCx3REFXQztBQW5GRCxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdkMsSUFBSSxXQUFXLEdBQXVCLElBQUksQ0FBQztBQUUzQzs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGtCQUFzQztJQUV0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdkIsb0VBQW9FO0lBQ3BFLElBQUksV0FBVyxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzVELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUUzRCxlQUFlO0lBQ2YsV0FBVyxHQUFHO1FBQ1osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFO1FBQ3ZCLFNBQVMsRUFBRSxHQUFHO0tBQ2YsQ0FBQztJQUVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFvQjtJQUNyRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFvQixFQUFFLGNBQXNCO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQztJQUUvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLGNBQWMsdUJBQXVCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUFvQixFQUFFLFNBQWtCO0lBQ3JFLFdBQVcsR0FBRztRQUNaLE1BQU07UUFDTixTQUFTLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7S0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxNQUFvQixFQUNwQixjQUFzQjtJQUV0QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7SUFFL0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxjQUFjLHVCQUF1QixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDbEMsQ0FBQyJ9
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { ActivityLogAction } from './activity-logs-creator';
|
|
2
|
+
import type { ForestServerClient } from '../http-client';
|
|
1
3
|
import type { Logger } from '../server';
|
|
2
4
|
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
3
5
|
import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
-
import { ActivityLogAction } from './activity-logs-creator';
|
|
5
6
|
interface ActivityLogContext {
|
|
6
7
|
collectionName?: string;
|
|
7
8
|
recordId?: string | number;
|
|
@@ -9,7 +10,7 @@ interface ActivityLogContext {
|
|
|
9
10
|
label?: string;
|
|
10
11
|
}
|
|
11
12
|
interface WithActivityLogOptions<T> {
|
|
12
|
-
|
|
13
|
+
forestServerClient: ForestServerClient;
|
|
13
14
|
request: RequestHandlerExtra<ServerRequest, ServerNotification>;
|
|
14
15
|
action: ActivityLogAction;
|
|
15
16
|
context?: ActivityLogContext;
|
|
@@ -44,14 +44,14 @@ const error_parser_1 = __importDefault(require("./error-parser"));
|
|
|
44
44
|
* Creates a pending activity log, executes the operation, and marks it as succeeded or failed.
|
|
45
45
|
*/
|
|
46
46
|
async function withActivityLog(options) {
|
|
47
|
-
const {
|
|
47
|
+
const { forestServerClient, request, action, context, logger, operation, errorEnhancer } = options;
|
|
48
48
|
// We want to create the activity log before executing the operation
|
|
49
49
|
// If activity log creation fails, we must prevent the execution of the operation
|
|
50
|
-
const activityLog = await (0, activity_logs_creator_1.default)(
|
|
50
|
+
const activityLog = await (0, activity_logs_creator_1.default)(forestServerClient, request, action, context);
|
|
51
51
|
try {
|
|
52
52
|
const result = await operation();
|
|
53
53
|
(0, activity_logs_creator_1.markActivityLogAsSucceeded)({
|
|
54
|
-
|
|
54
|
+
forestServerClient,
|
|
55
55
|
request,
|
|
56
56
|
activityLog,
|
|
57
57
|
logger,
|
|
@@ -66,12 +66,12 @@ async function withActivityLog(options) {
|
|
|
66
66
|
try {
|
|
67
67
|
errorMessage = await errorEnhancer(errorMessage, error);
|
|
68
68
|
}
|
|
69
|
-
catch {
|
|
70
|
-
|
|
69
|
+
catch (enhancerError) {
|
|
70
|
+
logger('Warn', `Error enhancement failed (using original error message): ${enhancerError instanceof Error ? enhancerError.message : String(enhancerError)}`);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
(0, activity_logs_creator_1.markActivityLogAsFailed)({
|
|
74
|
-
|
|
74
|
+
forestServerClient,
|
|
75
75
|
request,
|
|
76
76
|
activityLog,
|
|
77
77
|
errorMessage,
|
|
@@ -80,4 +80,4 @@ async function withActivityLog(options) {
|
|
|
80
80
|
throw new Error(errorMessage);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hY3Rpdml0eS1sb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2l0aC1hY3Rpdml0eS1sb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQ0Esa0NBK0NDO0FBL0VELGlGQUdpQztBQUNqQyxrRUFBNkM7QUF3QjdDOzs7R0FHRztBQUNZLEtBQUssVUFBVSxlQUFlLENBQUksT0FBa0M7SUFDakYsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQ3RGLE9BQU8sQ0FBQztJQUVWLG9FQUFvRTtJQUNwRSxpRkFBaUY7SUFDakYsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFBLCtCQUF3QixFQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFakcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLEVBQUUsQ0FBQztRQUVqQyxJQUFBLGtEQUEwQixFQUFDO1lBQ3pCLGtCQUFrQjtZQUNsQixPQUFPO1lBQ1AsV0FBVztZQUNYLE1BQU07U0FDUCxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUEsc0JBQWUsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLFlBQVksR0FBRyxXQUFXLElBQUksQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUzRix5RkFBeUY7UUFDekYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUM7Z0JBQ0gsWUFBWSxHQUFHLE1BQU0sYUFBYSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQUMsT0FBTyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxDQUNKLE1BQU0sRUFDTiw0REFDRSxhQUFhLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUMvRSxFQUFFLENBQ0gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBQSwrQ0FBdUIsRUFBQztZQUN0QixrQkFBa0I7WUFDbEIsT0FBTztZQUNQLFdBQVc7WUFDWCxZQUFZO1lBQ1osTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUMifQ==
|
package/dist/version.js
CHANGED
|
@@ -34,10 +34,29 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.NAME = exports.VERSION = void 0;
|
|
37
|
+
// Use require.resolve to find package.json relative to this module
|
|
38
|
+
// This works correctly whether running from src/ or dist/
|
|
37
39
|
const fs = __importStar(require("fs"));
|
|
38
40
|
const path = __importStar(require("path"));
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
function findPackageJson() {
|
|
42
|
+
// Try multiple possible locations
|
|
43
|
+
const possiblePaths = [
|
|
44
|
+
path.resolve(__dirname, '..', 'package.json'), // from src/
|
|
45
|
+
path.resolve(__dirname, '..', '..', 'package.json'), // from dist/
|
|
46
|
+
];
|
|
47
|
+
for (const p of possiblePaths) {
|
|
48
|
+
try {
|
|
49
|
+
const content = fs.readFileSync(p, 'utf-8');
|
|
50
|
+
return JSON.parse(content);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Try next path
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Fallback values if package.json cannot be found
|
|
57
|
+
return { version: '0.0.0', name: '@forestadmin/mcp-server' };
|
|
58
|
+
}
|
|
59
|
+
const packageJson = findPackageJson();
|
|
41
60
|
exports.VERSION = packageJson.version;
|
|
42
61
|
exports.NAME = packageJson.name;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUFtRTtBQUNuRSwwREFBMEQ7QUFDMUQsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUU3QixTQUFTLGVBQWU7SUFDdEIsa0NBQWtDO0lBQ2xDLE1BQU0sYUFBYSxHQUFHO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxZQUFZO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsYUFBYTtLQUNuRSxDQUFDO0lBRUYsS0FBSyxNQUFNLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGdCQUFnQjtRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxXQUFXLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFFekIsUUFBQSxPQUFPLEdBQVcsV0FBVyxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFBLElBQUksR0FBVyxXQUFXLENBQUMsSUFBSSxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forestadmin/mcp-server",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.2",
|
|
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.2.
|
|
20
|
-
"@forestadmin/forestadmin-client": "1.37.
|
|
19
|
+
"@forestadmin/agent-client": "1.2.1",
|
|
20
|
+
"@forestadmin/forestadmin-client": "1.37.1",
|
|
21
21
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
22
22
|
"cors": "^2.8.5",
|
|
23
23
|
"express": "^5.2.1",
|