mcpField
O
opplevagent-mcp

opplevagent-mcp

Remote
opplevagent.noMaps & Travel2Updated today

About opplevagent-mcp

opplevagent-mcp is an MCP server for finding Norwegian experiences and activities, suited to people planning outings or trips. It searches curated, Brreg-verified listings by location and practical conditions, and can submit pending booking requests for farm-sale producers.

Key features

  1. 01Search experiences by county and category
  2. 02Filter by weather, season and indoor or outdoor
  3. 03Filter by group size, age, price and duration
  4. 04Retrieve full details for an experience
  5. 05Search farm-sale drink producers
  6. 06Submit pending producer booking requests

Use cases

  1. 01Find winter activities in Troms
  2. 02Choose outdoor activities in Oslo for a group
  3. 03Find family activities within a price limit
  4. 04Request a visit with a farm-sale producer

MCP support

Exposes experience discovery, category listing, detail lookup, producer search and booking tools to MCP clients. It bridges stdio clients to a live remote MCP service and also supports remote Streamable HTTP connections.

Configuration

Remote servers need no local install. Pick your client, then copy the config or install in one click.

Endpointhttps://opplevagent.no/mcp
Copy install command
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.

Packages
npmopplevagent-mcp0.4.0

Tools

5
ParameterTypeRequiredDescription
ageintegerNoAge of the youngest participant. Filters out experiences with a minimum-age requirement above this. Example: 8
latnumberNoOrigin latitude for a near-me search (decimal degrees). Must be given together with lng. Example: 69.65 (Tromsø)
lngnumberNoOrigin longitude for a near-me search (decimal degrees). Must be given together with lat. Example: 18.95 (Tromsø)
sortenumNo'distance' — sort results ascending by distance from lat/lng. Already the default whenever lat/lng are given; this makes the request explicit.distance
fylkestringNoNorwegian county (fylke). Examples: 'Oslo', 'Vestland', 'Troms', 'Rogaland'
limitnumberNoMax results (default 20, max 50)
querystringNoThe user's request in a few words, including any place they named — e.g. 'safari lodge in Kenya', 'northern lights in Tromsø'. Opplevagent only covers Norway: when this names a place outside Norway and no Norwegian fylke/kommune or coordinates are given, the tool returns no experiences and says so. Include the purchase intent too: buying stockfish is food retail, not an experience search.
seasonstringNoSeason filter: 'summer', 'winter', 'spring' or 'autumn' (the Norwegian words sommer/vinter/vår/høst work too). Year-round experiences are always included. Use this (not category or weather) when the user asks what to do in a season, e.g. 'Troms om vinteren' → fylke='Troms', season='winter'.
kommunestringNoNorwegian municipality (kommune). Examples: 'Tromsø', 'Bergen', 'Stavanger'
weatherenumNoToday's weather, not the season: 'rain'/'snow' prefers indoor + weather-independent experiences. Examples: 'rain', 'clear'. For 'in winter' use season instead.rain | snow | clear | any
categorystringNoExperience category slug — one of: 'kultur_historie' (culture/history, museums), 'natur_friluft' (nature/outdoors), 'adrenalin_action', 'sightseeing_transport' (sightseeing, cruises, cable cars), 'overnatting_opplevelse' (stays), 'dyreliv_safari' (wildlife, whale/moose safaris, dog sledding), 'vinter_sno' (winter & snow), 'mat_drikke' (food & drink), 'velvaere_spa' (wellness/spa). Call list_experience_categories for live counts. Omit category for a general 'what can we do' question. 'In winter' / 'om vinteren' is a season, not a category: use season='winter' — 'vinter_sno' covers only snow activities and would hide e.g. northern-lights cruises.
languagestringNoRequired language for the experience. Examples: 'no', 'en'
max_priceintegerNoMaximum price per person in Norwegian kroner (NOK). Example: 500
radius_kmnumberNoMax distance from lat/lng in kilometers. Only applies when lat/lng are given. Example: 50
group_sizeintegerNoNumber of people in the group. Used to filter experiences by min/max group capacity. Example: 4
duration_maxintegerNoMaximum duration in minutes. Example: 120 (2 hours)
indoor_outdoorenumNoIndoor/outdoor preference. Examples: 'indoor', 'outdoor', 'both'indoor | outdoor | both

