io.github.fouomene/mcp-server-geodata-placefinder

Official registry Search and web

MCP GeoData Placefinder: search places, reverse geocode, and find nearby locations.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

NPM package mcp-server-geodata-placefinder
Claude Code
claude mcp add mcp-server-geodata-placefinder -- npx -y mcp-server-geodata-placefinder@2.0.0
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "mcp-server-geodata-placefinder": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-server-geodata-placefinder@2.0.0"
            ]
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. GeoDataPlacefinder
  2. Documentation
  3. Installation
  4. Contributing
  5. License

GeoDataPlacefinder

An open-source geocoding API and demo site that converts addresses into geographic coordinates (and vice versa) using Overture Maps data queried through DuckDB.

Features

  • Geocoding — convert free-form addresses, place names, or categories into coordinates
  • Reverse geocoding — find the nearest places to any latitude/longitude pair
  • Nearest place — single closest match within a configurable radius
  • Place detail — full Overture Maps record by place ID
  • Zero external dependencies at runtime — DuckDB reads Overture Parquet files directly over HTTPS; no PostGIS, no Elasticsearch, no third-party API keys

Documentation

Full API reference is available on the live demo site at /docs, or read the source in lib/api-spec/openapi.yaml.

Endpoints
MethodPathDescription
GET/api/healthServer status and cache info
GET/api/searchGeocode by name, address, city, postcode, or category
GET/api/reverseReverse geocode — places near a coordinate
GET/api/places/nearestSingle closest place within a radius
GET/api/places/:idFull place detail by Overture place ID
Quick example
# Geocode by name
curl "https://geodataplacefinder.org/api/search?q=Eiffel+Tower"

# Reverse geocode
curl "https://geodataplacefinder.org/api/reverse?lat=48.8584&lon=2.2945"

# Nearest place within 500 m
curl "https://geodataplacefinder.org/api/places/nearest?lat=48.8584&lon=2.2945&max_distance_m=500"

Installation

Prerequisites
  • Docker (recommended)
  • Or: Node.js 20+ and pnpm 9+
# 1. Clone the repository
git clone https://github.com/your-org/geodataplacefinder.git
cd geodataplacefinder

# 2. Build and start both services
docker compose up --build

The API server is available at http://localhost:8080 and the demo site at http://localhost:3000. The production deployment is at https://geodataplacefinder.org.

Note: On first start DuckDB fetches ~50 000 place records from Overture Maps S3 (~15 s). Subsequent restarts load the local cache instantly from data/places.duckdb.

Dockerfile (API server)
FROM node:20-alpine AS base
WORKDIR /app

# Install pnpm
RUN corepack enable && corepack prepare pnpm@latest --activate

# Install dependencies
COPY pnpm-workspace.yaml pnpm-lock.yaml package.json ./
COPY artifacts/api-server/package.json ./artifacts/api-server/
COPY lib/ ./lib/
RUN pnpm install --frozen-lockfile

# Build
COPY . .
RUN pnpm --filter @workspace/api-server run build

EXPOSE 8080
CMD ["node", "artifacts/api-server/dist/index.js"]
docker-compose.yml
version: "3.9"
services:
  api:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    environment:
      PORT: 8080
    volumes:
      - ./data:/app/data   # persist the DuckDB cache between restarts

  web:
    build:
      context: .
      dockerfile: artifacts/geodata-web/Dockerfile
    ports:
      - "3000:3000"
    environment:
      PORT: 3000
    depends_on:
      - api
Manual installation (without Docker)
# 1. Clone
git clone https://github.com/your-org/geodataplacefinder.git
cd geodataplacefinder

# 2. Install dependencies (requires Node.js 20+ and pnpm 9+)
pnpm install

# 3. Start the API server (port 8080)
pnpm --filter @workspace/api-server run dev

# 4. In a separate terminal, start the frontend (port 25276 by default)
pnpm --filter @workspace/geodata-web run dev
Environment variables
VariableDefaultDescription
PORT8080API server port
SESSION_SECRET—Secret used for session signing (set for production)

Contributing

Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.


License

GeoDataPlacefinder is released under the GNU General Public License v3.0. See LICENSE for the full text.

Data sourced from Overture Maps Foundation, released under CDLA Permissive 2.0.

Frequently asked questions

What is io.github.fouomene/mcp-server-geodata-placefinder?

MCP GeoData Placefinder: search places, reverse geocode, and find nearby locations.

How do I install io.github.fouomene/mcp-server-geodata-placefinder?

It runs on your machine. In Claude Code: claude mcp add mcp-server-geodata-placefinder -- npx -y mcp-server-geodata-placefinder@2.0.0. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.fouomene/mcp-server-geodata-placefinder need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is io.github.fouomene/mcp-server-geodata-placefinder open source?

Yes. Its code is on GitHub under the GPL-3.0 license.

Who maintains io.github.fouomene/mcp-server-geodata-placefinder?

It is published by fouomene. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.