Opplevagent Mcp

io.github.slookisenPublished by GitHub account slookisenv0.4.0Updated Oct 24, 2026

Norwegian experiences marketplace MCP: activities by county, category, weather, season, group size.

VerifiedStreamable HTTPWeb executableLocation & LifestyleBusiness & Commerce

Overview

AI-generated overview

Searches a curated Norwegian experiences marketplace and submits pending farm-sale booking requests on opplevagent.no.

What you can do
  • Search and filter experiences by county, category, weather, season, indoor/outdoor, group size, age, price and duration
  • List experience categories with counts of verified experiences
  • Fetch full details for one experience by its UUID
  • Search gårdssalg farm-sale drink producers by county, municipality, producer type, distance or name
  • Submit a pending booking request to a producer, with weekday and outside-hours checks
When to use it
Useful when planning trips or activities in Norway and you want an assistant to find suitable experiences by weather, season, group size or budget, or to send a visit request to a farm-sale producer. Not a general travel booking tool: it only covers the opplevagent.no catalog.
Requirements
Either the remote Streamable HTTP endpoint at opplevagent.no/mcp, or the npm package opplevagent-mcp run locally with npx (Node.js). No account or API key; the optional OPPLEVAGENT_URL variable overrides the remote base URL. Network access to the remote host is required, and remote rate limits apply.
Before you install
book_gardssalg sends the guest's name and e-mail address to opplevagent.no and creates a pending request, never a confirmed booking; get the guest's explicit consent and real details first. The bridge reports client name/version and a User-Agent, and the server logs IP and request metadata. Tool definitions are fetched from the remote at startup and not pinned, and OPPLEVAGENT_URL redirects all tool arguments to whatever host it names, so only set it from trusted configuration.

Installation

In SourceWeft

  1. Open Opplevagent Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.slookisen%2Fopplevagent-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "opplevagent": {
      "type": "http",
      "url": "https://opplevagent.no/mcp"
    }
  }
}

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

bash
npx opplevagent-mcp

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

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 personeropplevelser som passer i regnvær i Bergenhvalsafari Tromsøfamilievennlige aktiviteter under 500 krhvilke 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

Source: mcp-server-opplevagent/README.md at commit 004a2fb

Tools

5

discover_experiences

Discover Norwegian experiences

Search the opplevagent.no curated marketplace of Norwegian experiences and activities. Filtrer på fylke (county), kategori, vær, sesong, innendørs/utendørs, gruppestørrelse, pris og varighet. / Filter by county, category, weather, season, indoor/outdoor, group size, price, and duration. Also supports near-me search via lat/lng (+ optional radius_km): when given, results include a rounded distance_km and a geo_precision flag ('address' = exact, 'kommune' = approximate municipality centroid) and are sorted nearest-first. Returns title, category, location (fylke/kommune), description, and booking URL if available. Only verified experiences from active providers (Brreg-checked) are returned. Covers Norway only: pass the user's request in `query`; for a place outside Norway (e.g. Kenya) the tool returns no experiences, and the answer is that Opplevagent only covers Norway. Food-product shopping such as buying stockfish is outside this tool's scope. Pass that intent in query; an out_of_scope response must not be retried as a general discovery search. Examples: 'hva kan vi finne på i Troms om vinteren?' (fylke='Troms', season='winter'), 'wildlife experiences' (category='dyreliv_safari'), 'outdoor activities in Oslo for 4 people', 'experiences within 50km of lat 69.65 / lng 18.95'.

Parametersagelatlngsortfylkelimitqueryseasonkommuneweathercategorylanguage+5 more

list_experience_categories

List Norwegian experience categories

List all experience categories available on opplevagent.no, along with the number of verified experiences in each category. Henter alle kategorier med antall verifiserte opplevelser. Use this to understand what kinds of experiences are available before calling discover_experiences with a specific category filter. Example question: 'hvilke typer opplevelser finnes i Norge?', 'what categories are available?'.

Takes no parameters.

get_experience

Get full details for a Norwegian experience