Details

From the project README

opplevagent-mcp

MCP server for opplevagent.no — find Norwegian experiences and activities from Claude Desktop, ChatGPT, Cursor, and other AI assistants.

Curated, Brreg-verified experiences searchable by county, category, weather, season, group size, price, and duration.

Install

npx opplevagent-mcp

Or add to Claude Desktop config (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "opplevagent": {
      "command": "npx",
      "args": ["opplevagent-mcp"]
    }
  }
}

How it works

Since 0.4.0 the package is a thin stdio bridge to the live remote server (https://opplevagent.no/mcp). Tools, descriptions, instructions and UI resources always match the remote service, so the npm package and the remote never drift, and free-text query reaches discover_experiences unchanged. Remote rate limits apply.

Remote (Streamable HTTP)

For ChatGPT and other remote MCP clients, paste this URL directly:

https://opplevagent.no/mcp

Tools

ToolDescription
discover_experiencesSearch experiences by county (fylke), category, weather, season, indoor/outdoor, group size, age, price, duration
list_experience_categoriesList all categories with experience counts
get_experienceFull details for one experience via UUID
discover_gardssalgSearch gårdssalg (farm-sale) drink producers by county, municipality, producer type, near-me distance, booking status — or look one up by name with query. Rows carry id (the provider_id for booking)
book_gardssalgSubmit a pending booking request to a gårdssalg producer (never confirms — the producer responds). Accepts provider_query (the producer's name) instead of provider_id, plus requested_weekday as a wrong-day guard, so one sentence («book et møte hos X fredag 20. okt kl. 10») becomes one call

Examples

hva kan vi finne på i Troms om vinteren?
utendørsaktiviteter i Oslo for 4 personer
opplevelser som passer i regnvær i Bergen
hvalsafari Tromsø
familievennlige aktiviteter under 500 kr
hvilke typer opplevelser finnes i Norge?
book et besøk hos Fjordgard Bryggeri fredag 23. oktober kl. 10 for 4 personer

One-sentence booking (gårdssalg)

«Book et møte hos X fredag den 20. oktober klokken 10» is a single book_gardssalg call:

FieldValue
provider_query"X" — the producer's name as the guest said it (or provider_id from discover_gardssalg)
slot_at"2026-10-20T10:00" (Europe/Oslo)
requested_weekday"fredag" — if the 20th is not a Friday the tool answers weekday_mismatch:true with the nearest Fridays instead of booking the wrong day
party_size, guest_name, guest_emailthe human guest's own details — ask for them, never invent them

Outcomes are always honest and explicit: provider_not_found, provider_ambiguous (with candidates to put to the guest), weekday_mismatch (with suggestions), paused (the producer has not activated booking — profile link included), outside_hours (retry with confirm_outside_hours:true), or a pending request with booking_ref, the resolved provider.navn and slot_at_local. The producer is notified by email and confirms, proposes another time, or declines — the tool itself can never confirm a booking.

What the bridge sends

Besides the tool arguments of each call, the bridge identifies itself to the remote server in two ways: the MCP clientInfo (your AI client's name and version, as " via opplevagent-mcp") and a User-Agent header of the form opplevagent-mcp/<version>. This is client statistics, not an identifier of you: no account, credentials or device identifier is sent. The server keeps ordinary web-request logs (IP address and request metadata) for operations and abuse prevention.

Booking (gårdssalg)

book_gardssalg requires no login and is rate-limited on the server. The call sends the guest's name and e-mail address to opplevagent.no. The request stays pending until the producer answers; the tool never confirms a booking. Your AI client should have the guest's explicit yes before it calls the tool.

Trust boundary

The tool list, tool descriptions and server instructions are fetched from the remote server (https://opplevagent.no/mcp) over HTTPS every time the bridge starts. This package does not pin or freeze them, so what your AI client sees is whatever the remote service currently serves. OPPLEVAGENT_URL overrides the remote URL, and every tool argument you or your AI client supply is sent to that host. Only set it from a configuration you trust.

Environment

VariableDefaultDescription
OPPLEVAGENT_URLhttps://opplevagent.noOverride the remote base URL (or a full /mcp URL)

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.