Mapsource OpenStreetMap & Geospatial APIs

OpenStreetMap queries, maps/styles, search, routing, terrain, analysis, pipelines, and rendering.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
98%
Integridad del esquema
85%
Calidad de los nombres
82%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'elevation' description lacks action verben elevation

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~4,593Tokens (definiciones de herramientas)
~3.4 KBTamaño de respuesta típico
Impacto significativo en la atención (3.59% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "mapsource": {
      "url": "https://mapsource.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://mapsource.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (13)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢service_status

Read Overpass engine readiness, dataset timestamp, billing state, and x402 payment mode. Public. Use geo_data with operation status for the full subsystem report.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢basemap_catalog

List raster and vector tile templates, source zoom ranges, dataset snapshots, and attribution. The catalog is public; tile requests require a subscription key.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢elevation(lat, lon)

Sample terrain at lat/lon. elevationMeters is clamped to zero; sampledMeters retains the raw model elevation. belowSeaLevel identifies negative samples and bathymetryTile references the source raster. Requires a subscription key. Not survey-grade.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "minimum": -85.05112878,
      "maximum": 85.05112878,
      "description": "Latitude in decimal degrees."
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees."
    }
  },
  "required": [
    "lat",
    "lon"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢geo_data(operation, lat, lon, zoom, bands, ...)

Read service status, basemap catalog, point elevation, contours, usage, and metrics. Status includes subsystem availability and replication lag. Elevation returns surface and raw model heights. Metrics report request rates, success rates, latency percentiles, and dataset ages. Status and basemaps are public; other operations require a subscription key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "status",
        "basemaps",
        "elevation",
        "contours",
        "usage",
        "metrics"
      ],
      "description": "status: service state and dataset freshness. basemaps: tile catalogue. elevation: ground height at a point. contours: banded topographic contours. usage: this key's consumption. metrics: request rates, latency percentiles and how old each dataset is."
    },
    "lat": {
      "description": "elevation and contours: latitude.",
      "type": "number",
      "minimum": -85.05112878,
      "maximum": 85.05112878
    },
    "lon": {
      "description": "elevation and contours: longitude.",
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "zoom": {
      "description": "contours only: detail level, 6 to 13. Defaults to 9.",
      "type": "integer",
      "minimum": 6,
      "maximum": 13
    },
    "bands": {
      "description": "contours only: how many elevation bands, 4 to 24. Defaults to 14.",
      "type": "integer",
      "minimum": 4,
      "maximum": 24
    },
    "window": {
      "description": "metrics only: minutes to measure over. Defaults to 60.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1440
    }
  },
  "required": [
    "operation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴geo_style(operation, base, patch, name, slug, ...)

Configure semantic basemap styles. Operations: explain and schema retrieve public definitions; intent generates a proposal; preview compiles changes; save, list, revisions, diff, and delete manage profiles. Submit semantic manifests or preset patches, not raw MapLibre JSON. Authenticated operations affect the current key's profiles.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "operation": {
      "default": "preview",
      "description": "explain: layer definitions. schema: manifest JSON Schema. intent: generate a style proposal. preview: compile without saving. save: store a profile. list: available presets and profiles. revisions: saved versions. diff: revision comparison. delete: remove a profile.",
      "type": "string",
      "enum": [
        "explain",
        "schema",
        "intent",
        "preview",
        "save",
        "list",
        "revisions",
        "diff",
        "delete"
      ]
    },
    "base": {
      "default": "dark",
      "description": "Base preset for the patch. Available presets are listed at /api/styles.",
      "type": "string",
      "enum": [
        "light",
        "dark",
        "operations"
      ]
    },
    "patch": {
      "default": {},
      "description": "Semantic overrides: {\"tokens\":{...},\"typography\":{...},\"layers\":{\"roads.motorway\":{\"color\":\"#f2a900\"}}}. Layer keys come from the explain operation.",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "name": {
      "description": "save only: a human name for the profile.",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "slug": {
      "description": "save and delete: the profile's stable URL id. Defaults to a slug of the name on save.",
      "type": "string",
      "minLength": 2,
      "maxLength": 48
    },
    "description": {
      "description": "save: profile description.",
      "type": "string",
      "maxLength": 400
    },
    "includeStyle": {
      "default": false,
      "description": "Include the compiled MapLibre style in addition to the hash, diff, and validation issues. Defaults to false.",
      "type": "boolean"
    },
    "intent": {
      "description": "intent: text description of the desired basemap. Returns an editable manifest and a summary of applied changes.",
      "type": "string",
      "minLength": 3,
      "maxLength": 2000
    },
    "save": {
      "default": false,
      "description": "intent only: also save the proposal as a profile revision on this key.",
      "type": "boolean"
    },
    "from": {
      "description": "diff only: the earlier revision. Defaults to the one before `to`.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "to": {
      "description": "diff only: the later revision. Defaults to the current one.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢geo_render(styleRevision, lat, lon, zoom, bbox, ...)

Render a static PNG map from a center and zoom or bounding box. Supports GeoJSON overlays, result handles, and up to 50 labeled markers. Dark and light styles use raster rendering; other preset or profile names use vector rendering. Requires a subscription key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "styleRevision": {
      "description": "Saved profile revision to use for rendering.",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "lat": {
      "type": "number",
      "minimum": -85.05112878,
      "maximum": 85.05112878
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "zoom": {
      "type": "number",
      "minimum": 0,
      "maximum": 19
    },
    "bbox": {
      "description": "[west, south, east, north]. Fits the viewport to this instead of using lat/lon/zoom.",
      "minItems": 4,
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "width": {
      "default": 800,
      "type": "integer",
      "minimum": 64,
      "maximum": 2048
    },
    "height": {
      "default": 600,
      "type": "integer",
      "minimum": 64,
      "maximum": 2048
    },
    "style": {
      "default": "dark",
      "description": "dark or light composites the raster basemaps. Any other value names a style preset or one of your saved basemap profiles and is rendered as vector against that compiled style.",
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "bearing": {
      "default": 0,
      "description": "Vector renders only.",
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "pitch": {
      "default": 0,
      "description": "Vector renders only.",
      "type": "number",
      "minimum": 0,
      "maximum": 60
    },
    "geojson": {
      "description": "GeoJSON to draw, or a result handle such as rh_ followed by 32 hex characters."
    },
    "markers": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -85.05112878,
            "maximum": 85.05112878
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          },
          "label": {
            "type": "string",
            "maxLength": 24
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      }
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢geo_analyze(operation, pipeline, returns, estimateOnly, a, ...)

Measure or transform geometry using buffer, centroid, bbox, area, length, distance, intersect, union, difference, contains, intersects, nearest, simplify, or convex. Inputs accept GeoJSON, coordinate pairs, Overpass results, and result handles. Polygon overlay operations require areas. Use operation pipeline for up to 12 ordered steps and estimateOnly for cost estimation. Requires a subscription key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "buffer",
        "centroid",
        "bbox",
        "area",
        "length",
        "distance",
        "intersect",
        "union",
        "difference",
        "contains",
        "intersects",
        "nearest",
        "simplify",
        "convex",
        "pipeline"
      ],
      "description": "buffer and simplify take distance. distance, intersect, union, difference, contains, intersects and nearest take a second geometry in b. pipeline runs several steps server-side and takes pipeline instead of a."
    },
    "pipeline": {
      "description": "pipeline only: ordered steps. Any argument may be $anEarlierStepId.",
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Referenced by later steps as $id."
          },
          "op": {
            "type": "string",
            "enum": [
              "search",
              "nearby",
              "route",
              "isochrone",
              "matrix",
              "analyze",
              "filter",
              "sort",
              "limit"
            ]
          },
          "args": {
            "default": {},
            "type": "object",
            "propertyNames": {
              "type": "string"
            },
            "additionalProperties": {}
          }
        },
        "required": [
          "id",
          "op"
        ]
      }
    },
    "returns": {
      "description": "pipeline only: which step to return, as $stepId. Defaults to the last.",
      "type": "string"
    },
    "estimateOnly": {
      "default": false,
      "description": "pipeline: calculate estimated cost without execution.",
      "type": "boolean"
    },
    "a": {
      "description": "GeoJSON, a [lon, lat] pair, an Overpass result, a places result, or a result handle such as rh_ followed by 32 hex characters. Required for every operation except pipeline."
    },
    "b": {
      "description": "The second operand, in the same forms as a."
    },
    "distance": {
      "description": "Buffer radius or simplify tolerance.",
      "type": "number",
      "minimum": 0,
      "maximum": 500000
    },
    "units": {
      "default": "meters",
      "type": "string",
      "enum": [
        "meters",
        "kilometers",
        "miles"
      ]
    }
  },
  "required": [
    "operation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢geo_search(operation, lat, lon, radius, category, ...)

Search places and retrieve geographic entities. Use lookup for local address, business, brand and landmark search with soft map-focus bias, strict house numbers, source IDs and ambiguity reporting. Use discover for POIs in a viewport, polygon or isochrone, optionally ranked by travel time. Other operations: search, autocomplete, nearby, reverse, details, geocode, resolve, entity. Requires a subscription key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "search",
        "autocomplete",
        "nearby",
        "reverse",
        "details",
        "geocode",
        "resolve",
        "entity",
        "lookup",
        "discover"
      ],
      "description": "lookup: local address, business and brand suggestions with soft map-focus bias. discover: businesses in a viewport, polygon or isochrone, optionally ranked by travel time. resolve: name to entity ID. entity: entity lookup. search: populated-place names. autocomplete: populated-place prefixes. nearby: radius search. reverse: coordinate lookup. details: OSM type and ID lookup. geocode: compatibility provider; use lookup for new integrations."
    },
    "lat": {
      "type": "number",
      "minimum": -85.05112878,
      "maximum": 85.05112878
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "radius": {
      "description": "Metres. Defaults to 500 for nearby and 150 for reverse.",
      "type": "integer",
      "minimum": 10,
      "maximum": 5000
    },
    "category": {
      "description": "lookup/discover: business or POI category, such as coffee, pharmacy or restaurants. nearby: feature category, such as cafe, restaurant, hospital or park.",
      "type": "string",
      "maxLength": 40
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "osmType": {
      "description": "details only.",
      "type": "string",
      "enum": [
        "node",
        "way",
        "relation"
      ]
    },
    "osmId": {
      "description": "details only.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "q": {
      "description": "lookup: address/name text, 1–120 characters. discover: optional name/brand filter. search/autocomplete: populated-place name. geocode: compatibility provider query.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "placeClass": {
      "description": "search and autocomplete: restrict to one class of populated place.",
      "type": "string",
      "enum": [
        "city",
        "town",
        "village",
        "suburb",
        "neighbourhood",
        "hamlet"
      ]
    },
    "entityId": {
      "description": "entity only: an id from resolve, beginning geo_.",
      "type": "string",
      "minLength": 4,
      "maxLength": 300
    },
    "language": {
      "description": "lookup: preferred language, default en.",
      "type": "string",
      "maxLength": 12
    },
    "types": {
      "description": "lookup: comma-separated address,business,landmark,street,place.",
      "type": "string",
      "maxLength": 100
    },
    "countrycodes": {
      "description": "lookup: comma-separated two-letter country filters.",
      "type": "string",
      "maxLength": 40
    },
    "bbox": {
      "description": "west,south,east,north. lookup: soft focus unless bounded is true. discover: required region boundary unless region or minutes is supplied.",
      "type": "string",
      "maxLength": 120
    },
    "bounded": {
      "description": "lookup: explicitly restrict results to bbox.",
      "type": "boolean"
    },
    "region": {
      "description": "discover: polygon GeoJSON or owned result handle; alternatively supply bbox or minutes.",
      "anyOf": [
        {
          "type": "string",
          "maxLength": 120
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      ]
    },
    "minutes": {
      "description": "discover: generate an isochrone from lat/lon.",
      "type": "integer",
      "minimum": 1,
      "maximum": 30
    },
    "costing": {
      "type": "string",
      "enum": [
        "auto",
        "bicycle",
        "pedestrian",
        "truck"
      ]
    },
    "rankBy": {
      "description": "discover: travel_time compares the nearest 25 candidates.",
      "type": "string",
      "enum": [
        "distance",
        "travel_time"
      ]
    },
    "offset": {
      "description": "discover: result page offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 2000
    }
  },
  "required": [
    "operation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢geo_navigate(operation, locations, sources, targets, costing, ...)

Navigation operations: route, matrix, isochrone, map_match, snap, and optimize. Route accepts 2–10 waypoints and optional elevation profiles. Matrix supports up to 625 pairs. Map matching accepts up to 1,000 trace points; optimization accepts 3–20 stops. Results include geometry or travel costs and source metadata. Requires a subscription key. Unroutable requests return an error and require revised inputs.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "route",
        "matrix",
        "isochrone",
        "map_match",
        "snap",
        "optimize"
      ],
      "description": "route: turn-by-turn between waypoints. matrix: many-to-many times and distances. isochrone: reachable-area polygons. map_match: fit a GPS trace to the road network. snap: nearest network point. optimize: best visit order."
    },
    "locations": {
      "description": "Waypoints for route and optimize, points for snap, or the ordered trace for map_match. For isochrone, the single origin.",
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -85.05112878,
            "maximum": 85.05112878
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      }
    },
    "sources": {
      "description": "matrix only: the origins.",
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -85.05112878,
            "maximum": 85.05112878
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      }
    },
    "targets": {
      "description": "matrix only: the destinations. Omit for a square matrix of sources against themselves.",
      "maxItems": 25,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -85.05112878,
            "maximum": 85.05112878
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      }
    },
    "costing": {
      "default": "auto",
      "description": "Travel mode used to weight the road graph.",
      "type": "string",
      "enum": [
        "auto",
        "bicycle",
        "pedestrian",
        "truck",
        "motor_scooter",
        "bus"
      ]
    },
    "contours": {
      "description": "isochrone only: travel-time bands in minutes.",
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "number",
        "minimum": 1,
        "maximum": 60
      }
    },
    "elevation": {
      "default": false,
      "description": "route only: also return a sampled terrain profile with total gain and loss.",
      "type": "boolean"
    }
  },
  "required": [
    "operation"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢route(locations, costing, elevation)

Calculate a turn-by-turn route between 2–10 waypoints. Supported costing: auto, bicycle, pedestrian, truck, motor_scooter, and bus. Returns GeoJSON, distance, duration, and maneuvers. Set elevation to true for a terrain profile with gain and loss. Requires a subscription key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "locations": {
      "minItems": 2,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "lat": {
            "type": "number",
            "minimum": -85.05112878,
            "maximum": 85.05112878
          },
          "lon": {
            "type": "number",
            "minimum": -180,
            "maximum": 180
          }
        },
        "required": [
          "lat",
          "lon"
        ]
      },
      "description": "Ordered waypoints, 2 to 10; first is the origin and last is the destination."
    },
    "costing": {
      "default": "auto",
      "description": "Travel mode used to weight the road graph.",
      "type": "string",
      "enum": [
        "auto",
        "bicycle",
        "pedestrian",
        "truck",
        "motor_scooter",
        "bus"
      ]
    },
    "elevation": {
      "default": false,
      "description": "Sample a terrain profile along the route and report total gain and loss in metres.",
      "type": "boolean"
    }
  },
  "required": [
    "locations"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢isochrone(lat, lon, costing, contours)

Calculate reachable-area polygons from a coordinate for up to four travel-time bands. Returns GeoJSON for catchment, coverage, and accessibility analysis. Requires a subscription key.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "minimum": -85.05112878,
      "maximum": 85.05112878,
      "description": "Latitude of the centre point."
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude of the centre point."
    },
    "costing": {
      "default": "auto",
      "description": "Travel mode used to weight the road graph.",
      "type": "string",
      "enum": [
        "auto",
        "bicycle",
        "pedestrian",
        "truck",
        "motor_scooter",
        "bus"
      ]
    },
    "contours": {
      "default": [
        10
      ],
      "description": "Travel-time bands in minutes, at most four.",
      "minItems": 1,
      "maxItems": 4,
      "type": "array",
      "items": {
        "type": "number",
        "minimum": 1,
        "maximum": 60
      }
    }
  },
  "required": [
    "lat",
    "lon"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢overpass_query(responseMode, query)

Execute bounded Overpass QL over OSM nodes, ways, relations, tags, geometry, areas, metadata, and spatial selectors. Historical attic queries are unsupported. Requires a subscription key or authorized x402 payment. Use service_status to retrieve the dataset timestamp.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "responseMode": {
      "default": "compact",
      "description": "compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.",
      "type": "string",
      "enum": [
        "compact",
        "handle",
        "raw"
      ]
    },
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 131072,
      "description": "A complete bounded Overpass QL query, with explicit timeout and output limit."
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_features(responseMode, category, south, west, north, ...)

Find cafes, restaurants, buildings, parks, schools, hospitals, transit stops, drinking water, or trails within a bounding box up to 0.5 degrees per axis. Returns OSM geometry and tags, subject to the output limit. Requires a subscription key or authorized x402 payment.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "responseMode": {
      "default": "compact",
      "description": "compact: inline when small, a result handle when large. handle: always a handle. raw: always the full body, however large.",
      "type": "string",
      "enum": [
        "compact",
        "handle",
        "raw"
      ]
    },
    "category": {
      "type": "string",
      "enum": [
        "cafes",
        "restaurants",
        "buildings",
        "parks",
        "schools",
        "hospitals",
        "transit_stops",
        "drinking_water",
        "trails"
      ],
      "description": "Mapped feature category; use overpass_query for arbitrary OSM tags."
    },
    "south": {
      "type": "number",
      "minimum": -85,
      "maximum": 85
    },
    "west": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "north": {
      "type": "number",
      "minimum": -85,
      "maximum": 85
    },
    "east": {
      "type": "number",
      "minimum": -180,
      "maximum": 180
    },
    "limit": {
      "default": 100,
      "description": "Maximum returned OSM objects, not a pagination guarantee.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    }
  },
  "required": [
    "category",
    "south",
    "west",
    "north",
    "east"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada13 herramientas
verificadoversión no registrada13 herramientas