Skip to main content
Glama
russianryebread

Maps MCP App

Maps MCP App

A ChatGPT App that displays an interactive map powered by OpenStreetMap data. Users can search for locations, businesses, landmarks, and points of interest — all within a ChatGPT conversation.

Architecture

ChatGPT
   ↓
ChatGPT App (React + MapLibre)
   ↓
MCP Protocol
   ↓
MCP Server (Hono + Cloudflare Workers)
   ↓
OpenStreetMap API (Nominatim + Overpass)

Related MCP server: maps-scrapper

Tech Stack

Layer

Technology

Frontend

React 19, TypeScript, Vite, MapLibre GL JS

Backend

Bun, Hono, MCP SDK, Zod

Data

OpenStreetMap (Nominatim geocoding, Overpass POI queries)

Deployment

Cloudflare Workers (server) + Cloudflare Pages (frontend)

Validation

Shared Zod schemas across frontend and backend

Repository Structure

├── apps/
│   ├── mcp-server/           # MCP protocol server
│   │   └── src/
│   │       ├── routes/        # Hono HTTP routes
│   │       ├── tools/         # MCP tool handlers
│   │       ├── services/      # OSM search service
│   │       └── index.ts       # Cloudflare Worker entry
│   └── chatgpt-app/          # React frontend
│       └── src/
│           ├── components/    # React components
│           ├── context/       # State management
│           ├── api/           # MCP client
│           └── main.tsx       # App entry
├── packages/
│   ├── shared-types/         # TypeScript types, enums, interfaces
│   └── shared-validation/    # Zod schemas (shared)
└── docs/
    ├── techspecs.md          # Technical specification
    ├── implementation.md     # Implementation guide
    └── DEPLOYMENT.md         # Deployment instructions

Getting Started

Prerequisites

  • Bun 1.3+

  • Node.js 22+ (for tooling)

Install

git clone <repo-url>
cd maps-mcp-app
bun install

Build Shared Packages

bun run --filter @maps-mcp/shared-types build
bun run --filter @maps-mcp/shared-validation build

Run Locally

Terminal 1 — MCP Server:

cd apps/mcp-server
bun run dev

Server starts on http://localhost:3001

Terminal 2 — Frontend:

cd apps/chatgpt-app
bun run dev

App opens at http://localhost:5173

Run Tests

# All tests
bun test

# Or per package
cd packages/shared-validation && bun test
cd apps/mcp-server && bun test

MCP Tools

search_locations

Search for nearby points of interest.

Input:

  • center — { lat: number, lng: number }

  • radius — meters (250, 500, 1000, 2000, 5000, 10000, 25000)

  • category — single category (optional)

  • categories — multiple categories (optional)

  • text — text search (optional)

  • limit — max results (default 50)

Output: GeoJSON FeatureCollection + list items

get_location

Get detailed information for one location.

categories

List all supported search categories.

Supported Categories

  • Restaurants, Coffee, Grocery, Parks, Museums

  • Schools, Hospitals, Hotels, EV Chargers

Features

  • ✅ Interactive MapLibre map with OpenStreetMap tiles

  • ✅ Search by category, text, or both

  • ✅ Adjustable search radius with visual overlay

  • ✅ Pin markers that highlight on click

  • ✅ Interactive results list (click to pan/zoom)

  • ✅ Category filter chips

  • ✅ Light and dark mode support

  • ✅ Responsive layout (desktop + mobile)

  • ✅ Full Zod validation on every request/response

  • ✅ Strict TypeScript throughout

  • ✅ Cloudflare Workers + Pages deployment

Deployment

See Deployment Guide for instructions on deploying to Cloudflare and registering with ChatGPT.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables AI assistants to search, validate, and edit OpenStreetMap data through natural language commands and built-in safety protections. It supports discovery of nearby amenities, geographic data exploration, and secure map editing via OAuth authentication.
    31
    4
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to access Mapbox location services for geocoding, POI search, multi-modal routing, travel time analysis, isochrones, map matching, and interactive/static map rendering through natural language.
    1,944 npm
    MIT