{
  "markdown": "<h1>\n  <p align=\"center\">\n    <a href=\"https://github.com/gbbirkisson/mcp-oda\">\n      <img src=\"mcp.svg\" alt=\"Logo\" height=\"128\">\n    </a>\n    <br>mcp-oda\n  </p>\n</h1>\n\n<p align=\"center\">\n  A Model Context Protocol (MCP) server for interacting with <a href=\"https://oda.com\">oda.com</a>\n</p>\n\nIf this project is just what you needed and/or has been helpful to you, please consider buying\nme a coffee ☕\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/gbbirkisson)\n\n<h2>Table of contents</h2>\n\n<!-- vim-markdown-toc GFM -->\n\n* [Features](#features)\n* [Installation](#installation)\n* [Usage](#usage)\n  * [Initial Setup](#initial-setup)\n  * [CLI Commands](#cli-commands)\n  * [Configuration](#configuration)\n    * [Claude Desktop](#claude-desktop)\n    * [Claude Code](#claude-code)\n    * [Gemini CLI](#gemini-cli)\n* [Troubleshooting](#troubleshooting)\n  * [Session not persisting](#session-not-persisting)\n\n<!-- vim-markdown-toc -->\n\n## Features\n\nThis MCP server provides tools to programmatically interact with Oda's grocery shopping platform:\n\n- **Search products** - Search for groceries with support for Norwegian terms\n- **Browse recipes** - Search, filter, and view recipe details\n- **Saved shopping lists** - View your saved lists, add or remove products, and\n  import a whole list into the cart\n- **Purchase history** - See your most frequently ordered products\n- **Manage shopping cart** - View cart contents, add/remove items, add recipe ingredients\n- **CLI access** - All operations available as CLI subcommands in addition to MCP tools\n- **Session persistence** - Maintains login session across restarts\n\n## Installation\n\nThis project requires Node.js (v18+).\n\n## Usage\n\n### Initial Setup\n\nAuthenticate with your Oda account:\n\n```bash\nread -rsp \"Oda password: \" ODA_PASSWORD; printf '\\n'\nprintf '%s' \"$ODA_PASSWORD\" | npx github:gbbirkisson/mcp-oda auth login --user your@email.com --pass-stdin\nunset ODA_PASSWORD\n```\n\nVerify your login status:\n\n```bash\nnpx github:gbbirkisson/mcp-oda auth user\n```\n\n> [!NOTE]\n> Session data is stored by default in `~/.mcp-oda`\n\n### CLI Commands\n\nRunning `npx github:gbbirkisson/mcp-oda` with no arguments prints help. The `mcp` subcommand\nstarts the MCP server. All other operations are available as subcommands:\n\n```bash\n# Start the MCP server\nnpx github:gbbirkisson/mcp-oda mcp\n\n# Products\nnpx github:gbbirkisson/mcp-oda product search melk\nnpx github:gbbirkisson/mcp-oda product search melk --page 2\nnpx github:gbbirkisson/mcp-oda product add 132\n\n# Saved shopping lists\nnpx github:gbbirkisson/mcp-oda saved-list list\nnpx github:gbbirkisson/mcp-oda saved-list details 123\n# Adds a product to a saved list; requires an explicit confirmation string\nnpx github:gbbirkisson/mcp-oda saved-list add-product 123 456 --confirmation \"UPDATE SAVED LIST\"\n# Removes a product from a saved list; requires an explicit confirmation string\nnpx github:gbbirkisson/mcp-oda saved-list remove-product 123 456 --confirmation \"UPDATE SAVED LIST\"\n# Adds every list item to the cart; requires an explicit confirmation string\nnpx github:gbbirkisson/mcp-oda saved-list add 123 --confirmation \"ADD SAVED LIST TO CART\"\n\n# Purchase history\nnpx github:gbbirkisson/mcp-oda purchases frequent\nnpx github:gbbirkisson/mcp-oda purchases frequent --limit 10 --max-orders 50\n\n# Cart\nnpx github:gbbirkisson/mcp-oda cart list\nnpx github:gbbirkisson/mcp-oda cart recommendations\nnpx github:gbbirkisson/mcp-oda cart remove 132\n# Clears the whole cart; requires an explicit confirmation string\nnpx github:gbbirkisson/mcp-oda cart clear --confirmation \"CLEAR CART\"\n\n# Recipes\nnpx github:gbbirkisson/mcp-oda recipe search pizza\nnpx github:gbbirkisson/mcp-oda recipe details 123\nnpx github:gbbirkisson/mcp-oda recipe add 123 --portions 4\nnpx github:gbbirkisson/mcp-oda recipe remove 123\n\n# Authentication\nread -rsp \"Oda password: \" ODA_PASSWORD; printf '\\n'\nprintf '%s' \"$ODA_PASSWORD\" | npx github:gbbirkisson/mcp-oda auth login --user your@email.com --pass-stdin\nunset ODA_PASSWORD\nnpx github:gbbirkisson/mcp-oda auth logout\nnpx github:gbbirkisson/mcp-oda auth user\n\n# Maintenance\nnpx github:gbbirkisson/mcp-oda clean\n```\n\n### Configuration\n\n#### Claude Desktop\nClaude Desktop configuration example:\n\n```json\n{\n  \"mcpServers\": {\n    \"oda\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"github:gbbirkisson/mcp-oda\", \"mcp\"]\n    }\n  }\n}\n```\n\n#### Claude Code\n\n```bash\n/plugin marketplace add gbbirkisson/mcp-oda\n/plugin install mcp-oda@mcp-oda\n```\n\n#### Gemini CLI\n\n```bash\ngemini extensions install https://github.com/gbbirkisson/mcp-oda\n```\n\n## Troubleshooting\n\n### Session not persisting\n\nIf your login session is not persisting between runs:\n\n1. Try running with the `clean` subcommand to remove old session data:\n   ```bash\n   npx github:gbbirkisson/mcp-oda clean\n   ```\n2. Re-authenticate:\n   ```bash\n   read -rsp \"Oda password: \" ODA_PASSWORD; printf '\\n'\n   printf '%s' \"$ODA_PASSWORD\" | npx github:gbbirkisson/mcp-oda auth login --user your@email.com --pass-stdin\n   unset ODA_PASSWORD\n   ```\n3. Make sure you're using the same `--data-dir` for all commands if you've overridden the default.\n",
  "bytes": 5177,
  "sha": "f4e75bdda5557e4970d0d8facb8b37c6bbe3780132f26f204ff64aecb2d1f4e8",
  "repo_slug": "gbbirkisson/mcp-oda",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_gbbirkisson_mcp_oda_d2e1db95/readme"
}