Map Canvas MCP
Enables interactive map display with up to 50 marked places and optional route lines, using a bundled Leaflet UI and OpenStreetMap tiles.
README
Map Canvas MCP
An embedded interactive map for MCP Apps hosts such as ChatGPT. The Worker returns map data plus a stable UI loader. Each tool result selects a content-addressed Leaflet bundle served from Cloudflare Static Assets, so UI updates do not require refreshing unchanged tool metadata. The user's browser fetches visible OpenStreetMap tiles directly from the standard tile servers.
Production endpoint
https://map-canvas.android-mxdiego9.workers.dev/mcp
The endpoint is public and does not require authentication.
Local development
npm install
npm run check
npm run dev
npm run check type-checks the Worker and runs MCP smoke tests for
initialization, tool discovery, tool execution, and widget resource loading.
The local MCP endpoint is http://localhost:8787/mcp. Test it with the MCP
Inspector:
npx @modelcontextprotocol/inspector@latest
Deploy
Deploy from a terminal:
npm run deploy
No API key is required. Do not add secrets to source or wrangler.jsonc; use
Cloudflare secrets if authentication is added later.
Deploy with GitHub Actions
The included workflow deploys on every push to main, then runs the production
MCP smoke test against the public endpoint. It can also be run manually from the
Actions tab. Add these repository Actions secrets first:
CLOUDFLARE_API_TOKEN: a token scoped to edit Workers in the target accountCLOUDFLARE_ACCOUNT_ID: the target Cloudflare account ID
The values stay in GitHub Actions secrets and must not be committed to the repository.
Tool
show_map accepts 1–50 places with decimal latitude/longitude coordinates.
Simple callers can still use connectPlaces; travel itineraries can also add:
- day/date and time labels with day filtering
- categories and confirmed/planned/tentative status
- transport legs for walking, car, taxi, bus, rail, ferry, and flights
- schematic straight connections or actual route geometry
- verified place links, with a Google Maps coordinate link as the fallback
The widget uses numbered, category-colored markers, an itinerary panel, a reset-view action, and optional fullscreen presentation in ChatGPT. Schematic legs are dashed and explicitly labeled so they are not mistaken for turn-by-turn navigation.
Map data © OpenStreetMap contributors.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.