Server data from the Official MCP Registry
Unified place search for OpenStreetMap, Google & your own data. Fallback, merge, zero API keys.
Unified place search for OpenStreetMap, Google & your own data. Fallback, merge, zero API keys.
Valid MCP server (5 strong, 4 medium validity signals). 2 known CVEs in dependencies ⚠️ Package registry links to a different repository than scanned source. Imported from the Official MCP Registry. 1 finding(s) downgraded by scanner intelligence.
22 files analyzed · 3 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: GOOGLE_MAPS_API_KEY
Environment variable: GEOWIRE_INTERNAL_CSV
Environment variable: GEOWIRE_CONFIG
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-geowire-geowire": {
"env": {
"GEOWIRE_CONFIG": "your-geowire-config-here",
"GOOGLE_MAPS_API_KEY": "your-google-maps-api-key-here",
"GEOWIRE_INTERNAL_CSV": "your-geowire-internal-csv-here"
},
"args": [
"-y",
"@geowirehq/mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
Add real-world places to any AI agent in 5 minutes — no API key required.
One place-search interface for every AI and map provider.
GeoWire is an open-source geo search gateway that sits between AI agents and map/place data providers (OpenStreetMap, Google, your own data) and exposes them through a single MCP server, REST API, and SDK — with provider fallback, multi-provider merge + dedup, cost budgets, and a policy engine that enforces each provider's caching/attribution terms.
Status: v0.1 ("It works") — published on npm. MCP · REST · CLI · SDK all functional.
| Direct integration | Single-provider MCP | GeoWire | |
|---|---|---|---|
| Unified place schema | ❌ per-provider code | ❌ | ✅ |
| Provider fallback on failure | ❌ | ❌ | ✅ |
| Multi-provider merge + dedup | ❌ | ❌ | ✅ |
| Cost budgets & routing | ❌ | ❌ | ✅ |
| Works without any API key | ❌ | depends | ✅ (OSM by default) |
| Self-hosted | — | depends | ✅ |
| Your own place data as a provider | ❌ | ❌ | ✅ |
| Transparent provenance (which source, what cost) | ❌ | ❌ | ✅ (every response) |
Add this to your MCP client config (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"geowire": { "command": "npx", "args": ["-y", "@geowirehq/mcp"] }
}
}
Then ask: "Find a 24-hour pharmacy near District 1, Ho Chi Minh City."
Works with zero API keys — OpenStreetMap is the default provider.
Add "env": { "GOOGLE_MAPS_API_KEY": "..." } to enable Google.
npx @geowirehq/cli search "Eiffel Tower" # terminal search with a results table
npx @geowirehq/cli search "coffee" --near 37.4979,127.0276 # bias to a coordinate
npx @geowirehq/cli # start the REST + MCP server (zero-config)
npx @geowirehq/cli init # interactive setup wizard (.env + config)
npx @geowirehq/cli test # check provider connections
docker run -p 4980:4980 geowire/geowire
# then:
curl -X POST http://localhost:4980/v1/places/search \
-H 'content-type: application/json' \
-d '{"query":"pharmacy","near":{"latitude":10.7769,"longitude":106.7009}}'
Or with docker compose up (see docker-compose.yml). API docs at /docs.
import { createGeoWire } from "@geowirehq/core";
import { createNominatimProvider } from "@geowirehq/provider-nominatim";
const geo = createGeoWire({ providers: [createNominatimProvider()] });
const { results, meta } = await geo.searchPlaces({
query: "coffee",
near: { latitude: 37.5, longitude: 127.0 },
});
| Tool | Description |
|---|---|
search_places | Natural-language + coordinate/region place search |
get_place | Details by provider:providerPlaceId reference |
geocode_address | Address → coordinates (+ normalized address) |
reverse_geocode | Coordinates → nearest address |
list_geo_providers | Active providers, capabilities, status (agent self-awareness) |
Every response includes both a human-readable summary and structuredContent
(schema-valid JSON).
| Method | Path | |
|---|---|---|
| POST | /v1/places/search | search |
| GET | /v1/places/{ref} | place details (provider:id) |
| GET | /v1/geocode?address= | geocode |
| GET | /v1/reverse-geocode?lat=&lon= | reverse geocode |
| GET | /v1/providers | list providers |
| GET | /v1/health | health check |
| GET | /metrics | Prometheus metrics |
| GET | /docs | Swagger UI (OpenAPI 3.1) |
| POST | /mcp | MCP over Streamable HTTP |
Optional Bearer auth: set GEOWIRE_API_KEYS=key1,key2.
geowire.config.yaml:
providers:
nominatim: { enabled: true } # default ON, no key
google: { enabled: true, apiKey: ${GOOGLE_MAPS_API_KEY} }
internal: { enabled: true, source: ./my-places.csv, priority: 100 }
routing:
defaultStrategy: merge # first-success | merge
budget:
perRequestMaxUSD: 0.10 # over-budget paid providers are skipped, free ones used
Keys come from the environment (${VAR}), never committed in plaintext.
| Provider | Key? | Capabilities |
|---|---|---|
@geowirehq/provider-nominatim (OpenStreetMap) | none | search, geocode, reverseGeocode |
@geowirehq/provider-google (Maps Platform) | BYOK | search, geocode, reverseGeocode, getPlace |
@geowirehq/provider-internal (your CSV) | none | search |
Want another provider? See CONTRIBUTING.md — "Write a provider in 30 minutes".
AI agent / app
│ MCP · REST · SDK
▼
GeoWire core ── pipeline: plan → execute → normalize → dedup → rank → policy → cache
│ GeoProvider contract
▼
providers: nominatim · google · internal · (community)
Monorepo packages: schema · provider-sdk · provider-testkit · core ·
providers/* · mcp · apps/server · cli.
Apache-2.0. GeoWire's code license is separate from the terms of third-party map/place data providers — usage of Google, Mapbox, HERE, Kakao, Naver, etc. is governed by each provider's own terms. OSM data is under ODbL; GeoWire's policy engine enforces attribution and caching limits per provider.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.