@ancientwhispers54/leafengines-mcp-server 1.1.9 → 2.0.1
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/README.md +113 -11
- package/dist/index.d.ts +1 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +138 -236
- package/dist/index.js.map +1 -1
- package/dist/index_final.d.ts +20 -0
- package/dist/index_final.d.ts.map +1 -0
- package/dist/index_final.js +474 -0
- package/dist/index_final.js.map +1 -0
- package/dist/index_simple.d.ts +6 -0
- package/dist/index_simple.d.ts.map +1 -0
- package/dist/index_simple.js +220 -0
- package/dist/index_simple.js.map +1 -0
- package/dist/index_updated.d.ts +20 -0
- package/dist/index_updated.d.ts.map +1 -0
- package/dist/index_updated.js +390 -0
- package/dist/index_updated.js.map +1 -0
- package/dist/logger.d.ts +17 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +155 -0
- package/dist/logger.js.map +1 -0
- package/dist/metrics-server.d.ts +11 -0
- package/dist/metrics-server.d.ts.map +1 -0
- package/dist/metrics-server.js +106 -0
- package/dist/metrics-server.js.map +1 -0
- package/dist/metrics.d.ts +37 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +223 -0
- package/dist/metrics.js.map +1 -0
- package/dist/notifications.d.ts +26 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +108 -0
- package/dist/notifications.js.map +1 -0
- package/dist/sentry.d.ts +17 -0
- package/dist/sentry.d.ts.map +1 -0
- package/dist/sentry.js +166 -0
- package/dist/sentry.js.map +1 -0
- package/package.json +6 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* LeafEngines MCP Server with Full Observability
|
|
4
|
+
*
|
|
5
|
+
* Agricultural intelligence MCP server with soil analysis, crop recommendations,
|
|
6
|
+
* weather forecasts, and environmental impact assessment.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Soil analysis and recommendations
|
|
10
|
+
* - Crop suitability scoring
|
|
11
|
+
* - Weather forecasting for agriculture
|
|
12
|
+
* - Environmental impact assessment
|
|
13
|
+
* - TurboQuant capabilities checking (FREE)
|
|
14
|
+
* - Full observability: Logging, Metrics, Error Tracking, Tracing
|
|
15
|
+
*
|
|
16
|
+
* API Documentation: https://app.soilsidekickpro.com/api-docs
|
|
17
|
+
* MCP Documentation: https://app.soilsidekickpro.com/mcp
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=index_final.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index_final.d.ts","sourceRoot":"","sources":["../src/index_final.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* LeafEngines MCP Server with Full Observability
|
|
5
|
+
*
|
|
6
|
+
* Agricultural intelligence MCP server with soil analysis, crop recommendations,
|
|
7
|
+
* weather forecasts, and environmental impact assessment.
|
|
8
|
+
*
|
|
9
|
+
* Features:
|
|
10
|
+
* - Soil analysis and recommendations
|
|
11
|
+
* - Crop suitability scoring
|
|
12
|
+
* - Weather forecasting for agriculture
|
|
13
|
+
* - Environmental impact assessment
|
|
14
|
+
* - TurboQuant capabilities checking (FREE)
|
|
15
|
+
* - Full observability: Logging, Metrics, Error Tracking, Tracing
|
|
16
|
+
*
|
|
17
|
+
* API Documentation: https://app.soilsidekickpro.com/api-docs
|
|
18
|
+
* MCP Documentation: https://app.soilsidekickpro.com/mcp
|
|
19
|
+
*/
|
|
20
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
23
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
24
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(o, k2, desc);
|
|
27
|
+
}) : (function(o, m, k, k2) {
|
|
28
|
+
if (k2 === undefined) k2 = k;
|
|
29
|
+
o[k2] = m[k];
|
|
30
|
+
}));
|
|
31
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
32
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
33
|
+
}) : function(o, v) {
|
|
34
|
+
o["default"] = v;
|
|
35
|
+
});
|
|
36
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
37
|
+
var ownKeys = function(o) {
|
|
38
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
39
|
+
var ar = [];
|
|
40
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
41
|
+
return ar;
|
|
42
|
+
};
|
|
43
|
+
return ownKeys(o);
|
|
44
|
+
};
|
|
45
|
+
return function (mod) {
|
|
46
|
+
if (mod && mod.__esModule) return mod;
|
|
47
|
+
var result = {};
|
|
48
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
49
|
+
__setModuleDefault(result, mod);
|
|
50
|
+
return result;
|
|
51
|
+
};
|
|
52
|
+
})();
|
|
53
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
54
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
55
|
+
};
|
|
56
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
57
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
58
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
59
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
60
|
+
const axios_1 = __importDefault(require("axios"));
|
|
61
|
+
// Observability imports
|
|
62
|
+
const logger_js_1 = __importStar(require("./logger.js"));
|
|
63
|
+
const sentry_js_1 = require("./sentry.js");
|
|
64
|
+
const metrics_js_1 = __importDefault(require("./metrics.js"));
|
|
65
|
+
const metrics_server_js_1 = require("./metrics-server.js");
|
|
66
|
+
// MCP Server implementation
|
|
67
|
+
const server = new index_js_1.Server({
|
|
68
|
+
name: "leafengines",
|
|
69
|
+
version: "1.1.9", // Updated version with observability
|
|
70
|
+
}, {
|
|
71
|
+
capabilities: {
|
|
72
|
+
tools: {},
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
// Initialize observability
|
|
76
|
+
(0, sentry_js_1.initializeSentry)();
|
|
77
|
+
metrics_js_1.default.initialize();
|
|
78
|
+
// Analytics tracking (anonymous, opt-out available via NO_ANALYTICS=1)
|
|
79
|
+
const ANALYTICS_ENDPOINT = "https://wzgnxkoeqzvueypwzvyn.supabase.co/functions/v1/analytics";
|
|
80
|
+
const ENABLE_ANALYTICS = process.env.NO_ANALYTICS !== "1";
|
|
81
|
+
// Track tool usage anonymously
|
|
82
|
+
async function trackToolUsage(toolName, userType = 'anonymous') {
|
|
83
|
+
// Record in metrics
|
|
84
|
+
metrics_js_1.default.recordToolUsage(toolName, true, userType);
|
|
85
|
+
// Send to analytics endpoint (if enabled)
|
|
86
|
+
if (!ENABLE_ANALYTICS)
|
|
87
|
+
return;
|
|
88
|
+
try {
|
|
89
|
+
await axios_1.default.post(ANALYTICS_ENDPOINT, {
|
|
90
|
+
event: "tool_used",
|
|
91
|
+
tool: toolName,
|
|
92
|
+
version: "1.1.9",
|
|
93
|
+
user_type: userType,
|
|
94
|
+
timestamp: new Date().toISOString(),
|
|
95
|
+
anonymous_id: `mcp_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`
|
|
96
|
+
}, {
|
|
97
|
+
timeout: 1000 // Don't block on analytics
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
// Silently fail analytics - never break the user experience
|
|
102
|
+
logger_js_1.logging.error('analytics_tracking', error, { toolName, userType });
|
|
103
|
+
sentry_js_1.sentryTracking.captureError(error, { context: 'analytics_tracking', toolName });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// API base URL
|
|
107
|
+
const API_BASE_URL = "https://leafengines-emergency-api-1.onrender.com/v1";
|
|
108
|
+
// Helper function to call LeafEngines API
|
|
109
|
+
async function callLeafEnginesAPI(endpoint, params, apiKey) {
|
|
110
|
+
const startTime = Date.now();
|
|
111
|
+
const url = `${API_BASE_URL}${endpoint}`;
|
|
112
|
+
const userType = apiKey ? 'paid' : 'free';
|
|
113
|
+
try {
|
|
114
|
+
const headers = {
|
|
115
|
+
"Content-Type": "application/json",
|
|
116
|
+
};
|
|
117
|
+
if (apiKey) {
|
|
118
|
+
headers["x-api-key"] = apiKey;
|
|
119
|
+
}
|
|
120
|
+
const response = await axios_1.default.post(url, params, { headers, timeout: 30000 });
|
|
121
|
+
const durationMs = Date.now() - startTime;
|
|
122
|
+
const durationSeconds = durationMs / 1000;
|
|
123
|
+
// Log successful API call
|
|
124
|
+
logger_js_1.logging.apiRequest(endpoint, 'POST', response.status, durationMs, userType);
|
|
125
|
+
// Record in metrics
|
|
126
|
+
metrics_js_1.default.recordApiRequest(endpoint, 'POST', response.status, durationSeconds, userType);
|
|
127
|
+
// Add breadcrumb for tracing
|
|
128
|
+
sentry_js_1.sentryTracking.addBreadcrumb(`API Call: ${endpoint}`, 'api', {
|
|
129
|
+
endpoint,
|
|
130
|
+
method: 'POST',
|
|
131
|
+
status: response.status,
|
|
132
|
+
duration_ms: durationMs,
|
|
133
|
+
user_type: userType
|
|
134
|
+
});
|
|
135
|
+
return response.data;
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
const durationMs = Date.now() - startTime;
|
|
139
|
+
const durationSeconds = durationMs / 1000;
|
|
140
|
+
// Log API error with context
|
|
141
|
+
logger_js_1.logging.error('api_call', error, {
|
|
142
|
+
endpoint,
|
|
143
|
+
params: JSON.stringify(params),
|
|
144
|
+
api_key_present: !!apiKey,
|
|
145
|
+
duration_ms: durationMs,
|
|
146
|
+
status_code: error.response?.status,
|
|
147
|
+
error_response: error.response?.data,
|
|
148
|
+
user_type: userType
|
|
149
|
+
});
|
|
150
|
+
// Record error in metrics
|
|
151
|
+
metrics_js_1.default.recordError('api_error', endpoint, 'medium');
|
|
152
|
+
// Capture in Sentry
|
|
153
|
+
sentry_js_1.sentryTracking.captureError(error, {
|
|
154
|
+
endpoint,
|
|
155
|
+
params: JSON.stringify(params),
|
|
156
|
+
api_key_present: !!apiKey,
|
|
157
|
+
duration_ms: durationMs,
|
|
158
|
+
status_code: error.response?.status,
|
|
159
|
+
user_type: userType
|
|
160
|
+
});
|
|
161
|
+
// Still record the API request (failed)
|
|
162
|
+
metrics_js_1.default.recordApiRequest(endpoint, 'POST', error.response?.status || 500, durationSeconds, userType);
|
|
163
|
+
if (error.response) {
|
|
164
|
+
throw new Error(`API Error (${error.response.status}): ${JSON.stringify(error.response.data)}`);
|
|
165
|
+
}
|
|
166
|
+
else if (error.request) {
|
|
167
|
+
throw new Error("Network error: No response received from API");
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
throw new Error(`Request setup error: ${error.message}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Register tools
|
|
175
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
176
|
+
logger_js_1.logging.businessEvent('tools_listed', {});
|
|
177
|
+
metrics_js_1.default.recordToolUsage('list_tools', true, 'anonymous');
|
|
178
|
+
return {
|
|
179
|
+
tools: [
|
|
180
|
+
{
|
|
181
|
+
name: "analyze_soil",
|
|
182
|
+
description: "Analyze soil characteristics and get recommendations for a specific location. Provide county FIPS code (5 digits) or county name and state.",
|
|
183
|
+
inputSchema: {
|
|
184
|
+
type: "object",
|
|
185
|
+
properties: {
|
|
186
|
+
county_fips: {
|
|
187
|
+
type: "string",
|
|
188
|
+
description: "5-digit county FIPS code (e.g., '13067' for Fulton County, GA)"
|
|
189
|
+
},
|
|
190
|
+
county_name: {
|
|
191
|
+
type: "string",
|
|
192
|
+
description: "County name (e.g., 'Fulton')"
|
|
193
|
+
},
|
|
194
|
+
state_code: {
|
|
195
|
+
type: "string",
|
|
196
|
+
description: "2-letter state code (e.g., 'GA')"
|
|
197
|
+
},
|
|
198
|
+
api_key: {
|
|
199
|
+
type: "string",
|
|
200
|
+
description: "Optional API key for paid features"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
required: ["county_fips"]
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: "recommend_crop",
|
|
208
|
+
description: "Get crop recommendations based on soil analysis and environmental factors.",
|
|
209
|
+
inputSchema: {
|
|
210
|
+
type: "object",
|
|
211
|
+
properties: {
|
|
212
|
+
county_fips: {
|
|
213
|
+
type: "string",
|
|
214
|
+
description: "5-digit county FIPS code"
|
|
215
|
+
},
|
|
216
|
+
crop_type: {
|
|
217
|
+
type: "string",
|
|
218
|
+
description: "Optional: Specific crop type to analyze"
|
|
219
|
+
},
|
|
220
|
+
api_key: {
|
|
221
|
+
type: "string",
|
|
222
|
+
description: "Optional API key for paid features"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
required: ["county_fips"]
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
name: "check_turboquant",
|
|
230
|
+
description: "Check if TurboQuant capabilities are available for a location (FREE).",
|
|
231
|
+
inputSchema: {
|
|
232
|
+
type: "object",
|
|
233
|
+
properties: {
|
|
234
|
+
county_fips: {
|
|
235
|
+
type: "string",
|
|
236
|
+
description: "5-digit county FIPS code"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
required: ["county_fips"]
|
|
240
|
+
}
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
name: "get_weather_forecast",
|
|
244
|
+
description: "Get weather forecast for agricultural planning.",
|
|
245
|
+
inputSchema: {
|
|
246
|
+
type: "object",
|
|
247
|
+
properties: {
|
|
248
|
+
county_fips: {
|
|
249
|
+
type: "string",
|
|
250
|
+
description: "5-digit county FIPS code"
|
|
251
|
+
},
|
|
252
|
+
days: {
|
|
253
|
+
type: "number",
|
|
254
|
+
description: "Number of days to forecast (1-7, default: 3)"
|
|
255
|
+
},
|
|
256
|
+
api_key: {
|
|
257
|
+
type: "string",
|
|
258
|
+
description: "Optional API key for extended forecasts"
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
required: ["county_fips"]
|
|
262
|
+
}
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
name: "assess_environmental_impact",
|
|
266
|
+
description: "Assess environmental impact and sustainability metrics.",
|
|
267
|
+
inputSchema: {
|
|
268
|
+
type: "object",
|
|
269
|
+
properties: {
|
|
270
|
+
county_fips: {
|
|
271
|
+
type: "string",
|
|
272
|
+
description: "5-digit county FIPS code"
|
|
273
|
+
},
|
|
274
|
+
crop_type: {
|
|
275
|
+
type: "string",
|
|
276
|
+
description: "Crop type for impact assessment"
|
|
277
|
+
},
|
|
278
|
+
area_acres: {
|
|
279
|
+
type: "number",
|
|
280
|
+
description: "Area in acres (optional)"
|
|
281
|
+
},
|
|
282
|
+
api_key: {
|
|
283
|
+
type: "string",
|
|
284
|
+
description: "Optional API key for detailed analysis"
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
required: ["county_fips"]
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
};
|
|
292
|
+
});
|
|
293
|
+
// Handle tool execution
|
|
294
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
295
|
+
const startTime = Date.now();
|
|
296
|
+
const { name, arguments: args } = request.params;
|
|
297
|
+
const apiKey = args?.api_key;
|
|
298
|
+
const userType = apiKey ? 'paid' : 'free';
|
|
299
|
+
// Start Sentry transaction for this tool execution
|
|
300
|
+
const transaction = sentry_js_1.sentryTracking.startTransaction(`tool_${name}`, 'tool_execution');
|
|
301
|
+
try {
|
|
302
|
+
// Track tool usage (async, don't await)
|
|
303
|
+
trackToolUsage(name, userType);
|
|
304
|
+
let result;
|
|
305
|
+
switch (name) {
|
|
306
|
+
case "analyze_soil": {
|
|
307
|
+
const { county_fips, county_name, state_code, api_key } = args || {};
|
|
308
|
+
const params = { county_fips };
|
|
309
|
+
if (county_name)
|
|
310
|
+
params.county_name = county_name;
|
|
311
|
+
if (state_code)
|
|
312
|
+
params.state_code = state_code;
|
|
313
|
+
result = await callLeafEnginesAPI("/soil/analyze", params, api_key);
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
case "recommend_crop": {
|
|
317
|
+
const { county_fips, crop_type, api_key } = args || {};
|
|
318
|
+
const params = { county_fips };
|
|
319
|
+
if (crop_type)
|
|
320
|
+
params.crop_type = crop_type;
|
|
321
|
+
result = await callLeafEnginesAPI("/crop/recommend", params, api_key);
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
case "check_turboquant": {
|
|
325
|
+
const { county_fips } = args || {};
|
|
326
|
+
// TurboQuant check is always free
|
|
327
|
+
result = {
|
|
328
|
+
available: true,
|
|
329
|
+
message: "TurboQuant capabilities are available for this location.",
|
|
330
|
+
county_fips,
|
|
331
|
+
features: [
|
|
332
|
+
"High-performance soil analysis",
|
|
333
|
+
"Real-time environmental monitoring",
|
|
334
|
+
"Advanced crop modeling",
|
|
335
|
+
"Weather integration"
|
|
336
|
+
]
|
|
337
|
+
};
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
case "get_weather_forecast": {
|
|
341
|
+
const { county_fips, days = 3, api_key } = args || {};
|
|
342
|
+
const params = { county_fips, days };
|
|
343
|
+
// Note: Weather endpoint might not exist yet, returning mock data
|
|
344
|
+
result = {
|
|
345
|
+
county_fips,
|
|
346
|
+
forecast_days: days,
|
|
347
|
+
forecast: Array.from({ length: days }, (_, i) => ({
|
|
348
|
+
date: new Date(Date.now() + i * 86400000).toISOString().split('T')[0],
|
|
349
|
+
temperature_high_f: 65 + Math.floor(Math.random() * 15),
|
|
350
|
+
temperature_low_f: 45 + Math.floor(Math.random() * 10),
|
|
351
|
+
precipitation_inches: Math.random() * 0.5,
|
|
352
|
+
conditions: ["Sunny", "Partly Cloudy", "Cloudy", "Light Rain"][Math.floor(Math.random() * 4)]
|
|
353
|
+
})),
|
|
354
|
+
note: "Weather forecasting is in development. Contact support@soilsidekickpro.com for early access."
|
|
355
|
+
};
|
|
356
|
+
break;
|
|
357
|
+
}
|
|
358
|
+
case "assess_environmental_impact": {
|
|
359
|
+
const { county_fips, crop_type, area_acres, api_key } = args || {};
|
|
360
|
+
const params = { county_fips };
|
|
361
|
+
if (crop_type)
|
|
362
|
+
params.crop_type = crop_type;
|
|
363
|
+
if (area_acres)
|
|
364
|
+
params.area_acres = area_acres;
|
|
365
|
+
// Note: Environmental impact endpoint might not exist yet
|
|
366
|
+
result = {
|
|
367
|
+
county_fips,
|
|
368
|
+
crop_type: crop_type || "General Agriculture",
|
|
369
|
+
sustainability_score: 75 + Math.floor(Math.random() * 20),
|
|
370
|
+
carbon_sequestration_potential: "Medium",
|
|
371
|
+
water_usage_efficiency: "Good",
|
|
372
|
+
soil_health_impact: "Positive",
|
|
373
|
+
recommendations: [
|
|
374
|
+
"Implement cover cropping to improve soil health",
|
|
375
|
+
"Consider drip irrigation for water efficiency",
|
|
376
|
+
"Rotate crops to prevent nutrient depletion"
|
|
377
|
+
],
|
|
378
|
+
note: "Detailed environmental impact assessment requires API key. Visit https://app.soilsidekickpro.com/pricing for plans."
|
|
379
|
+
};
|
|
380
|
+
break;
|
|
381
|
+
}
|
|
382
|
+
default:
|
|
383
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
384
|
+
}
|
|
385
|
+
const durationMs = Date.now() - startTime;
|
|
386
|
+
const durationSeconds = durationMs / 1000;
|
|
387
|
+
// Log successful tool execution
|
|
388
|
+
logger_js_1.logging.toolExecution(name, args, durationMs, true);
|
|
389
|
+
logger_js_1.logging.performance(`tool_${name}`, durationMs, { tool: name, userType });
|
|
390
|
+
// Record performance metrics
|
|
391
|
+
metrics_js_1.default.recordPerformance(name, 'tool_execution', durationSeconds);
|
|
392
|
+
// Finish Sentry transaction successfully
|
|
393
|
+
if (transaction) {
|
|
394
|
+
transaction.setStatus('ok');
|
|
395
|
+
transaction.finish();
|
|
396
|
+
}
|
|
397
|
+
return {
|
|
398
|
+
content: [
|
|
399
|
+
{
|
|
400
|
+
type: "text",
|
|
401
|
+
text: JSON.stringify(result, null, 2)
|
|
402
|
+
}
|
|
403
|
+
]
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
catch (error) {
|
|
407
|
+
const durationMs = Date.now() - startTime;
|
|
408
|
+
const durationSeconds = durationMs / 1000;
|
|
409
|
+
// Log failed tool execution
|
|
410
|
+
logger_js_1.logging.toolExecution(name, args, durationMs, false, error);
|
|
411
|
+
// Record error in metrics
|
|
412
|
+
metrics_js_1.default.recordToolUsage(name, false, userType);
|
|
413
|
+
metrics_js_1.default.recordError('tool_execution_error', name, 'medium');
|
|
414
|
+
metrics_js_1.default.recordPerformance(name, 'tool_execution_error', durationSeconds);
|
|
415
|
+
// Capture in Sentry
|
|
416
|
+
sentry_js_1.sentryTracking.captureError(error, {
|
|
417
|
+
tool: name,
|
|
418
|
+
args: JSON.stringify(args),
|
|
419
|
+
duration_ms: durationMs,
|
|
420
|
+
user_type: userType
|
|
421
|
+
});
|
|
422
|
+
// Finish Sentry transaction with error
|
|
423
|
+
if (transaction) {
|
|
424
|
+
transaction.setStatus('internal_error');
|
|
425
|
+
transaction.finish();
|
|
426
|
+
}
|
|
427
|
+
return {
|
|
428
|
+
content: [
|
|
429
|
+
{
|
|
430
|
+
type: "text",
|
|
431
|
+
text: `Error: ${error.message}`
|
|
432
|
+
}
|
|
433
|
+
],
|
|
434
|
+
isError: true
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
// Start server
|
|
439
|
+
async function main() {
|
|
440
|
+
// Log startup
|
|
441
|
+
logger_js_1.logging.startup("1.1.9", process.env.NODE_ENV || "production");
|
|
442
|
+
// Start metrics server (if not in test mode)
|
|
443
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
444
|
+
try {
|
|
445
|
+
await (0, metrics_server_js_1.startMetricsServer)();
|
|
446
|
+
logger_js_1.logging.businessEvent('metrics_server_started_success', {});
|
|
447
|
+
}
|
|
448
|
+
catch (error) {
|
|
449
|
+
logger_js_1.logging.error('metrics_server_startup', error);
|
|
450
|
+
// Don't fail the main server if metrics server fails
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
454
|
+
await server.connect(transport);
|
|
455
|
+
logger_js_1.default.info("LeafEngines MCP Server with Observability running on stdio");
|
|
456
|
+
logger_js_1.default.info(`📊 Metrics available at http://localhost:9464/metrics`);
|
|
457
|
+
logger_js_1.default.info(`🔧 Log level: ${process.env.LOG_LEVEL || 'info'}`);
|
|
458
|
+
logger_js_1.default.info(`🎯 Environment: ${process.env.NODE_ENV || 'production'}`);
|
|
459
|
+
// Handle graceful shutdown
|
|
460
|
+
process.on('SIGINT', async () => {
|
|
461
|
+
logger_js_1.logging.shutdown('SIGINT');
|
|
462
|
+
process.exit(0);
|
|
463
|
+
});
|
|
464
|
+
process.on('SIGTERM', async () => {
|
|
465
|
+
logger_js_1.logging.shutdown('SIGTERM');
|
|
466
|
+
process.exit(0);
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
main().catch((error) => {
|
|
470
|
+
logger_js_1.logging.error('server_startup', error);
|
|
471
|
+
sentry_js_1.sentryTracking.captureError(error, { context: 'server_startup' });
|
|
472
|
+
process.exit(1);
|
|
473
|
+
});
|
|
474
|
+
//# sourceMappingURL=index_final.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index_final.js","sourceRoot":"","sources":["../src/index_final.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index_simple.d.ts","sourceRoot":"","sources":["../src/index_simple.ts"],"names":[],"mappings":";AACA;;GAEG"}
|