OpenVan MCP Server

OpenVan MCP Server

OpenVan MCP Server exposes OpenVan.camp public APIs over the Model Context Protocol: fuel prices across 125+ countries, VanSky weather suitability scores (0–100), VanBasket food price index, currency exchange rates, vanlife events (expos, festivals, meetups) and aggregated news stories in 7 languages. 11 read-only tools, no authentication, 120 req/min rate limit, CC BY 4.0 license. Remote Streamab

Category
访问服务器

README

OpenVan.camp Public API

Free, no-auth API for vanlife data: fuel prices, currency rates, food cost index, vanlife events, and news stories — all in one place, no registration required.

Base URL: https://openvan.camp
Auth: None required
CORS: Enabled
License: CC BY 4.0

MCP Server (for AI agents): mcp-server/ — hosted at https://mcp.openvan.camp/mcp, also npx -y mcp-remote https://mcp.openvan.camp/mcp for Claude Desktop / Cursor / Windsurf. Install docs →

Custom GPT: OpenVan Travel Assistant — live in ChatGPT GPT Store.


What is authoritative

Resource Purpose
This README Quick overview and code examples
/docs Interactive documentation with "Try it out"
/docs.openapi Full OpenAPI 3.0 contract (always up to date)
/docs.postman Postman collection

The OpenAPI spec at /docs.openapi is generated from the live codebase and is the authoritative contract. Numbers in this README (country counts, story totals) are approximate and updated periodically — check /api/fuel/prices meta or /api/stories pagination for current totals.


Endpoints

Endpoint Description Coverage
GET /api/fuel/prices Retail fuel prices (gasoline, diesel, LPG, E85) 120+ countries
GET /api/currency/rates Exchange rates relative to EUR 150+ currencies
GET /api/vanbasket/countries Food price index relative to world average (100 = world avg) 90+ countries
GET /api/vanbasket/compare?from=DE&to=TR Compare food costs between two countries
GET /api/vanbasket/countries/{code} Single country + historical snapshots
GET /api/events Vanlife events: expos, festivals, meetups, road trips 695 events
GET /api/event/{slug} Full event details with geo coordinates
GET /api/event/{slug}/articles Source articles linked to an event
GET /api/stories News stories aggregated from 200+ publishers 8200+ stories
GET /api/story/{slug} Full story with all source articles and direct links

Quick Start

# Fuel prices
curl https://openvan.camp/api/fuel/prices

# Currency rates (EUR-based)
curl https://openvan.camp/api/currency/rates

# Food price index
curl https://openvan.camp/api/vanbasket/countries

# Upcoming vanlife events in Germany
curl "https://openvan.camp/api/events?country=DE&status=upcoming&locale=en"

# Latest vanlife news stories in English
curl "https://openvan.camp/api/stories?locale=en"

Fuel Prices — /api/fuel/prices

Weekly retail prices from 45+ official government sources.
Cache TTL: 6 hours. Please poll no faster than every 10 minutes.

curl https://openvan.camp/api/fuel/prices
{
  "success": true,
  "data": {
    "DE": {
      "country_code": "DE",
      "country_name": "Germany",
      "region": "europe",
      "currency": "EUR",
      "local_currency": "EUR",
      "unit": "liter",
      "prices": {
        "gasoline": 1.79,
        "diesel": 1.69,
        "lpg": 0.89,
        "e85": null,
        "premium": null
      },
      "price_changes": { "gasoline": -0.02, "diesel": 0.01, "lpg": 0.0 },
      "fetched_at": "2026-04-05T10:00:00+00:00",
      "sources": ["EU Weekly Oil Bulletin", "Fuelo.net"],
      "sources_count": 2,
      "is_excluded": false
    }
  },
  "meta": {
    "total_countries": 121,
    "updated_at": "2026-04-05 10:00:00",
    "cache_ttl_hours": 6
  }
}

