Back to Browse

Lokal MCP Server

Developer ToolsLow Risk8.5Local
Free

Norwegian local-food MCP: 1,431+ farms, shops, markets + umbrellas (Bondens marked, Hanen, REKO).

About

Norwegian local-food MCP: 1,431+ farms, shops, markets + umbrellas (Bondens marked, Hanen, REKO).

Security Report

8.5
Low Risk8.5Low Risk

Valid MCP server (3 strong, 4 medium validity signals). 3 known CVEs in dependencies ⚠️ Package registry links to a different repository than scanned source. Imported from the Official MCP Registry. 1 finding(s) downgraded by scanner intelligence.

7 files analyzed · 4 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

env_vars

Check that this permission is expected for this type of plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-slookisen-lokal-mcp": {
      "args": [
        "-y",
        "lokal-mcp"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

🥬 Rett fra Bonden — Local Food Agent Network for Norway

Live: https://rettfrabonden.com | MCP Server: https://rettfrabonden.com/mcp | API Spec: https://rettfrabonden.com/openapi.yaml

Rett fra Bonden is the discovery layer for local food in Norway. 1,371+ producers — farms, farm shops, REKO rings, farmers markets, and cooperatives — discoverable by AI agents and humans alike.

Not an app. Not a webshop. Infrastructure — the DNS for food agents.

Use Rett fra Bonden

From Claude (remote MCP via Claude Connectors)

The recommended setup for Claude.ai users: connect the remote MCP server directly, no local install required.

  • MCP Server URL: https://rettfrabonden.com/mcp
  • Transport: Streamable HTTP (MCP protocol 2025-06-18)
  • Authentication: None required — the server is publicly accessible

Once connected, ask Claude things like:

  • "Finn økologiske grønnsaker nær Oslo som leverer hjem"
  • "Which dairy farms in Rogaland sell raw milk directly to consumers?"
  • "Compare three honey producers in Innlandet — who ships nationwide?"

From Claude Desktop (MCP stdio)

If you prefer a local install over remote:

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

From ChatGPT (Developer Mode / Custom GPT)

Developer Mode: Add https://rettfrabonden.com/mcp as the MCP server URL.

Custom GPT: Create a GPT with Actions pointing to https://rettfrabonden.com/openapi.yaml. Instructions in custom-gpt-instructions.md.

From your own agent (A2A / REST)

# Natural language search
curl "https://rettfrabonden.com/api/marketplace/search?q=organic+vegetables+near+Oslo"

# Structured discovery
curl -X POST https://rettfrabonden.com/api/marketplace/discover \
  -H "Content-Type: application/json" \
  -d '{"categories":["vegetables"],"tags":["organic"],"lat":59.91,"lng":10.75,"maxDistanceKm":30}'

# A2A JSON-RPC
curl -X POST https://rettfrabonden.com/a2a \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"message/send","params":{"message":{"role":"user","parts":[{"type":"text","text":"Find cheese near Bergen"}]}},"id":"1"}'

MCP Tools & Resources

The remote MCP endpoint at /mcp exposes four tools and two resources.

ToolPurposeRead/Write
lokal_searchNatural-language producer search (NO/EN). Auto-starts a conversation with top matches so sellers can respond.Read + Write
lokal_discoverStructured filter — categories, tags, geo-radius. Auto-starts conversations.Read + Write
lokal_infoFull producer profile — address, products, opening hours, certifications.Read only
lokal_statsPlatform-level metrics — total agents, cities covered.Read only
Resource URIMimeDescription
lokal://producers/overviewtext/plainAggregate view of producers by city
lokal://producers/{agentId}application/jsonDetailed info about a specific producer

HTTP API

EndpointMethodDescription
/mcpPOST/GET/DELETEMCP Streamable HTTP (remote MCP transport)
/api/marketplace/search?q=...GETNatural language search (NO/EN)
/api/marketplace/discoverPOSTStructured filtering
/api/marketplace/agents/:id/infoGETProducer details
/api/statsGETPlatform statistics
/a2aPOSTA2A JSON-RPC 2.0
/.well-known/agent-card.jsonGETA2A Agent Card
/.well-known/mcp/server-card.jsonGETMCP Server Card (human + machine-readable metadata)
/openapi.yamlGETOpenAPI 3.1 spec
/llms.txtGETAI-discovery index
/privacyGETPrivacy policy (NO/EN)

Full spec: https://rettfrabonden.com/openapi.yaml

Architecture

  • TypeScript + Express on Fly.io
  • SQLite with WAL mode, persistent volume
  • MCP 2025-06-18 over Streamable HTTP + stdio (remote + local)
  • A2A v1.0.0 compliant (JSON-RPC 2.0 + Agent Card)
  • Value-based matching — no ads, no pay-to-rank
  • 1,386+ agents across 374+ Norwegian cities

For producers

Your farm/market might already be listed. Visit https://rettfrabonden.com to check, and claim your agent to update your info and respond to buyer queries.

Troubleshooting

"The connector can't reach the server" Check that your client is pointed at https://rettfrabonden.com/mcp (HTTPS, no trailing slash). The server uses the Streamable HTTP transport — stdio clients should use the lokal-mcp npm package instead.

"CORS error in the browser" Browser-based MCP clients must send an Origin header. The server allow-lists https://claude.ai, https://www.claude.ai, https://chatgpt.com, and https://chat.openai.com. If you're hosting your own agent on a different origin, open an issue and we'll add it.

"tools/list returns an empty array" Hit POST /mcp with a proper initialize request first and capture the Mcp-Session-Id response header. Subsequent calls must include that header — session IDs are sticky per connection.

"Search returns no results for a Norwegian query" The server handles both NO and EN, but accents matter. Use økologisk rather than okologisk for best relevance. Try widening with lokal_discover — it accepts lat/lng + radius instead of free text.

"I claimed my agent but the dashboard is empty" Claims are verified by email. Check spam for the verification code from kontakt@rettfrabonden.com. The token is valid for 24 hours.

Rate limits Public endpoints allow 150 searches and 300 general API calls per 15-minute window. MCP tools/call counts against the search bucket. If your agent hits the limit, back off for 15 minutes — we don't block IPs, only throttle.

Still stuck Open an issue at https://github.com/slookisen/lokal/issues with the request payload (redact anything sensitive) and the response status code.

Privacy, Terms & Support

License

MIT

Reviews

No reviews yet

Be the first to review this server!