openvan-travel

Vanlife & RV data: fuel, tolls, visas, weather, currency, events, news, license plates. openvan.camp

Should I use this

Quality & Safety

A
Description quality
99%
Schema completeness
96%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,999Tokens (tool definitions)
~1.3 KBTypical response size
Significant attention impact (3.12% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "openvan-travel": {
      "url": "https://mcp.openvan.camp/mcp"
    }
  }
}

Remote endpoints

https://mcp.openvan.camp/mcpstreamable-http

What it can do

Tool inventory

Tools (20)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_fuel_prices(country_code)

Current retail fuel prices for all API-supported countries. Supports the same price keys as /api/fuel/prices, including gasoline, diesel, LPG, CNG, E85, kerosene and grade variants. Pass country_code to get one country in detail; omit it for a summary list.

Input Schema

{
  "type": "object",
  "properties": {
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. DE. If omitted, returns all countries."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_fuel_prices(country_codes, fuel_type)

Compare current prices for one fuel type across 2-10 countries. Returns sorted table cheapest-first.

Input Schema

{
  "type": "object",
  "properties": {
    "country_codes": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 2,
        "maxLength": 2
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "Array of 2-10 ISO 3166-1 alpha-2 country codes to compare."
    },
    "fuel_type": {
      "type": "string",
      "enum": [
        "gasoline_regular",
        "gasoline",
        "gasoline_premium",
        "gasoline_super",
        "diesel_regular",
        "diesel",
        "diesel_premium",
        "lpg",
        "cng",
        "e85",
        "kerosene",
        "premium"
      ],
      "default": "diesel",
      "description": "Fuel type to compare. Uses the same keys as /api/fuel/prices prices."
    }
  },
  "required": [
    "country_codes"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢find_cheapest_fuel(region, fuel_type, limit)

Find the cheapest countries for a given fuel type in a region (or worldwide). Useful for route planning.

Input Schema

{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "enum": [
        "europe",
        "asia",
        "africa",
        "north_america",
        "south_america",
        "oceania",
        "world"
      ],
      "default": "world",
      "description": "Region to search. Default: world (all countries)."
    },
    "fuel_type": {
      "type": "string",
      "enum": [
        "gasoline_regular",
        "gasoline",
        "gasoline_premium",
        "gasoline_super",
        "diesel_regular",
        "diesel",
        "diesel_premium",
        "lpg",
        "cng",
        "e85",
        "kerosene",
        "premium"
      ],
      "default": "diesel",
      "description": "Fuel type. Uses the same keys as /api/fuel/prices prices."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 5,
      "description": "How many cheapest countries to return."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_vansky_weather(country_code)

Get VanSky vanlife weather suitability score (0-100) for a country: van_score, sleep_score, solar yield, driving conditions, awning safety, condensation risk, 7-day forecast.

Input Schema

{
  "type": "object",
  "properties": {
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. DE."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_vansky_top(limit)

List the top N countries with the highest VanSky van-travel suitability score today.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10,
      "description": "How many top-scoring countries to return."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_events(status, type, country, search, locale, ...)

List vanlife events: expos (Caravan Salon), festivals, meetups, forums, road trips. Filter by status, type, country, or free-text search.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "upcoming",
        "ongoing",
        "past",
        "all"
      ],
      "default": "upcoming",
      "description": "Event time status."
    },
    "type": {
      "type": "string",
      "enum": [
        "expo",
        "festival",
        "forum",
        "meetup",
        "roadtrip"
      ],
      "description": "Event type filter."
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code."
    },
    "search": {
      "type": "string",
      "description": "Free-text search in event name."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "default": "en",
      "description": "Language for localized fields."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 15
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_event(slug, locale)

Get full details for a single vanlife event by its slug.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Event slug, e.g. caravan-salon-duesseldorf-2026."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "default": "en"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_stories(search, category, country, locale, limit)

Search aggregated vanlife news stories (7 languages, 400+ sources). Filter by search query, category, country, locale.

Input Schema

{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "description": "Full-text search in story title."
    },
    "category": {
      "type": "string",
      "description": "Category slug, e.g. camping, travel, gear, festival, industry."
    },
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "fr",
        "es",
        "pt",
        "tr"
      ],
      "default": "en"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢compare_vanbasket(from, to)

Compare food price index between two countries (world average = 100). Higher number = more expensive food.

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Home country ISO alpha-2 code."
    },
    "to": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "Destination country ISO alpha-2 code."
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_vanbasket(country_code)

Get VanBasket food price index details for one country.

Input Schema

{
  "type": "object",
  "properties": {
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_currency_rate(from, to, amount)

Convert an amount between two currencies using live rates (150+ currencies, daily updates).

Input Schema

{
  "type": "object",
  "properties": {
    "from": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Source currency ISO 4217 code, e.g. EUR."
    },
    "to": {
      "type": "string",
      "minLength": 3,
      "maxLength": 3,
      "description": "Target currency ISO 4217 code, e.g. USD."
    },
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "default": 1,
      "description": "Amount to convert. Default 1."
    }
  },
  "required": [
    "from",
    "to"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_visa_rules(passport, destination, weight, plate)

Entry rules for one passport and destination: entry mode, allowed length of stay, how the days are counted (per entry or in a rolling window), whether a visa run resets the counter, and temporary vehicle import. Answers carry a confidence level and source — pass those on instead of stating a rule as certain.

Input Schema

{
  "type": "object",
  "properties": {
    "passport": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 code of the passport, e.g. RU."
    },
    "destination": {
      "type": "string",
      "description": "Destination: ISO alpha-2 code, slug or zone code, e.g. TR."
    },
    "weight": {
      "type": "string",
      "enum": [
        "le35",
        "gt35"
      ],
      "description": "Vehicle weight class for the vehicle rule: le35 (<=3.5 t) or gt35."
    },
    "plate": {
      "type": "string",
      "enum": [
        "eu",
        "non_eu",
        "eaeu",
        "third"
      ],
      "description": "Plate origin for the green card rule."
    }
  },
  "required": [
    "passport",
    "destination"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_route_visa_rules(countries, passports, weight)

Visa rules for every country of a route in one call, for up to 10 passports at once, plus the tightest leg of the route.

Input Schema

{
  "type": "object",
  "properties": {
    "countries": {
      "type": "string",
      "description": "Countries in travel order, comma separated ISO alpha-2 codes or slugs, up to 12, e.g. RU,GE,TR."
    },
    "passports": {
      "type": "string",
      "description": "Passports to answer for, comma separated, up to 10, e.g. RU,BY."
    },
    "weight": {
      "type": "string",
      "enum": [
        "le35",
        "gt35"
      ],
      "description": "Vehicle weight class for the vehicle rules."
    }
  },
  "required": [
    "countries"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_vehicle_import_rules(country)

Temporary admission rules for a foreign-plated vehicle in one country: allowed days, per entry or per window, carnet requirement, green card. A country without a rule we can stand behind returns nothing rather than a guess.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "description": "Country: ISO alpha-2 code, slug or zone code, e.g. georgia or GE."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_toll_rates(country_code, locale)

Toll reference for one country: payment system, per-km rates by vehicle class (car, campervan up to 3.5 t, over 3.5 t), vignette prices for every duration, concession sections and toll bridges/tunnels, each with verification date and source.

Input Schema

{
  "type": "object",
  "properties": {
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. FR."
    },
    "locale": {
      "type": "string",
      "description": "Language of names: en, ru, de, fr, es, pt, tr."
    }
  },
  "required": [
    "country_code"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢estimate_route_tolls(waypoints, vehicle_class, locale)

Estimate toll cost for a road trip from 2-10 place names: per-km tolls, vignettes, bridges and tunnels, as a EUR range with a per-country breakdown. Flags partial results when a country on the route has no data.

Input Schema

{
  "type": "object",
  "properties": {
    "waypoints": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 120
      },
      "minItems": 2,
      "maxItems": 10,
      "description": "2-10 place names in travel order: cities, addresses or countries (a country means its capital), e.g. [\"Rome\", \"Paris\"]."
    },
    "vehicle_class": {
      "type": "string",
      "enum": [
        "car",
        "van",
        "heavy"
      ],
      "default": "van",
      "description": "car; van = campervan/motorhome up to 3.5 t (default); heavy = over 3.5 t."
    },
    "locale": {
      "type": "string",
      "description": "Language of bridge/section names: en, ru, de, fr, es, pt, tr."
    }
  },
  "required": [
    "waypoints"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_license_plate_countries(locale)

Countries whose license plates are available: international code, number of regions and an example plate.

Input Schema

{
  "type": "object",
  "properties": {
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "es",
        "fr",
        "pt",
        "tr"
      ],
      "description": "Language of country and region names. Default en."
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_license_plate_country(country, locale)

How a country's license plate looks and reads (standard, size, format) and every region code on its plates, grouped by region — e.g. which region is 77 or 199 on Russian plates.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. RU."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "es",
        "fr",
        "pt",
        "tr"
      ],
      "description": "Language of country and region names. Default en."
    }
  },
  "required": [
    "country"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_license_plate(country, number, region, locale)

Validate a plate number against the country's format (look-alike letters are normalized) and say which region its code belongs to. Never identifies the owner or the vehicle's location.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. RU."
    },
    "number": {
      "type": "string",
      "description": "Plate number without the region, e.g. A123BC. Look-alike Latin letters are normalized."
    },
    "region": {
      "type": "string",
      "description": "Region code if the country shows one, e.g. 77."
    },
    "locale": {
      "type": "string",
      "enum": [
        "en",
        "ru",
        "de",
        "es",
        "fr",
        "pt",
        "tr"
      ],
      "description": "Language of country and region names. Default en."
    }
  },
  "required": [
    "country",
    "number"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_license_plate_image(country, number, region, custom)

Draw a license plate as an image (PNG shown inline, plus SVG/PNG links) exactly as openvan.camp renders it. custom=true draws any text, e.g. a name, in the plate layout.

Input Schema

{
  "type": "object",
  "properties": {
    "country": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code, e.g. RU."
    },
    "number": {
      "type": "string",
      "description": "Plate number without the region, or any text with custom=true."
    },
    "region": {
      "type": "string",
      "description": "Region code if the country shows one."
    },
    "custom": {
      "type": "boolean",
      "description": "Draw any text (e.g. a name) in the plate layout instead of requiring a real format."
    }
  },
  "required": [
    "country",
    "number"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded20 tools
verifiedversion not recorded14 tools
verifiedversion not recorded14 tools