@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 +52 -14
- package/dist/http-client.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,6 +11,8 @@ GeoCrafter is a clean, modular MCP server for geocoding and reverse geocoding wi
|
|
|
11
11
|

|
|
12
12
|

|
|
13
13
|

|
|
14
|
+

|
|
15
|
+

|
|
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** -
|
|
36
|
-
- 📍 **GPS to Address** -
|
|
37
|
-
- 🔄 **Multi-Provider** -
|
|
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
|
-
|
|
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
|
-
>
|
|
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**:
|
|
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
|
-
-
|
|
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
|
|
package/dist/http-client.js
CHANGED
|
@@ -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
|
|
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