@shyzus/mcp-geocrafter 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/README.md CHANGED
@@ -11,6 +11,8 @@ GeoCrafter is a clean, modular MCP server for geocoding and reverse geocoding wi
11
11
  ![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue)
12
12
  ![MCP](https://img.shields.io/badge/MCP-2025--11--25-orange)
13
13
  ![ChatGPT](https://img.shields.io/badge/ChatGPT-MCP-purple)
14
+ ![Google](https://img.shields.io/badge/Google%20Geocoding-supported-4285F4)
15
+ ![Photon](https://img.shields.io/badge/Photon%20OSM-supported-7EB900)
14
16
 
15
17
  ---
16
18
 
@@ -32,9 +34,9 @@ This application allows **ChatGPT** and other MCP clients to access geocoding se
32
34
 
33
35
  ### ✨ Features
34
36
 
35
- - 🔍 **Address to GPS** - Convert addresses to coordinates with multi-provider support
36
- - 📍 **GPS to Address** - Convert coordinates to addresses
37
- - 🔄 **Multi-Provider** - Google Geocoding API + Photon API (OpenStreetMap), selectable per request
37
+ - 🔍 **Address to GPS** - `search_address_google` (recommended) + `search_address_photon` (fuzzy matching)
38
+ - 📍 **GPS to Address** - `reverse_geocode_google` (recommended) + `reverse_geocode_photon`
39
+ - 🔄 **Multi-Provider** - Dedicated tools per provider the LLM picks the right one automatically
38
40
  - 🔗 **Geohash Encoding/Decoding** - Convert coordinates to geohash strings for location deduplication
39
41
  - 📏 **Distance Calculation** - Haversine formula to compute exact distance between two GPS points
40
42
  - 🏗️ **Modular Architecture** - Clean separation of concerns, reusable for future MCP servers
@@ -48,7 +50,7 @@ This application allows **ChatGPT** and other MCP clients to access geocoding se
48
50
  | **Google** (recommended) | POIs, businesses, intent-based queries ("gare ales france") | Requires API key, 10k free/month |
49
51
  | **Photon** | Typo-tolerant search on place/street names, no API key needed | Less accurate on POI resolution |
50
52
 
51
- The LLM automatically picks the best provider based on query type, or the user can force one (e.g. "use Google", "use Photon").
53
+ Each provider has its own dedicated tools — the LLM sees both options and picks the right one. Users can also force a provider (e.g. "use Google", "use Photon").
52
54
 
53
55
  ### 💬 Usage examples
54
56
 
@@ -105,24 +107,20 @@ MCP (Model Context Protocol) is an open standard created by Anthropic that allow
105
107
 
106
108
  ### Use with Cursor / Claude Desktop / Warp
107
109
 
108
- **The easiest way** - Install the npm client that connects to the remote server:
110
+ **The easiest way** - Install the npm client that connects to the remote server (Google + Photon providers are both available server-side):
109
111
 
110
112
  ```json
111
113
  {
112
114
  "mcpServers": {
113
115
  "mcp-geocrafter": {
114
116
  "command": "npx",
115
- "args": ["-y", "@shyzus/mcp-geocrafter"],
116
- "env": {
117
- "GOOGLE_API_KEY": "your-google-api-key",
118
- "GEOCODING_PROVIDER": "google"
119
- }
117
+ "args": ["-y", "@shyzus/mcp-geocrafter"]
120
118
  }
121
119
  }
122
120
  }
123
121
  ```
124
122
 
125
- > `GOOGLE_API_KEY` enables the Google provider. `GEOCODING_PROVIDER` sets the default (optional, defaults to `photon` if omitted). The LLM can override the provider per request.
123
+ > This connects to the hosted server at `https://geocrafter.rankorr.red/mcp` which has both Google and Photon providers configured. The LLM picks the best provider per query, or the user can force one.
126
124
 
127
125
  **Config file locations:**
128
126
  - **Cursor**: `~/.cursor/mcp.json` (macOS/Linux) or `%APPDATA%\Cursor\mcp.json` (Windows)
@@ -131,6 +129,26 @@ MCP (Model Context Protocol) is an open standard created by Anthropic that allow
131
129
 
132
130
  ---
133
131
 
132
+ ### Google API Key Setup
133
+
134
+ To use the Google provider, you need a Google API key. There are **two ways** to provide it:
135
+
136
+ **Option A — Server-side (env var):** Set `GOOGLE_API_KEY` on the server. All clients benefit automatically.
137
+
138
+ **Option B — Per-request (tool parameter):** Pass `apiKey` in the tool call. Useful for N8N, automation workflows, or when you don't control the server. The key is never logged or returned in responses.
139
+
140
+ **To get a key:**
141
+
142
+ 1. Go to [Google Cloud Console](https://console.cloud.google.com)
143
+ 2. Create or select a project
144
+ 3. **APIs & Services** → **Library** → search **"Geocoding API"** → **Enable**
145
+ 4. **APIs & Services** → **Credentials** → **Create Credentials** → **API Key**
146
+ 5. Copy the key
147
+
148
+ > **Pricing**: First 10,000 requests/month are **free**. Beyond that, ~4.34€/1k requests. [Details](https://developers.google.com/maps/documentation/geocoding/usage-and-billing)
149
+
150
+ ---
151
+
134
152
  ### Use with ChatGPT
135
153
 
136
154
  A production server is available and ready to use!
@@ -296,6 +314,19 @@ The MCP server already works in Cursor! Ask me a question about locations and I'
296
314
 
297
315
  2. Configure in `~/Library/Application Support/Claude/claude_desktop_config.json`:
298
316
 
317
+ **Option A — Use the remote server (recommended, no API key needed):**
318
+ ```json
319
+ {
320
+ "mcpServers": {
321
+ "mcp-geocrafter": {
322
+ "command": "npx",
323
+ "args": ["-y", "@shyzus/mcp-geocrafter"]
324
+ }
325
+ }
326
+ }
327
+ ```
328
+
329
+ **Option B — Run locally with your own Google API key:**
299
330
  ```json
300
331
  {
301
332
  "mcpServers": {
@@ -303,7 +334,11 @@ The MCP server already works in Cursor! Ask me a question about locations and I'
303
334
  "command": "node",
304
335
  "args": [
305
336
  "/absolute/path/to/mcp-location/dist/index.js"
306
- ]
337
+ ],
338
+ "env": {
339
+ "GOOGLE_API_KEY": "your-google-api-key",
340
+ "GEOCODING_PROVIDER": "google"
341
+ }
307
342
  }
308
343
  }
309
344
  }
@@ -485,9 +520,12 @@ CORS_ORIGIN=* # CORS origin (default: * in dev, https://cha
485
520
 
486
521
  ### Providers configuration
487
522
 
488
- - **Google**: Set `GOOGLE_API_KEY` to enable. Get a key from [Google Cloud Console](https://console.cloud.google.com) → APIs & Services → Credentials. Enable "Geocoding API" first.
523
+ - **Google**: Two options to provide the API key:
524
+ - **Server-side**: Set `GOOGLE_API_KEY` environment variable — all clients benefit automatically
525
+ - **Per-request**: Pass `apiKey` parameter in the tool call — for N8N, automations, or when you don't control the server
489
526
  - **Photon**: Always available, no configuration needed. You can optionally self-host (set `PHOTON_BASE_URL`).
490
- - The `provider` parameter on `search_address` and `reverse_geocode` tools lets the LLM override the default per request.
527
+ - Each provider has **dedicated tools** (`search_address_google`, `search_address_photon`, etc.) no `provider` parameter needed.
528
+ - The `apiKey` parameter on Google tools is never logged, never stored, never returned in responses.
491
529
 
492
530
  ---
493
531
 
@@ -6,7 +6,7 @@ const SERVER_URL = process.argv[2] || 'https://geocrafter.rankorr.red/mcp';
6
6
  // Proxy HTTP MCP server to stdio for Cursor
7
7
  const server = new McpServer({
8
8
  name: 'geocrafter-http-proxy',
9
- version: '1.0.5',
9
+ version: '1.5.0',
10
10
  });
11
11
  // Forward all requests to HTTP server
12
12
  async function forwardRequest(method, params) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shyzus/mcp-geocrafter",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "GeoCrafter - MCP server for geocoding, reverse geocoding, geohash and distance calculation - Powered by Photon API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",