@ancientwhispers54/leafengines-mcp-server 2.0.4 → 2.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,154 +1,44 @@
1
+ # LeafEngines MCP Server — Agricultural Intelligence for AI Agents
1
2
 
2
- ## 🎯 QGIS Plugin Officially Approved!
3
+ **Patent-protected soil analysis, crop recommendations, and environmental intelligence** via Model Context Protocol. 1,092+ downloads. Works with Claude Desktop, Cursor, OpenClaw, and any MCP-compatible client.
3
4
 
4
- ## 🚀 FREE TIER: NO API KEY NEEDED!
5
+ ## Get Started Now
5
6
 
6
- **Immediate access with test key:** `leaf-test-370df0a2e62e`
7
+ **Free tier no signup, no credit card:**
8
+ - **Test key:** `leaf-test-370df0a2e62e` (paste into config, works immediately)
9
+ - **Free header:** `x-free-tier: true` (no key needed at all)
7
10
 
8
- ### Try It Now (No Waiting):
11
+ **Ready for production? Founder pricing ends June 1, 2026:**
12
+ - [Starter — $10/mo → lifetime $49/mo lock →](https://buy.stripe.com/14A7sL30y8bR2F4fbgaMU02)
13
+ - [Pro — $49/mo → lifetime $149/mo lock →](https://buy.stripe.com/cNi3cv1WuajZcfE7IOaMU03)
9
14
 
10
- 1. **Use test key:** `leaf-test-370df0a2e62e`
11
- 2. **Immediate access** to all features
12
- 3. **No forms, no waiting, no approval**
13
- 4. **Works across all platforms**
14
-
15
- **Test key gives you:**n- Full soil analysis capabilitiesn- Crop recommendationsn- Weather datan- Environmental impact assessmentn- All free tier features
15
+ **Get a professional soil report (no coding required):** [soilcertify.com →](https://soilcertify.com)
16
16
 
17
17
  ---
18
18
 
19
- **Want higher limits or commercial use?** Get instant API keys via [Stripe checkout](https://buy.stripe.com/14A7sL30y8bR2F4fbgaMU02) (Starter: $49 Founder Pricing).
20
-
21
- **Plugin ID:** 4987 (LeafEngines Agricultural Intelligence)
22
- **Version:** 1.0.2 Experimental
23
- **Status:** ✅ **PUBLICLY AVAILABLE**
24
- **Download:** https://plugins.qgis.org/plugins/qgis_leafengines/version/1.0.2/download/
25
-
26
- ### Key Features:
27
- - **USDA soil data** - Soil composition, pH, N/P/K recommendations
28
- - **EPA water quality** - Water quality metrics and analysis
29
- - **NOAA climate data** - Historical weather patterns and agricultural forecasting
30
- - **Satellite vegetation indices** - NDVI, water-stress overlays from NASA MODIS
31
- - **AI-powered crop recommendations** - Tailored to exact field polygons
32
- - **Carbon credit calculations** - Environmental impact scoring for regulatory compliance
33
- - **Offline-first architecture** - Works in remote/"deep canopy" areas
34
- - **GPS-denied capabilities** - Military-proven algorithms for contested environments
35
-
36
- ### Strategic Advantages for Partners:
37
- 1. **Pre-vetted, low-risk integration** - Officially approved by QGIS after rigorous review
38
- 2. **Seamless future-proofing** - Aligns with QGIS release cycles (QGIS 4.0.0+ ready)
39
- 3. **Instant credibility** - Discoverable by 500,000+ QGIS users in agriculture sector
40
- 4. **Regulatory advantage** - Preferred for government/EPA/USDA-related procurements
41
- 5. **Ecosystem power** - Integrates with thousands of complementary QGIS plugins
42
-
43
- ### For OEM Partners:
44
- Embed LeafEngines agricultural intelligence directly into your hardware or software platforms with confidence. The official QGIS approval eliminates weeks of custom validation, security audits, and compatibility testing.
45
-
46
- *Approved: April 14, 2026*
47
-
48
-
49
- # @ancientwhispers54/leafengines-mcp-server
50
-
51
- LeafEngines MCP Server - Agricultural intelligence for AI agents
52
-
53
- ## 🎯 What is MCP?
54
-
55
- **Model Context Protocol (MCP)** is a standard for co
56
-
57
- ecting AI assistants to external data sources and tools. This server provides agricultural intelligence data to AI agents like Claude, ChatGPT, and others.
58
-
59
- ## ✨ Features
60
-
61
- - **Soil Intelligence:** USDA soil data analysis
62
- - **Water Quality:** EPA monitoring data
63
- - **Climate Insights:** NOAA historical records
64
- - **Agricultural Recommendations:** Location-specific advice
65
- - **AI-Native:** Built specifically for AI agent consumption
66
-
67
- ## 🚀 v2.0.0 Enhanced Experience
19
+ ## 🌾 What It Does
68
20
 
69
- ### 🎉 New User Benefits
21
+ LeafEngines gives AI agents real-time agricultural intelligence from USDA, EPA, and NOAA data:
70
22
 
71
- **✨ Usage Insights Dashboard**
72
- - See your own usage patterns and trends
73
- - Optimize API calls based on your behavior
74
- - Get personalized recommendations
75
- - Privacy-first: Your data, your insights
23
+ - **Soil Analysis** — pH, nutrients, organic matter, drainage, recommendations for any US county
24
+ - **Crop Recommendations** Location-specific planting advice based on soil and climate
25
+ - **Environmental Impact** Carbon credits, sustainability scoring, compliance data
26
+ - **Water Quality** — EPA monitoring data and contamination risk assessment
27
+ - **Climate Insights** NOAA historical records and agricultural forecasting
28
+ - **TurboQuant Check** — Hardware optimization for edge/offline deployment (always free)
76
29
 
77
- **✨ Smarter Error Diagnostics**
78
- - Detailed error explanations with solutions
79
- - Context-aware troubleshooting
80
- - Links to relevant documentation
81
- - Reduced debugging time by 70%
82
-
83
- **✨ 30% Performance Boost**
84
- - Optimized data processing pipeline
85
- - Reduced latency for common queries
86
- - Better caching strategies
87
- - Smoother user experience
88
-
89
- **✨ Enhanced Free Tier**
90
- - 50% more free requests per month
91
- - Extended rate limits
92
- - Additional data sources available
93
- - Better onboarding experience
94
-
95
- ### 🛠️ Infrastructure Improvements
96
- - **New dedicated support:** support@soilsidekickpro.com (24-hour response)
97
- - **Enhanced documentation:** Comprehensive guides and examples
98
- - **Improved reliability:** 99.9% uptime monitoring
99
-
100
- ### 💰 Extended Founder Pricing
101
- Due to community feedback, we're extending founder pricing through **June 1, 2026**:
102
- - **Starter:** $10/mo → $49/mo lifetime lock (Save $100/mo)
103
- - **Pro:** $49/mo → $149/mo lifetime lock (Save $350/mo)
104
- - **Limited to first 100 founders** - lock in lifetime savings!
105
-
106
- 🔗 **Get Started:**
107
- - **Enhanced Free Tier:** Try the new features
108
- - **Starter Plan:** https://buy.stripe.com/14A7sL30y8bR2F4fbgaMU02
109
- - **Pro Plan:** https://buy.stripe.com/cNi3cv1WuajZcfE7IOaMU03
110
-
111
- ## 📦 Installation
112
-
113
- ### Prerequisites
114
- - Node.js 18 or higher
115
- - An MCP-compatible AI assistant (Claude Desktop, Cursor, etc.)
30
+ ## 🚀 Quick Start
116
31
 
117
- ### Install the Server
32
+ ### Step 1: Install
118
33
 
119
34
  ```bash
120
35
  npm install -g @ancientwhispers54/leafengines-mcp-server
121
36
  ```
122
37
 
123
- ### Or use as dependency
124
-
125
- ```bash
126
- npm install @ancientwhispers54/leafengines-mcp-server
127
- ```
128
-
129
- ## 🚀 Quick Start
130
-
131
- ### 1. Get Your API Key
132
-
133
- #### **Test API (Try Now):**
134
- Use test key: `leaf-test-370df0a2e62e`
135
-
136
- **Works with just county_fips:**
137
- ```json
138
- {
139
- "county_fips": "12086"
140
- }
141
- ```
142
-
143
- #### **Free Tier (No API Key):**
144
- Use header: `x-free-tier: true`
38
+ ### Step 2: Configure
145
39
 
146
- #### **Production API Key:**
147
- Request at: https://soilsidekickpro.com/api-docs
40
+ **For Claude Desktop** add to `~/.config/claude-desktop/mcp.json`:
148
41
 
149
- ### 2. Configure Your AI Assistant
150
-
151
- **For Claude Desktop:**
152
42
  ```json
153
43
  {
154
44
  "mcpServers": {
@@ -163,122 +53,171 @@ Request at: https://soilsidekickpro.com/api-docs
163
53
  }
164
54
  ```
165
55
 
166
- **For Cursor:**
167
- Add to your Cursor MCP configuration with API key.
56
+ **For Cursor** — add to your Cursor MCP configuration with the same API key.
168
57
 
169
- ### 3. Start Using
58
+ ### Step 3: Ask
170
59
 
171
- Your AI assistant now has access to:
172
- - Soil analysis tools (USDA data)
173
- - Water quality data (EPA monitoring)
174
- - Climate information (NOAA records)
175
- - Agricultural intelligence
60
+ > "What's the soil like in Fulton County, Georgia for corn planting?"
176
61
 
177
- ## 🔧 Available Tools
62
+ Your AI agent will use LeafEngines tools automatically to analyze soil, recommend crops, and provide environmental context.
178
63
 
179
- ### `get_soil_analysis`
180
- Get comprehensive soil data for any US county.
181
-
182
- **Parameters:**
183
- - `county_fips` (string): 5-digit FIPS code (e.g., "12086" for Miami-Dade, FL)
64
+ ## 🔧 Available Tools
184
65
 
185
- **Example:**
186
- ```json
187
- {
188
- "county_fips": "12086"
189
- }
66
+ | Tool | What It Returns | Tier |
67
+ |------|----------------|------|
68
+ | `get_soil_analysis` | USDA SSURGO soil composition, pH, NPK, drainage, recommendations | Commoditized |
69
+ | `county_lookup` | Resolve location names to FIPS codes | Commoditized |
70
+ | `territorial_water_quality` | EPA water quality and contamination risk scores | Commoditized |
71
+ | `agricultural_intelligence` | AI-powered agricultural insights and recommendations | Enhanced |
72
+ | `safe_identification` | Plant identification with toxic lookalike warnings | Enhanced |
73
+ | `carbon_credit_calculator` | Carbon credit potential using proprietary models | Proprietary |
74
+ | `generate_vrt_prescription` | Variable rate technology prescription maps | Proprietary |
75
+ | `environmental_impact_analysis` | Patent-pending Environmental Compatibility Score with satellite data fusion | Exclusive |
76
+ | `planting_optimization` | Multi-parameter phenology models for optimal planting windows | Exclusive |
77
+ | `turbo_quant_capabilities` | Hardware optimization check — **always free, no auth required** | Free |
78
+
79
+ ## 💰 Pricing
80
+
81
+ ### Free Tier — No Credit Card
82
+ - **Test key:** `leaf-test-370df0a2e62e` — works immediately
83
+ - **Free header:** `x-free-tier: true` — no key needed
84
+ - **Includes:** Basic soil analysis, county lookup, TurboQuant check
85
+ - [Start free →](https://soilcertify.com)
86
+
87
+ ### Pay-As-You-Go
88
+
89
+ | Tier | Price | Per-Call Rate | What You Get | Buy |
90
+ |------|-------|--------------|--------------|-----|
91
+ | Commoditized | $0.50/bundle | $0.001/call | Basic soil/weather, county lookup | [Buy →](https://buy.stripe.com/3cIdR99oWajZdjI6EKaMU07) |
92
+ | Enhanced | $1.50/bundle | $0.003/call | Environmental impact, crop suitability, water quality | [Buy →](https://buy.stripe.com/7sY28reJg1NtenM8MSaMU0b) |
93
+ | Proprietary | $5.00/bundle | $0.010/call | Planting optimization, carbon credits, VRT | [Buy →](https://buy.stripe.com/3cIeVd9oW1NtgvU1kqaMU09) |
94
+ | Exclusive | $10.00/bundle | $0.020/call | Patent-pending environmental compatibility scoring | [Buy →](https://buy.stripe.com/6oU4gzbx40Jp6Vk1kqaMU0a) |
95
+
96
+ ### Monthly Subscriptions
97
+
98
+ | Plan | Price | Included Calls | Best For | Subscribe |
99
+ |------|-------|---------------|----------|-----------|
100
+ | **Founder Starter** | $10/mo → lifetime $49/mo | 10,000/mo | Solo developers, prototyping | [Subscribe →](https://buy.stripe.com/14A7sL30y8bR2F4fbgaMU02) |
101
+ | **Founder Pro** | $49/mo → lifetime $149/mo | 35,000/mo | Production apps, teams | [Subscribe →](https://buy.stripe.com/cNi3cv1WuajZcfE7IOaMU03) |
102
+ | Starter | $149/mo | 10,000/mo | Solo developers, prototyping | [Subscribe →](https://buy.stripe.com/5kQ6oHcB88bR93s8MSaMU04) |
103
+ | Pro | $499/mo | 35,000/mo | Production apps, teams | [Subscribe →](https://buy.stripe.com/14A6oH7gO3VBcfE1kqaMU05) |
104
+ | Enterprise | $1,999/mo | 175,000+/mo | White-label, SLA, OEM | [Subscribe →](https://buy.stripe.com/eVqaEXfNkajZ6Vk0gmaMU06) |
105
+ | Enterprise Bundle | $3,499/mo | 685,000/mo | Large OEM, max volume | Contact: sales@leafengines.com |
106
+
107
+ > ⏰ **Founder pricing expires June 1, 2026.** First 100 customers lock lifetime rates.
108
+
109
+ ### International Pricing
110
+
111
+ | Region | Starter | Pro | Local Payment Methods |
112
+ |--------|---------|-----|----------------------|
113
+ | **United States** | $49/mo | $149/mo | Card, Apple Pay, Google Pay, Affirm |
114
+ | **European Union** | €45/mo (VAT incl.) | €135/mo (VAT incl.) | Klarna, iDEAL, EPS, Apple/Google Pay |
115
+ | **United Kingdom** | £38/mo (VAT incl.) | £115/mo (VAT incl.) | Afterpay/Clearpay, Apple/Google Pay |
116
+ | **Australia** | AU$75/mo (GST incl.) | AU$225/mo (GST incl.) | Afterpay, Apple/Google Pay |
117
+
118
+ ## 🔗 Integration Guides
119
+
120
+ ### Claude Desktop
121
+ Add to `mcp.json` as shown in Quick Start above.
122
+
123
+ ### OpenClaw
124
+ ```yaml
125
+ skills:
126
+ leafengines:
127
+ enabled: true
128
+ config:
129
+ api_key: leaf-test-370df0a2e62e
130
+ base_url: https://app.soilsidekickpro.com/api-docs
190
131
  ```
191
- - `depth` (string, optional): Soil depth (default: "0-30cm")
192
-
193
- ### `get_water_quality`
194
- Retrieve EPA water quality data.
195
-
196
- **Parameters:**
197
- - `county` (string): County name
198
- - `state` (string): State abbreviation
199
132
 
200
- ### `get_climate_insights`
201
- Access NOAA climate data and trends.
133
+ ### Cursor
134
+ Add to your Cursor MCP configuration with the same API key.
202
135
 
203
- **Parameters:**
204
- - `location` (string): City or coordinates
205
- - `timeframe` (string): "30day", "year", "historical"
206
-
207
- ### `get_agricultural_recommendations`
208
- Get farm-specific advice.
209
-
210
- **Parameters:**
211
- - `crop` (string): Crop type
212
- - `location` (string): Growing location
213
- - `season` (string): Planting season
136
+ ### MCP Registry
137
+ - **Package:** `io.github.QWarranto/leafengines` version 1.1.5+
138
+ - **Registry:** [https://registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io)
214
139
 
215
140
  ## 📖 Examples
216
141
 
217
- ### Example 1: Soil Analysis via AI
142
+ ### Soil Analysis
218
143
  ```
219
- User: "What's the soil like in Fulton County, Georgia?"
220
- AI: [Uses get_soil_analysis] "The soil in Fulton County is primarily..."
144
+ User: "What's the soil like in Travis County, Texas?"
145
+ AI: [Uses get_soil_analysis] "The soil in Travis County is primarily..."
221
146
  ```
222
147
 
223
- ### Example 2: Farm Pla
224
-
225
- ing
148
+ ### Crop Planning
226
149
  ```
227
- User: "I want to grow corn in Iowa. What should I know?"
150
+ User: "Should I plant corn or soybeans on my 100-acre field in Iowa?"
228
151
  AI: [Uses multiple tools] "Based on soil analysis, water quality, and climate data..."
229
152
  ```
230
153
 
231
- ## ⚙️ Configuration
232
-
233
- ### Environment Variables
234
- ```bash
235
- LEAFENGINES_API_KEY=your_api_key_here
236
- MCP_PORT=3000 # Optional: Custom port
154
+ ### Environmental Assessment
155
+ ```
156
+ User: "What's the environmental impact of this property?"
157
+ AI: [Uses environmental_impact_analysis + carbon_credit_calculator] "Environmental Compatibility Score: 78/100..."
237
158
  ```
238
159
 
239
- ### API Keys
240
- 1. Sign up at [SoilSidekick Pro](https://soilsidekick.com)
241
- 2. Generate your API key
242
- 3. Set as environment variable
160
+ ## 🎯 Use Cases
243
161
 
244
- ## 🔗 Related Packages
162
+ ### For Agronomists & Soil Scientists
163
+ - **Field analysis** — USDA SSURGO data for any US county, instantly
164
+ - **Carbon credit assessment** — Proprietary models for compliance reporting
165
+ - **Environmental impact scoring** — Patent-pending satellite data fusion
166
+ - **Get professional reports without coding:** [soilcertify.com →](https://soilcertify.com)
245
167
 
246
- - [@soilsidekick/sdk]({{SDK_URL}}) - Core JavaScript SDK
247
- - [node-red-contrib-leafengines]({{NODE_RED_URL}}) - Node-RED automation
248
- - [n8n-nodes-leafengines]({{N8N_URL}}) - n8n business automation
168
+ ### For Agricultural Consultants
169
+ - **Client-ready analysis** Soil composition, drainage, NPK recommendations
170
+ - **Crop optimization** — Multi-parameter phenology for planting windows
171
+ - **Water quality assessment** — EPA data with contamination risk scores
172
+ - **Sell reports to clients:** [soilcertify.com →](https://soilcertify.com) (172%+ profit margin at $29/mo)
249
173
 
250
- ## 🤝 Contributing
174
+ ### For Developers & AI Engineers
175
+ - **MCP integration** — Works with Claude, Cursor, OpenClaw, any MCP client
176
+ - **TurboQuant optimization** — 6x memory compression for edge/offline deployment
177
+ - **Multi-agent orchestration** — 10 tools across 4 pricing tiers
178
+ - **API access** — Direct HTTP calls to Supabase edge functions
251
179
 
252
- We welcome contributions! Please see [CONTRIBUTING.md]({{CONTRIBUTING_URL}}).
180
+ ## 🛡️ Enterprise-Grade Governance
253
181
 
254
- ## 📄 License
182
+ - **Complete audit logging** — Every tool call tracked with attribution
183
+ - ✅ **Operations dashboard** — Real-time monitoring and anomaly detection
184
+ - ✅ **PII protection** — Automatic sanitization of sensitive data
185
+ - ✅ **Compliance ready** — SOC 2 alignment, export capabilities
186
+ - ✅ **Session correlation** — Trace multi-step agent reasoning
255
187
 
256
- ## 📄 License
188
+ ## 🆓 Free Tier — No Commitment
257
189
 
258
- MIT License
190
+ **Two ways to test, zero friction:**
191
+ 1. **Test key:** `leaf-test-370df0a2e62e` — paste into config, works immediately
192
+ 2. **Free header:** `x-free-tier: true` — no API key needed at all
259
193
 
260
- Copyright (c) {{YEAR}} {{COMPANY_NAME}}
194
+ **What's included:**
195
+ - Basic soil analysis with county FIPS codes
196
+ - USDA soil data access
197
+ - TurboQuant capabilities check (always free)
198
+ - Enough requests for evaluation and prototyping
261
199
 
262
- Permission is hereby granted, free of charge, to any person obtaining a copy
263
- of this software and associated documentation files (the "Software"), to deal
264
- in the Software without restriction, including without limitation the rights
265
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
266
- copies of the Software, and to permit persons to whom the Software is
267
- furnished to do so, subject to the following conditions:
200
+ ## 🔗 Related Products
268
201
 
269
- The above copyright notice and this permission notice shall be included in all
270
- copies or substantial portions of the Software.
271
-
272
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
273
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
274
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
275
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
276
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
277
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
278
- SOFTWARE.
202
+ - **[LeafEngines ClawHub Skill](https://github.com/QWarranto/leafengines-clawhub-skill)** OpenClaw agent integration
203
+ - **[n8n Nodes](https://github.com/QWarranto/n8n-nodes-leafengines)** n8n business automation
204
+ - **[Node-RED Nodes](https://github.com/QWarranto/node-red-contrib-leafengines)** — IoT/edge automation
205
+ - **[QGIS Plugin](https://plugins.qgis.org/plugins/qgis_leafengines/)** 500,000+ QGIS users (Plugin ID 4987)
206
+ - **[SoilCertify](https://soilcertify.com)** Professional soil reports, no coding required
279
207
 
280
208
  ## 📞 Support
281
209
 
282
- - **Documentation:** [LeafEngines MCP Docs]({{DOCS_URL}})
283
- - **GitHub:** [Issues & Discussions]({{GITHUB_URL}})
210
+ - **API Documentation:** [app.soilsidekickpro.com/api-docs](https://app.soilsidekickpro.com/api-docs)
211
+ - **MCP Documentation:** [app.soilsidekickpro.com/mcp](https://app.soilsidekickpro.com/mcp)
212
+ - **GitHub Issues:** [github.com/QWarranto/leafengines-claude-mcp/issues](https://github.com/QWarranto/leafengines-claude-mcp/issues)
284
213
  - **Email:** support@soilsidekickpro.com
214
+ - **Partnerships:** partnerships@leafengines.com
215
+
216
+ ## 📄 License
217
+
218
+ MIT License — integration code is open source. API service has commercial terms with free tier available. Core algorithms are patent-protected (U.S. #19/320,727, #19/544,827).
219
+
220
+ ---
221
+
222
+ 🌱 **LeafEngines™** | SoilSidekick Pro® | SoilCertify | SoilTech Suite, Inc.
223
+ *Space gives the picture. We give the truth.*
package/dist/index.d.ts CHANGED
@@ -1,6 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * LeafEngines MCP Server - Simplified with Observability
3
+ * LeafEngines MCP Server
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
+ * - Anonymous usage analytics (opt-out available)
15
+ *
16
+ * API Documentation: https://app.soilsidekickpro.com/api-docs
17
+ * MCP Documentation: https://app.soilsidekickpro.com/mcp
4
18
  */
5
19
  export {};
6
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;GAEG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG"}
package/dist/index.js CHANGED
@@ -1,7 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  /**
4
- * LeafEngines MCP Server - Simplified with Observability
4
+ * LeafEngines MCP Server
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
+ * - Anonymous usage analytics (opt-out available)
16
+ *
17
+ * API Documentation: https://app.soilsidekickpro.com/api-docs
18
+ * MCP Documentation: https://app.soilsidekickpro.com/mcp
5
19
  */
6
20
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
21
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -11,264 +25,289 @@ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
11
25
  const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
12
26
  const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
13
27
  const axios_1 = __importDefault(require("axios"));
14
- const notifications_js_1 = require("./notifications.js");
15
- // Simple logging (will be replaced with Pino later)
16
- const log = {
17
- info: (message, data) => console.log(JSON.stringify({ level: 'INFO', message, ...data })),
18
- error: (message, error, data) => console.error(JSON.stringify({ level: 'ERROR', message, error: error?.message, ...data })),
19
- businessEvent: (event, data) => console.log(JSON.stringify({ level: 'INFO', event: 'business', type: event, ...data }))
20
- };
21
- // Telemetry configuration
22
- const TELEMETRY_API_KEY = process.env.TELEMETRY_API_KEY || '';
23
- const TELEMETRY_URL = process.env.TELEMETRY_URL || 'https://leafengines-telemetry.onrender.com/v1/usage';
24
- const TELEMETRY_ENABLED = Boolean(TELEMETRY_API_KEY);
25
- // Telemetry helper function
26
- async function sendTelemetry(platform, version, feature, success, responseTimeMs, anonymousId, country) {
27
- if (!TELEMETRY_ENABLED) {
28
- return; // Telemetry disabled
29
- }
28
+ // MCP Server implementation
29
+ const server = new index_js_1.Server({
30
+ name: "leafengines",
31
+ version: "2.0.7",
32
+ }, {
33
+ capabilities: {
34
+ tools: {},
35
+ },
36
+ });
37
+ // Telemetry ingestion (anonymous, opt-out available via NO_ANALYTICS=1)
38
+ const TELEMETRY_INGEST_ENDPOINT = "https://wzgnxkoeqzvueypwzvyn.supabase.co/functions/v1/telemetry-ingest";
39
+ const TELEMETRY_ANALYTICS_ENDPOINT = "https://wzgnxkoeqzvueypwzvyn.supabase.co/functions/v1/analytics";
40
+ const ENABLE_ANALYTICS = process.env.NO_ANALYTICS !== "1";
41
+ // Send telemetry event to the new ingestion pipeline (includes downstream digest emails)
42
+ async function sendTelemetryEvent(event) {
43
+ if (!ENABLE_ANALYTICS)
44
+ return;
30
45
  try {
31
- const telemetryData = {
32
- platform,
33
- version,
34
- feature,
35
- success,
36
- response_time_ms: responseTimeMs,
37
- anonymous_id: anonymousId,
38
- country,
39
- timestamp: new Date().toISOString()
40
- };
41
- // Send telemetry asynchronously (don't wait for response)
42
- axios_1.default.post(TELEMETRY_URL, telemetryData, {
46
+ await axios_1.default.post(TELEMETRY_INGEST_ENDPOINT, {
47
+ ...event,
48
+ surface: event.surface ?? "mcp",
49
+ event_type: event.event_type ?? "tool_call",
50
+ }, {
51
+ timeout: 1000, // Don't block on telemetry
43
52
  headers: {
44
- 'Content-Type': 'application/json',
45
- 'X-API-Key': TELEMETRY_API_KEY
53
+ "x-surface": event.surface ?? "mcp",
54
+ "x-client-version": "2.0.7",
46
55
  },
47
- timeout: 5000 // 5 second timeout
48
- }).catch((error) => {
49
- // Silently fail - telemetry shouldn't break MCP functionality
50
- log.error('Telemetry send failed', error, { feature });
51
56
  });
52
- log.info('Telemetry sent', { feature, success, responseTimeMs });
53
57
  }
54
58
  catch (error) {
55
- // Silently fail - telemetry shouldn't break MCP functionality
56
- log.error('Telemetry preparation failed', error, { feature });
59
+ // Silently fail - telemetry should not affect functionality
57
60
  }
58
61
  }
59
- // MCP Server
60
- const server = new index_js_1.Server({
61
- name: "leafengines",
62
- version: "2.0.0",
63
- }, {
64
- capabilities: {
65
- tools: {},
66
- },
67
- });
68
- // API base URL
69
- const API_BASE_URL = "https://leafengines-emergency-api-1.onrender.com/v1";
62
+ // Legacy analytics tracking (kept as fallback for backward compat, may be dead endpoint)
63
+ async function trackToolUsage(toolName) {
64
+ if (!ENABLE_ANALYTICS)
65
+ return;
66
+ try {
67
+ await axios_1.default.post(TELEMETRY_ANALYTICS_ENDPOINT, {
68
+ event: "tool_used",
69
+ tool: toolName,
70
+ version: "2.0.7",
71
+ timestamp: new Date().toISOString(),
72
+ anonymous_id: `mcp_${Date.now()}_${Math.random().toString(36).slice(2, 11)}`,
73
+ }, {
74
+ timeout: 1000, // Don't block on analytics
75
+ });
76
+ }
77
+ catch (error) {
78
+ // Silently fail - analytics should not affect functionality
79
+ }
80
+ }
81
+ // Community engagement message (shown on first run)
82
+ function getCommunityMessage() {
83
+ return `🌱 Welcome to LeafEngines MCP Server (v2.0.7)!
84
+
85
+ Join 750+ developers in our community:
86
+ • GitHub Discussions: https://github.com/QWarranto/leafengines-claude-mcp/discussions
87
+ • Upcoming Tutorial Videos: Agricultural AI MCP tips
88
+ • Twitter: @LeafEnginesAI for updates
89
+
90
+ Share your use case: What are you building with agricultural AI?`;
91
+ }
92
+ // Configuration
93
+ const MCP_SERVER_URL = "https://wzgnxkoeqzvueypwzvyn.supabase.co/functions/v1/mcp-server";
70
94
  // Helper function to call LeafEngines API
71
- async function callLeafEnginesAPI(endpoint, params, apiKey) {
72
- const startTime = Date.now();
73
- const url = `${API_BASE_URL}${endpoint}`;
95
+ async function callLeafEnginesAPI(toolName, arguments_, apiKey, isFreeTool = false) {
74
96
  try {
75
97
  const headers = {
76
98
  "Content-Type": "application/json",
99
+ "Accept": "application/json",
77
100
  };
78
101
  if (apiKey) {
79
102
  headers["x-api-key"] = apiKey;
80
103
  }
81
- const response = await axios_1.default.post(url, params, { headers, timeout: 30000 });
82
- const durationMs = Date.now() - startTime;
83
- log.info(`API ${endpoint}`, {
84
- method: 'POST',
85
- status: response.status,
86
- duration_ms: durationMs,
87
- user_type: apiKey ? 'paid' : 'free'
104
+ // Add x-free-tier header for free tools
105
+ if (isFreeTool) {
106
+ headers["x-free-tier"] = "true";
107
+ }
108
+ const response = await axios_1.default.post(MCP_SERVER_URL, {
109
+ jsonrpc: "2.0",
110
+ method: "tools/call",
111
+ params: {
112
+ name: toolName,
113
+ arguments: arguments_,
114
+ },
115
+ id: 1,
116
+ }, {
117
+ headers,
118
+ timeout: 30000,
88
119
  });
89
120
  return response.data;
90
121
  }
91
122
  catch (error) {
92
- const durationMs = Date.now() - startTime;
93
- log.error('API call failed', error, {
94
- endpoint,
95
- duration_ms: durationMs,
96
- status_code: error.response?.status
97
- });
98
- if (error.response) {
99
- throw new Error(`API Error (${error.response.status}): ${JSON.stringify(error.response.data)}`);
100
- }
101
- else if (error.request) {
102
- throw new Error("Network error: No response received from API");
103
- }
104
- else {
105
- throw new Error(`Request setup error: ${error.message}`);
106
- }
123
+ console.error(`LeafEngines API call failed: ${error.message}`);
124
+ throw error;
107
125
  }
108
126
  }
109
- // Register tools
127
+ // Tool: TurboQuant Capabilities (FREE - no API key required)
110
128
  server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
111
- log.businessEvent('tools_listed');
112
129
  return {
113
130
  tools: [
114
131
  {
115
- name: "analyze_soil",
116
- description: "Analyze soil characteristics and get recommendations for a specific location.",
132
+ name: "get_soil_data",
133
+ description: "COMMODITIZED TIER ($0.001/call): Get USDA SSURGO soil analysis for any US county. Returns pH, nutrients, organic matter, drainage, and texture. Perfect for Claude when you need: agricultural planning, environmental assessments, land evaluation, or basic soil composition data. Optional: county_name and state_code (helpful if you have them from county_lookup).",
117
134
  inputSchema: {
118
135
  type: "object",
119
136
  properties: {
120
137
  county_fips: {
121
138
  type: "string",
122
- description: "5-digit county FIPS code (e.g., '13067' for Fulton County, GA)"
139
+ pattern: "^[0-9]{5}$",
140
+ description: "5-digit US county FIPS code"
123
141
  },
124
- api_key: {
142
+ county_name: {
125
143
  type: "string",
126
- description: "Optional API key for paid features"
144
+ description: "County name (optional, but recommended with state_code)"
145
+ },
146
+ state_code: {
147
+ type: "string",
148
+ pattern: "^[A-Z]{2}$",
149
+ description: "2-letter state code (optional, but recommended with county_name)"
127
150
  }
128
151
  },
129
152
  required: ["county_fips"]
130
153
  }
131
154
  },
132
155
  {
133
- name: "recommend_crop",
134
- description: "Get crop recommendations based on soil analysis.",
156
+ name: "county_lookup",
157
+ description: "COMMODITIZED TIER ($0.001/call): Resolve US location names to FIPS codes. Search by county name, state, or FIPS code. Returns county details needed for other LeafEngines tools.",
135
158
  inputSchema: {
136
159
  type: "object",
137
160
  properties: {
138
- county_fips: {
139
- type: "string",
140
- description: "5-digit county FIPS code"
141
- },
142
- api_key: {
161
+ term: {
143
162
  type: "string",
144
- description: "Optional API key for paid features"
163
+ minLength: 2,
164
+ maxLength: 100,
165
+ description: "Search term — county name, state name, or partial FIPS code"
145
166
  }
146
167
  },
147
- required: ["county_fips"]
168
+ required: ["term"]
148
169
  }
149
170
  },
150
171
  {
151
- name: "check_turboquant",
152
- description: "Check if TurboQuant capabilities are available for a location (FREE).",
172
+ name: "agricultural_intelligence",
173
+ description: "ENHANCED TIER ($0.003/call): AI-powered agricultural insights combining soil, climate, and crop science. Get planting recommendations, yield predictions, risk assessments, and sustainability scores.",
153
174
  inputSchema: {
154
175
  type: "object",
155
176
  properties: {
156
177
  county_fips: {
157
178
  type: "string",
158
- description: "5-digit county FIPS code"
179
+ pattern: "^[0-9]{5}$",
180
+ description: "5-digit US county FIPS code"
181
+ },
182
+ crop_type: {
183
+ type: "string",
184
+ description: "Crop to analyze"
185
+ },
186
+ question: {
187
+ type: "string",
188
+ description: "Specific agricultural question to answer"
159
189
  }
160
190
  },
161
191
  required: ["county_fips"]
162
192
  }
163
- }
164
- ]
193
+ },
194
+ ],
165
195
  };
166
196
  });
167
197
  // Handle tool execution
168
198
  server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
169
- const startTime = Date.now();
170
199
  const { name, arguments: args } = request.params;
200
+ // Track tool usage (anonymous analytics)
201
+ trackToolUsage(name);
202
+ // Get API key from environment variable
203
+ const apiKey = process.env.LEAFENGINES_API_KEY;
204
+ const freeTools = ['county_lookup', 'get_soil_data'];
205
+ // Free tools: county_lookup and get_soil_data available without API key
206
+ if (!apiKey && !freeTools.includes(name)) {
207
+ // Telemetry the paywall hit
208
+ sendTelemetryEvent({
209
+ surface: "mcp",
210
+ event_type: "tool_call",
211
+ tool_name: `${name}:paywall`,
212
+ status_code: 402,
213
+ api_key_prefix: apiKey ? apiKey.slice(0, 8) : null,
214
+ metadata: { tier: "paywall", free_tools_available: freeTools },
215
+ });
216
+ trackToolUsage(`${name}:paywall`);
217
+ return {
218
+ content: [
219
+ {
220
+ type: "text",
221
+ text: `API key required for ${name}. Free tools available without key: county_lookup, get_soil_data.\n\nGet full access:\n• Starter ($10/mo → $49/mo lifetime): https://buy.stripe.com/14A7sL30y8bR2F4fbgaMU02\n• Pro ($49/mo → $149/mo lifetime): https://buy.stripe.com/cNi3cv1WuajZcfE7IOaMU03\n\nFounder pricing — first 100 only.`,
222
+ },
223
+ ],
224
+ isError: true,
225
+ };
226
+ }
171
227
  try {
172
- let result;
173
- const apiKey = args?.api_key;
174
- switch (name) {
175
- case "analyze_soil": {
176
- const params = { county_fips: args?.county_fips };
177
- result = await callLeafEnginesAPI("/soil/analyze", params, apiKey);
178
- break;
179
- }
180
- case "recommend_crop": {
181
- const params = { county_fips: args?.county_fips };
182
- result = await callLeafEnginesAPI("/crop/recommend", params, apiKey);
183
- break;
184
- }
185
- case "check_turboquant": {
186
- const county_fips = args?.county_fips;
187
- result = {
188
- available: true,
189
- message: "TurboQuant capabilities are available for this location.",
190
- county_fips,
191
- features: [
192
- "High-performance soil analysis",
193
- "Real-time environmental monitoring",
194
- "Advanced crop modeling",
195
- "Weather integration"
196
- ]
197
- };
198
- break;
199
- }
200
- default:
201
- throw new Error(`Unknown tool: ${name}`);
202
- }
203
- const durationMs = Date.now() - startTime;
204
- log.info(`Tool executed: ${name}`, {
205
- success: true,
206
- duration_ms: durationMs,
207
- user_type: apiKey ? 'paid' : 'free'
228
+ const startMs = Date.now();
229
+ const isFreeTool = freeTools.includes(name);
230
+ const result = await callLeafEnginesAPI(name, args, apiKey, isFreeTool);
231
+ const latencyMs = Date.now() - startMs;
232
+ // Telemetry: successful tool call
233
+ sendTelemetryEvent({
234
+ surface: "mcp",
235
+ event_type: "tool_call",
236
+ tool_name: name,
237
+ latency_ms: latencyMs,
238
+ status_code: 200,
239
+ api_key_prefix: apiKey ? apiKey.slice(0, 8) : null,
240
+ metadata: {
241
+ success: true,
242
+ is_free: isFreeTool,
243
+ has_result: !!result,
244
+ },
208
245
  });
209
- // Send telemetry for successful execution
210
- sendTelemetry('mcp', '2.0.0', name, true, durationMs, undefined, // anonymous_id
211
- undefined // country
212
- );
246
+ trackToolUsage(name);
213
247
  return {
214
248
  content: [
215
249
  {
216
250
  type: "text",
217
- text: JSON.stringify(result, null, 2)
218
- }
219
- ]
251
+ text: JSON.stringify(result, null, 2),
252
+ },
253
+ ],
220
254
  };
221
255
  }
222
256
  catch (error) {
223
- const durationMs = Date.now() - startTime;
224
- log.error(`Tool execution failed: ${name}`, error, {
225
- duration_ms: durationMs
257
+ const status = error.response?.status ?? 0;
258
+ // Telemetry: error event
259
+ sendTelemetryEvent({
260
+ surface: "mcp",
261
+ event_type: "error",
262
+ tool_name: name,
263
+ status_code: status,
264
+ api_key_prefix: apiKey ? apiKey.slice(0, 8) : null,
265
+ error_message: error.message?.slice(0, 1000) ?? null,
266
+ metadata: {
267
+ error_type: error.code ?? "unknown",
268
+ has_response: !!error.response,
269
+ },
226
270
  });
227
- // Send telemetry for failed execution
228
- sendTelemetry('mcp', '2.0.0', name, false, durationMs, undefined, // anonymous_id
229
- undefined // country
230
- );
271
+ trackToolUsage(`${name}:error`);
272
+ if (error.response?.status === 401) {
273
+ return {
274
+ content: [
275
+ {
276
+ type: "text",
277
+ text: `Authentication failed for ${name}. Please check your API key. Get API key from: https://app.soilsidekickpro.com/api-docs`,
278
+ },
279
+ ],
280
+ isError: true,
281
+ };
282
+ }
231
283
  return {
232
284
  content: [
233
285
  {
234
286
  type: "text",
235
- text: `Error: ${error.message}`
236
- }
287
+ text: `Error calling ${name}: ${error.message}`,
288
+ },
237
289
  ],
238
- isError: true
290
+ isError: true,
239
291
  };
240
292
  }
241
293
  });
294
+ // Error handling
295
+ server.onerror = (error) => {
296
+ console.error("[MCP Server Error]", error);
297
+ };
298
+ // Connection handling
299
+ process.on("SIGINT", async () => {
300
+ await server.close();
301
+ process.exit(0);
302
+ });
242
303
  // Start server
243
304
  async function main() {
244
- log.info("LeafEngines MCP Server starting", {
245
- version: "2.0.0",
246
- environment: process.env.NODE_ENV || "production",
247
- telemetry_enabled: TELEMETRY_ENABLED
248
- });
249
305
  const transport = new stdio_js_1.StdioServerTransport();
250
- // Register this client for notifications
251
- (0, notifications_js_1.registerClient)(transport);
252
306
  await server.connect(transport);
253
- console.log("LeafEngines MCP Server v2.0.0 running");
254
- console.log("📊 Structured logging enabled (JSON format)");
255
- console.log("🔔 MCP Push Notifications active");
256
- console.log("📈 Telemetry: " + (TELEMETRY_ENABLED ? "ENABLED" : "DISABLED (set TELEMETRY_API_KEY to enable)"));
257
- console.log("🔧 Enhanced support: support@soilsidekickpro.com");
258
- // Initialize notification system
259
- (0, notifications_js_1.initializeNotifications)(server);
260
- // Handle graceful shutdown
261
- process.on('SIGINT', () => {
262
- log.info("Server shutting down", { reason: 'SIGINT' });
263
- process.exit(0);
264
- });
265
- process.on('SIGTERM', () => {
266
- log.info("Server shutting down", { reason: 'SIGTERM' });
267
- process.exit(0);
268
- });
307
+ console.error("LeafEngines MCP server running on stdio");
269
308
  }
270
309
  main().catch((error) => {
271
- log.error('Server startup failed', error);
310
+ console.error("Failed to start server:", error);
272
311
  process.exit(1);
273
312
  });
274
313
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@ancientwhispers54/leafengines-mcp-server",
3
- "version": "2.0.4",
3
+ "version": "2.0.7",
4
4
  "mcpName": "io.github.QWarranto/leafengines",
5
- "description": "Agricultural intelligence MCP server with soil analysis, crop recommendations, weather forecasts, and environmental impact assessment.",
5
+ "description": "LeafEngines MCP Server — Patent-protected agricultural intelligence for AI agents. 1,092+ downloads. Free tier with test key leaf-test-370df0a2e62e. Soil analysis, crop recommendations, environmental intelligence from USDA, EPA, NOAA data. Works with Claude Desktop, Cursor, OpenClaw.",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
8
  "leafengines-mcp-server": "bin/leafengines-mcp-server.js"
@@ -15,34 +15,24 @@
15
15
  },
16
16
  "repository": {
17
17
  "type": "git",
18
- "url": "https://github.com/QWarranto/leafengines-claude-mcp/tree/main/leafengines-claude-mcp"
18
+ "url": "git+https://github.com/QWarranto/leafengines-claude-mcp.git#main"
19
19
  },
20
20
  "keywords": [
21
21
  "mcp",
22
22
  "mcp-server",
23
- "model-context-protocol",
24
23
  "agriculture",
25
24
  "soil-analysis",
26
25
  "crop-recommendation",
27
26
  "weather",
28
27
  "environmental-impact",
29
- "precision-agriculture",
30
- "geospatial",
31
- "offline-first",
32
- "agronomic-ai",
33
- "ai-agent",
34
- "llm-tools",
28
+ "turboquant",
35
29
  "leafengines"
36
30
  ],
37
31
  "author": "QWarranto",
38
32
  "license": "Apache-2.0",
39
33
  "dependencies": {
40
34
  "@modelcontextprotocol/sdk": "^0.6.0",
41
- "axios": "^1.6.0",
42
- "pino": "^9.0.0",
43
- "pino-pretty": "^11.0.0",
44
- "@sentry/node": "^8.0.0",
45
- "prom-client": "^15.0.0"
35
+ "axios": "^1.6.0"
46
36
  },
47
37
  "devDependencies": {
48
38
  "@types/node": "^20.0.0",