Notes:

  • unit is "liter" for most countries, "gallon" for US and Ecuador
  • is_excluded: true means the country has heavy fuel subsidies (prices don't reflect market rates)
  • price_changes = delta vs last week's prices

Currency Rates — /api/currency/rates

EUR-based exchange rates from multiple open-source providers with automatic fallback.
Cache TTL: 25 hours. Refreshed daily at 07:00 UTC.

curl https://openvan.camp/api/currency/rates
{
  "success": true,
  "rates": {
    "EUR": 1,
    "USD": 1.08,
    "GBP": 0.85,
    "TRY": 38.5,
    "GEL": 2.95,
    "KZT": 510,
    "RUB": 98.5
  },
  "cached": true,
  "updated_at": "2026-04-08T07:00:00+00:00"
}

Convert to any currency:

const priceInUSD = (priceEUR / rates.EUR) * rates.USD;
const priceInTRY = (priceEUR / rates.EUR) * rates.TRY;

VanBasket Food Price Index — /api/vanbasket/*

Relative cost of a food basket compared to world average (World = 100).
Based on World Bank ICP 2021 data, adjusted with IMF CPI.
Data source: CC BY 4.0

# All countries
curl https://openvan.camp/api/vanbasket/countries

# Compare two countries
curl "https://openvan.camp/api/vanbasket/compare?from=DE&to=TR"

# Single country with historical snapshots
curl https://openvan.camp/api/vanbasket/countries/DE
{
  "success": true,
  "data": {
    "CH": { "country_code": "CH", "country_name": "Switzerland", "vanbasket_index": 162.3, "pct_vs_world": 62.3 },
    "DE": { "country_code": "DE", "country_name": "Germany",     "vanbasket_index": 118.7, "pct_vs_world": 18.7 },
    "TR": { "country_code": "TR", "country_name": "Turkey",      "vanbasket_index":  82.4, "pct_vs_world": -17.6 },
    "GE": { "country_code": "GE", "country_name": "Georgia",     "vanbasket_index":  64.1, "pct_vs_world": -35.9 }
  },
  "meta": {
    "total_countries": 92,
    "world_avg": 100,
    "base_year": 2021,
    "source": "World Bank ICP 2021",
    "license": "CC BY 4.0"
  }
}

Compare response:

{
  "success": true,
  "data": {
    "from": { "country_code": "DE", "country_name": "Germany", "vanbasket_index": 118.7 },
    "to":   { "country_code": "TR", "country_name": "Turkey",  "vanbasket_index":  82.4 },
    "diff_percent": -30.6,
    "budget_100": 69,
    "cheaper": true
  }
}

budget_100: if you spend €100 on food in the from country, you'd spend €69 in the to country.


Events — /api/events

Vanlife events: exhibitions, festivals, meetups, road trips. Updated in real time.

Query params:

Param Values Default
locale en ru de fr es pt tr en
status upcoming ongoing past all upcoming
type expo festival forum meetup roadtrip
country ISO 3166-1 alpha-2
search text
page integer 1
limit integer (max 100) 30
# Upcoming events in Germany
curl "https://openvan.camp/api/events?country=DE&status=upcoming&locale=en"

# Event details
curl "https://openvan.camp/api/event/fit-camper-2026?locale=en"

# Source articles linked to an event
curl "https://openvan.camp/api/event/fit-camper-2026/articles?locale=en"
{
  "events": [
    {
      "id": 493,
      "slug": "fit-camper-2026",
      "event_name": "Fit Your Camper",
      "event_type": "expo",
      "event_type_label": "Exhibition",
      "start_date": "2026-04-09",
      "end_date": "2026-04-12",
      "city": "Bologna",
      "country_code": "IT",
      "country": { "code": "it", "name": "Italy", "flag_emoji": "🇮🇹" },
      "venue_name": "BolognaFiere",
      "status": "upcoming",
      "articles_count": 7,
      "url": "https://openvan.camp/en/event/fit-camper-2026"
    }
  ],
  "pagination": { "total": 48, "page": 1, "limit": 30, "pages": 2 }
}

Notes:

  • Unknown or missing locale silently falls back to en
  • /api/event/{slug}/articles returns source articles filtered by locale; if none match, all articles are returned (may be in the original publisher language)

Stories / News — /api/stories

Vanlife news stories aggregated from 200+ publishers and translated into 7 languages. Each story clusters multiple source articles covering the same topic.

Query params:

Param Values Default
locale en ru de fr es pt tr en
category category slug (e.g. camping, travel, gear, incident)
country ISO 3166-1 alpha-2
search text
page integer 1
limit integer (max 50) 20
# Latest stories in English
curl "https://openvan.camp/api/stories?locale=en"

# German vanlife news in Germany
curl "https://openvan.camp/api/stories?locale=de&country=DE"

# Full story with all source links
curl "https://openvan.camp/api/story/free-overnight-parking-netherlands?locale=en"
{
  "slug": "free-overnight-parking-netherlands",
  "title": "Free Overnight Parking for Motorhomes in the Netherlands",
  "summary": "The Dutch motorhome community is pushing for more designated free overnight spots...",
  "image_url": "https://...",
  "category": { "slug": "travel", "name": "Travel" },
  "countries": [{ "code": "nl", "name": "Netherlands", "flag_emoji": "🇳🇱" }],
  "first_published_at": "2026-04-01T10:00:00+00:00",
  "last_updated_at": "2026-04-03T08:00:00+00:00",
  "articles_count": 5,
  "url": "https://openvan.camp/en/news/travel/free-overnight-parking-netherlands",
  "sources": [
    {
      "title": "Gratis overnachten in je camper: de beste plekken",
      "original_url": "https://www.campermagazine.nl/overnachten/gratis-plaatsen",
      "source_name": "CamperMagazine.nl",
      "published_at": "2026-04-01T10:00:00+00:00",
      "language": "nl",
      "image_url": "https://..."
    }
  ]
}

Notes:

  • title and summary are translated to the requested locale
  • sources[].language is always the original publisher language, regardless of locale
  • sources[].original_url is the direct link to the publisher article

Response Format

All JSON endpoints follow a consistent envelope:

{ "success": true, "data": { ... }, "meta": { ... }, "_attribution": { ... } }

Every response includes an _attribution object:

"_attribution": {
  "data_source": "openvan.camp",
  "license": "CC BY 4.0",
  "attribution_url": "https://openvan.camp/",
  "attribution_html": "Data: <a href=\"https://openvan.camp/\">OpenVan.camp</a> (CC BY 4.0)"
}

Errors:

{ "success": false, "error": "Description of the error." }

If you call without Accept: application/json, some error responses may return HTML. Always send the header:

Accept: application/json

Rate Limiting

120 requests per minute per IP. Please be responsible:

  • Cache fuel prices for at least 6 hours
  • Cache currency rates for at least 1 hour
  • Cache stories/events for at least 15 minutes

Attribution

Required by CC BY 4.0. Suggested format:

Data: <a href="https://openvan.camp/">OpenVan.camp</a> — CC BY 4.0

Identify your integration

Pass ?source=yoursite.com with any request — no registration needed. Your value is echoed back as _attribution.your_source so you can verify it's working:

curl "https://openvan.camp/api/fuel/prices?source=myapp.com"
{
  "success": true,
  "data": { "..." },
  "meta": { "..." },
  "_attribution": {
    "data_source": "openvan.camp",
    "license": "CC BY 4.0",
    "attribution_url": "https://openvan.camp/",
    "attribution_html": "Data: <a href=\"https://openvan.camp/\">OpenVan.camp</a> (CC BY 4.0)",
    "your_source": "myapp.com"
  }
}

This helps us understand how the data is being used and acknowledge active projects.


Resources

  • Interactive docs: https://openvan.camp/docs
  • OpenAPI 3.0 spec: https://openvan.camp/docs.openapi
  • Postman collection: https://openvan.camp/docs.postman
  • Developer page: https://openvan.camp/en/developers

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选