Fetch complete details for a single experience from opplevagent.no by its UUID. Henter fullstendig informasjon om en opplevelse via UUID. Returns title, full description, category, location (fylke/kommune/meeting point), indoor/outdoor, season, weather suitability, group size limits, age suitability, price, duration, languages, booking URL, and booking type. Obtain the UUID from discover_experiences results. Example: id 'a1b2c3d4-e5f6-7890-abcd-ef1234567890'.

Parametersidrequired

discover_gardssalg

Discover Norwegian farm-sale drink producers (gårdssalg)

Search opplevagent.no's gårdssalg (farm-sale) vertical — Brreg-registered Norwegian drink producers (bryggeri/cideri/vingård/destilleri/gårdskafé/mjød/seltzeri) selling directly from the farm. Finn norske gårdssalg-produsenter (drikkeprodusenter som selger direkte fra gården) etter fylke, kommune og produsenttype. / Filter by county (fylke), municipality (kommune), and producer type. Also supports near-me search via lat/lng (+ optional radius_km): when given, results include a rounded distance_km and are sorted nearest-first, and rows with no geocoded location are excluded (never a fabricated distance). Returns id (the provider_id for book_gardssalg), name, location, producer type, profile_url, and an honest booking status (live direct booking vs. a dark-launch 'coming soon' note — never overclaims booking availability). Include each returned producer's profile_url as a clickable link when available; when booking is paused, tell the user to contact the producer via that profile page. To look up ONE specific producer by name (e.g. when the guest says 'book hos Fjordgard Bryggeri'), pass `query`. Examples: 'gårdssalg i Vestland', 'cideri near lat 60.4 / lng 5.3', 'bryggeri med booking', query: 'Fjordgard Bryggeri'.

Parameterslatlngfylkelimitquerykommuneradius_kmbooking_liveproducer_type

book_gardssalg

Request a gårdssalg booking (pending — email confirmation required)

Submit a booking REQUEST for a Norwegian gårdssalg (farm-sale) producer discovered via discover_gardssalg. Send inn en reservasjonsforespørsel for et gårdssalg-besøk. IMPORTANT: this NEVER creates a confirmed booking — it creates a PENDING request, exactly like the producer's own website form. The PRODUCER reviews the request and responds (confirms, proposes another time, or declines); guest_email only receives a read-only status link, never anything that can finalize the booking. No payment is involved (pickup/visit, pay on arrival, as today). Only producers with an active booking status (see discover_gardssalg's booking.live field) can be booked — a paused/not-yet-onboarded producer is rejected with a clear message, never a silent failure. VIKTIG: oppretter ALDRI en bekreftet booking — kun en avventende forespørsel; produsenten mottar forespørselen og svarer (bekrefter, foreslår nytt tidspunkt eller avslår). ONE-SENTENCE FLOW («book et møte hos X fredag 20. oktober kl. 10 for 4 personer»): call this ONCE with provider_query='X' (the producer's name — no discover_gardssalg round-trip needed), slot_at, party_size, guest_name, guest_email and requested_weekday='fredag'. The tool resolves X to exactly one producer (or returns candidates / not-found with NO booking created), checks that the date really is a Friday (or returns weekday_mismatch:true with the nearest Fridays, NO booking created), then submits the request and notifies the producer by email. guest_name and guest_email are the HUMAN guest's own — ask the guest for them if you do not have them; never invent or reuse someone else's. Required: provider_id OR provider_query, slot_at (requested date/time, 'YYYY-MM-DDTHH:MM' Europe/Oslo), party_size, guest_name, guest_email. Optional: requested_weekday, experience_id, guest_phone, notes, confirm_outside_hours. The requested slot_at is ALWAYS hard-rejected if it's in the past or too far ahead. If the producer has stated opening hours and slot_at falls outside them,

Parametersnotesslot_atrequiredguest_namerequiredparty_sizerequiredguest_emailrequiredguest_phoneprovider_idexperience_idprovider_queryrequested_weekdayconfirm_outside_hours

Version history

2
  1. v0.4.0LatestOct 19, 2026
  2. v0.2.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts