By p18a
Search Finnish grocery and alcohol products across K-Ruoka, S-Kaupat, and Alko via MCP
Unofficial MCP server for searching Finnish grocery and alcohol products across K-Ruoka, S-Kaupat, and Alko.
storeId required for K-Ruoka/S-Kaupat, optional for Alko (national catalog).Requires Bun installed.
/plugin marketplace add p18a/mcp-ruoka
/plugin install ruoka@ruoka
Dependencies and Playwright browser are installed automatically on first load.
# Clone and enter the repo
git clone https://github.com/p18a/mcp-ruoka.git
cd mcp-ruoka
# Create fly.toml from example (pick your own app name)
cp fly.example.toml fly.toml
fly launch --no-deploy
# Set OAuth credentials
fly secrets set \
OAUTH_CLIENT_ID=$(openssl rand -hex 32) \
OAUTH_CLIENT_SECRET=$(openssl rand -hex 32)
# Deploy
fly deploy
Note the client ID and secret — you'll need them to connect.
Runs the server as a subprocess — simplest option for local use.
git clone https://github.com/p18a/mcp-ruoka.git
cd mcp-ruoka
bun install
Then add to your MCP client config:
{
"mcpServers": {
"ruoka": {
"command": "bun",
"args": ["run", "/path/to/mcp-ruoka/src/index.ts", "--stdio"]
}
}
}
For remote deployments. Deploy first (see above), then point your MCP client at it:
{
"mcpServers": {
"ruoka": {
"type": "streamable-http",
"url": "https://<your-app>.fly.dev/mcp",
"headers": {
"Authorization": "Bearer <MCP_AUTH_TOKEN>"
}
}
}
}
For direct bearer token auth, set MCP_AUTH_TOKEN as a Fly secret and use it in the header above. For OAuth, configure OAUTH_CLIENT_ID and OAUTH_CLIENT_SECRET on both the server and your MCP client.
bun install
cp .env.example .env
bun run dev
The server runs on http://localhost:3001/mcp by default (Streamable HTTP). Pass --stdio for stdio transport.
| Variable | Description |
|---|---|
OAUTH_CLIENT_ID | OAuth client ID (required for claude.ai) |
OAUTH_CLIENT_SECRET | OAuth client secret (required for claude.ai) |
MCP_AUTH_TOKEN | Static bearer token (alternative to OAuth) |
PORT | Server port (default: 3001) |
LOG_LEVEL | pino log level (default: info) |
BROWSER_DATA_DIR | Persistent browser data directory (default: .browser-data/) |
This project is unofficial and not affiliated with K Group, K-Ruoka, S Group, S-Kaupat, or Alko. It accesses publicly available data through their websites. Use responsibly.
Admin access level
Server config contains admin-level keywords
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub p18a/mcp-ruoka --plugin ruokaIntegration with Oda for searching products and managing your shopping cart.
LHV Bank CLI skill for Claude Code. Authenticate with Smart-ID, view accounts and transactions, switch between personal and business profiles, and make SEPA payments.
Community-contributed AI skills for New Zealand public data — LINZ, Stats NZ, Auckland Transport, GeoNet, weather, fuel prices, electricity, retail pricing, transport, and more. Drop-in read-only connectors to real NZ infrastructure and datasets.
Travel search powered by Fliggy — search flights, hotels, attractions, concerts, and more with natural language
Memory compression system for Claude Code - persist context across sessions
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.