norway-location-transport-mcp

Norwegian transport (Entur) and geodata (Kartverket): trips, departures, addresses, elevation.

我该使用它吗

质量与安全性

A
描述质量
96%
模式完整度
97%
命名质量
95%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(1)

  • LOWTool 'get_elevation_profile' description lacks action verb在 get_elevation_profile 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~4,223token 数(工具定义)
~1.5 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 3.30%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "norway-location-transport-mcp": {
      "command": "npx",
      "args": [
        "norway-location-transport-mcp"
      ]
    }
  }
}

可运行的软件包

npmnorway-location-transport-mcp0.1.0stdio

远程端点

https://norway-location-transport-mcp.met-mcp-worker.workers.dev/mcpstreamable-http

它能做什么

工具清单

工具(21)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢search_address(query, street, number, postal_code, municipality_number, ...)

Search official Norwegian addresses (Kartverket) and get coordinates. Use `query` for free text, or the specific fields for a structured search. Wildcards with `*` are supported (e.g. street 'Storg*'). Returns coordinates, postal code, municipality, and cadastral numbers for each match.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Free-text address, e.g. 'Karl Johans gate 1, Oslo'. Supports the * wildcard.",
      "type": "string",
      "minLength": 1
    },
    "street": {
      "description": "Street name (adressenavn). Supports the * wildcard.",
      "type": "string"
    },
    "number": {
      "description": "House number (nummer)",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "postal_code": {
      "description": "Postal code (postnummer), e.g. '0155'",
      "type": "string"
    },
    "municipality_number": {
      "description": "4-digit municipality code (kommunenummer), e.g. '0301' for Oslo",
      "type": "string"
    },
    "max_results": {
      "default": 10,
      "description": "Maximum number of matches to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_addresses_near(latitude, longitude, radius_m, max_results)

Find all official addresses within a radius of a coordinate (Kartverket). Each result includes its distance from the point. Good for 'what is at this location?'.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": 57,
      "maximum": 72,
      "description": "Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."
    },
    "longitude": {
      "type": "number",
      "minimum": -2,
      "maximum": 35,
      "description": "Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."
    },
    "radius_m": {
      "default": 100,
      "description": "Search radius in metres",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "max_results": {
      "default": 20,
      "description": "Maximum number of addresses to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢validate_address(address)

Check whether a free-text address exists in the official register and return its normalized form with coordinates. Uses fuzzy matching, so it also corrects small spelling errors. Returns `valid`, the best normalized match, and alternatives.

输入模式

{
  "type": "object",
  "properties": {
    "address": {
      "type": "string",
      "minLength": 1,
      "description": "Address to validate, e.g. 'karl johans gt 1 oslo'"
    }
  },
  "required": [
    "address"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢search_place_names(query, max_results)

Search official Norwegian place names (Kartverket Sentralt stedsnavnregister). Returns each name's feature type (e.g. Fjell, Innsjø, By), municipality, county, and coordinates. Supports the * wildcard and corrects small spelling errors.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Place name to search for, e.g. 'Galdhøpiggen'. Supports the * wildcard."
    },
    "max_results": {
      "default": 10,
      "description": "Maximum number of matches to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_place_names_near(latitude, longitude, radius_m, max_results)

Find the nearest official named features to a coordinate (Kartverket). Each result includes its feature type and distance from the point.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": 57,
      "maximum": 72,
      "description": "Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."
    },
    "longitude": {
      "type": "number",
      "minimum": -2,
      "maximum": 35,
      "description": "Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."
    },
    "radius_m": {
      "default": 1000,
      "description": "Search radius in metres",
      "type": "integer",
      "minimum": 1,
      "maximum": 20000
    },
    "max_results": {
      "default": 10,
      "description": "Maximum number of features to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_elevation(latitude, longitude)

Get the terrain elevation (metres above sea level) at a coordinate from the Norwegian national elevation model (Kartverket DTM). Covers mainland Norway.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": 57,
      "maximum": 72,
      "description": "Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."
    },
    "longitude": {
      "type": "number",
      "minimum": -2,
      "maximum": 35,
      "description": "Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_elevation_profile(path, samples)

Sample the terrain elevation evenly along a path of coordinates (Kartverket DTM) and return the profile plus total distance, ascent, and descent. Useful for hikes and routes. Give the path vertices in order; `samples` controls resolution.

输入模式

{
  "type": "object",
  "properties": {
    "path": {
      "minItems": 2,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number",
            "minimum": 57,
            "maximum": 72,
            "description": "Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."
          },
          "longitude": {
            "type": "number",
            "minimum": -2,
            "maximum": 35,
            "description": "Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."
          }
        },
        "required": [
          "latitude",
          "longitude"
        ]
      },
      "description": "Ordered path vertices (at least 2). The path is sampled evenly between them."
    },
    "samples": {
      "default": 20,
      "description": "Number of evenly spaced points to sample along the whole path",
      "type": "integer",
      "minimum": 2,
      "maximum": 50
    }
  },
  "required": [
    "path"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪transform_coordinates(x, y, from_epsg, to_epsg)

Convert a coordinate between reference systems using Kartverket's transformer. Give EPSG codes for source and target. Axis order: x is easting (longitude for geographic systems), y is northing (latitude). Common EPSG codes: 4326 WGS84, 4258 EUREF89 (both lon/lat), 25832 UTM32/EUREF89, 25833 UTM33, 25835 UTM35 (east/north in metres).

输入模式

{
  "type": "object",
  "properties": {
    "x": {
      "type": "number",
      "description": "Easting, or longitude for a geographic system (e.g. 4326/4258)"
    },
    "y": {
      "type": "number",
      "description": "Northing, or latitude for a geographic system"
    },
    "from_epsg": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Source EPSG code, e.g. 4326"
    },
    "to_epsg": {
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991,
      "description": "Target EPSG code, e.g. 25833"
    }
  },
  "required": [
    "x",
    "y",
    "from_epsg",
    "to_epsg"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢lookup_admin_unit(latitude, longitude, address)

Find which municipality (kommune) and county (fylke) a location falls in, with official codes (Kartverket). Give either a coordinate or a free-text address.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": 57,
      "maximum": 72,
      "description": "Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."
    },
    "longitude": {
      "type": "number",
      "minimum": -2,
      "maximum": 35,
      "description": "Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."
    },
    "address": {
      "description": "Free-text address, used if no coordinate is given",
      "type": "string",
      "minLength": 1
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪lookup_property(address, latitude, longitude, max_results)

Look up cadastral (matrikkel) identifiers for a property via the open address register (Kartverket): municipality number, gårdsnummer (gnr), bruksnummer (bnr), and festenummer. Give a free-text address or a coordinate. Full ownership data requires Kartverket's authenticated Matrikkel API; this returns the open address-linked identifiers.

输入模式

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Free-text address",
      "type": "string",
      "minLength": 1
    },
    "latitude": {
      "type": "number",
      "minimum": 57,
      "maximum": 72,
      "description": "Latitude in decimal degrees (WGS84). Norway spans about 57–72°N."
    },
    "longitude": {
      "type": "number",
      "minimum": -2,
      "maximum": 35,
      "description": "Longitude in decimal degrees (WGS84). Norway spans about 4–31°E."
    },
    "max_results": {
      "default": 5,
      "description": "Maximum number of properties to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
⚪resolve_stop_place(query, max_results)

Turn a place or address into Entur Stop Place IDs (public transport stops/stations). Use the returned ID with the departure, trip, accessibility, quay, and fare-zone tools.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Place or stop name, e.g. 'Oslo S' or 'Bergen busstasjon'"
    },
    "max_results": {
      "default": 5,
      "description": "Maximum number of stops to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_stops_near(latitude, longitude, radius_m, max_results)

Reverse-geocode a coordinate to the nearest public transport stop places (Entur), each with its distance. Use the returned IDs with the departure and trip tools.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees (WGS84)"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees (WGS84)"
    },
    "radius_m": {
      "default": 1000,
      "description": "Search radius in metres",
      "type": "integer",
      "minimum": 1,
      "maximum": 5000
    },
    "max_results": {
      "default": 5,
      "description": "Maximum number of stops to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡plan_trip(from_place, from_latitude, from_longitude, to_place, to_latitude, ...)

Plan a point-to-point public transport journey in Norway (Entur JourneyPlanner). Give each endpoint either as a Stop Place ID or as coordinates. Optionally set a departure or arrival time, filter transport modes, and set walk speed. Returns trip patterns with legs, modes, durations, and realtime times.

输入模式

{
  "type": "object",
  "properties": {
    "from_place": {
      "description": "Origin Stop Place ID (from resolve_stop_place)",
      "type": "string"
    },
    "from_latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees (WGS84)"
    },
    "from_longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees (WGS84)"
    },
    "to_place": {
      "description": "Destination Stop Place ID",
      "type": "string"
    },
    "to_latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees (WGS84)"
    },
    "to_longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees (WGS84)"
    },
    "date_time": {
      "description": "ISO 8601 time, e.g. '2026-08-24T09:00:00+02:00'. Defaults to now.",
      "type": "string"
    },
    "arrive_by": {
      "default": false,
      "description": "If true, date_time is the desired arrival time instead of departure time",
      "type": "boolean"
    },
    "transport_modes": {
      "description": "Restrict to these transit modes, e.g. ['bus','tram']. Omit for all modes.",
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "air",
          "bus",
          "cableway",
          "water",
          "funicular",
          "lift",
          "rail",
          "metro",
          "taxi",
          "tram",
          "trolleybus",
          "monorail",
          "coach"
        ]
      }
    },
    "walk_speed": {
      "description": "Walking speed in metres per second (default ~1.3)",
      "type": "number",
      "minimum": 0.5,
      "maximum": 3
    },
    "num_trip_patterns": {
      "default": 3,
      "description": "How many alternative trips to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_departures(stop_place_id, count)

Get the next departures from a stop place (Entur), including realtime delays and cancellations. Each departure shows line, destination, scheduled and expected times, delay, platform, and whether it is cancelled.

输入模式

{
  "type": "object",
  "properties": {
    "stop_place_id": {
      "type": "string",
      "pattern": "^NSR:StopPlace:\\d+$",
      "description": "Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."
    },
    "count": {
      "default": 10,
      "description": "How many upcoming departures to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "stop_place_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_realtime_status(stop_place_id, line_id)

Get a realtime health summary. For a stop, pass stop_place_id: it summarizes how many upcoming departures are on time, delayed, or cancelled. For a line, pass line_id: it reports how many vehicles are currently active and their delays.

输入模式

{
  "type": "object",
  "properties": {
    "stop_place_id": {
      "description": "Stop Place ID for a stop-level summary",
      "type": "string",
      "pattern": "^NSR:StopPlace:\\d+$"
    },
    "line_id": {
      "description": "Line ID (e.g. 'ATB:Line:2_3', from get_departures) for a line-level summary",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_stop_accessibility(stop_place_id)

Get accessibility information for a stop place (Entur): per-quay (platform) wheelchair access, and a summary. Note: Entur's free API exposes wheelchair access per quay; deeper equipment detail (elevators, tactile guidance) is only in Entur's authenticated Stop Register API and is not available here.

输入模式

{
  "type": "object",
  "properties": {
    "stop_place_id": {
      "type": "string",
      "pattern": "^NSR:StopPlace:\\d+$",
      "description": "Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."
    }
  },
  "required": [
    "stop_place_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_quays(stop_place_id)

List all quays (platforms/stopping points) at a stop place (Entur), with their public codes, coordinates, and wheelchair access.

输入模式

{
  "type": "object",
  "properties": {
    "stop_place_id": {
      "type": "string",
      "pattern": "^NSR:StopPlace:\\d+$",
      "description": "Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."
    }
  },
  "required": [
    "stop_place_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟡get_fare_zones(stop_place_id)

Get the fare (tariff) zone(s) a stop place belongs to (Entur). Fare zones set the ticket price for a journey.

输入模式

{
  "type": "object",
  "properties": {
    "stop_place_id": {
      "type": "string",
      "pattern": "^NSR:StopPlace:\\d+$",
      "description": "Entur Stop Place ID, e.g. 'NSR:StopPlace:59872'. Get one from resolve_stop_place."
    }
  },
  "required": [
    "stop_place_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_shared_vehicles(latitude, longitude, range_m, form_factors, count)

Find free-floating shared vehicles (city bikes, e-scooters, car share, mopeds) near a coordinate across all Norwegian operators (Entur Mobility). Each result shows the operator, type, battery, and location.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees (WGS84)"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees (WGS84)"
    },
    "range_m": {
      "default": 300,
      "description": "Search radius in metres",
      "type": "integer",
      "minimum": 10,
      "maximum": 2000
    },
    "form_factors": {
      "description": "Filter by type. Common values: BICYCLE, SCOOTER, CAR, MOPED, CARGO_BICYCLE, OTHER.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "count": {
      "default": 20,
      "description": "Maximum number of vehicles to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_docking_stations(latitude, longitude, range_m, count)

Find shared-mobility docking stations (e.g. city bike stations) near a coordinate (Entur Mobility), with available vehicle and free-dock counts per station.

输入模式

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees (WGS84)"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees (WGS84)"
    },
    "range_m": {
      "default": 500,
      "description": "Search radius in metres",
      "type": "integer",
      "minimum": 10,
      "maximum": 3000
    },
    "count": {
      "default": 10,
      "description": "Maximum number of stations to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_vehicle_positions(codespace_id, line_id, max_results)

Get live positions of public transport vehicles (Entur realtime), filtered by operator codespace and/or line. Each vehicle shows its position, bearing, speed, and delay. Codespace examples: ATB (Trondheim), KOL (Stavanger), SKY (Bergen area). Get a line_id from get_departures.

输入模式

{
  "type": "object",
  "properties": {
    "codespace_id": {
      "description": "Operator codespace, e.g. 'ATB'. Optional if line_id is given.",
      "type": "string"
    },
    "line_id": {
      "description": "Line ID, e.g. 'ATB:Line:2_3'. Optional if codespace_id is given.",
      "type": "string"
    },
    "max_results": {
      "default": 50,
      "description": "Maximum number of vehicles to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

社区

评价此服务器

证据

最近观测

已验证未记录版本21 个工具
已验证未记录版本21 个工具
已验证未记录版本21 个工具