Instacart MCP Server
# @striderlabs/mcp-instacart
**Order groceries via Instacart using AI agents**
[](https://www.npmjs.com/package/@striderlabs/mcp-instacart)
[](https://mcpservers.org/servers/strider-labs-instacart)
[](https://docs.anthropic.com/mcp)
[](https://opensource.org/licenses/MIT)
Part of [Strider Labs](https://github.com/striderlabsdev/striderlabs) — action execution for personal AI agents.
## Get Started in 2 Minutes
### For Claude Desktop Users
1. Add this to your Claude Desktop config:
```json
{
"mcpServers": {
"instacart": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-instacart"]
}
}
}
```
2. Restart Claude.
3. Tell Claude: *"Order my usual groceries for delivery tomorrow morning"*
Your agent can now place orders. That's it.
---
## Installation (NPM)
```bash
npm install @striderlabs/mcp-instacart
```
Or with npx directly:
```bash
npx @striderlabs/mcp-instacart
```
## Features
- 🛒 **Search for products** by name or category
- 📦 **Browse stores** and product availability
- 🏪 **Add to cart** with quantities and special requests
- 💳 **Place orders** with delivery time selection
- 📍 **Track orders** with real-time status
- 🔐 **Persistent sessions** - stay logged in across restarts
- 🔄 **Automatic MFA** - handles multi-factor authentication
- 📱 **Per-user credentials** - encrypted session storage
- ⭐ **Saved items** - order your favorites faster
## Tested & Compatible
| Component | Version | Status |
|-----------|---------|--------|
| **MCP SDK** | ^1.0.0 | ✅ |
| **Node.js** | 18+ | ✅ |
| **Claude Desktop** | Latest | ✅ |
| **Claude (API)** | claude-3.5-sonnet+ | ✅ |
| **Anthropic SDK** | ^0.20+ | ✅ |
## Metrics
- **Weekly downloads:** 271 (Apr 10-17, 2026) — Top grocery connector (+330% growth)
- **Status:** ✅ Live in production
- **Reliability:** 85%+ task completion rate
- **Discovery:** npm, mcpservers.org, ClawHub, PulseMCP, Glama, LobeHub
## Available Elsewhere
- **npm:** [npmjs.com/@striderlabs/mcp-instacart](https://npmjs.com/package/@striderlabs/mcp-instacart)
- **Claude Plugins:** Search "Strider Labs" in Claude
- **mcpservers.org:** [Strider Labs Instacart](https://mcpservers.org/servers/strider-labs-instacart)
- **Full Strider Labs:** [github.com/striderlabsdev/striderlabs](https://github.com/striderlabsdev/striderlabs)
## How It Works
### For Agents
Your agent can use these capabilities:
```javascript
// Search for products
products = search_products({
query: "organic milk",
location: "San Francisco, CA"
})
// Browse a store's offerings
store_products = get_store_products({
store_id: "whole_foods_sf",
category: "Dairy"
})
// Add to cart
add_to_cart({
product_id: "organic_milk_gallon",
quantity: 2,
special_instructions: "Cold stock, please"
})
// Place an order
order = place_order({
delivery_time: "tomorrow morning",
delivery_address: "123 Main St, San Francisco, CA",
special_instructions: "Ring the doorbell twice"
})
// Track delivery
status = track_order({ order_id: order.order_id })
```
### Session Management
- Each user has encrypted, persistent credentials
- Automatic OAuth token refresh
- MFA handling (SMS/email)
- Sessions survive agent restarts
### Reliability
- 85%+ task completion rate
- Automated UI change detection (connectors update when Instacart changes)
- Fallback paths for failures
- 24/7 monitoring + alerting
## Authentication
The MCP server uses a **persistent browser profile** (`~/.strider/instacart/browser-profile`) so your login session survives server restarts automatically.
### First-time login
1. Set `INSTACART_HEADLESS=false` in your MCP server config so the browser window is visible:
```json
{
"mcpServers": {
"instacart": {
"command": "npx",
"args": ["-y", "@striderlabs/mcp-instacart"],
"env": { "INSTACART_HEADLESS": "false" }
}
}
}
```
2. Restart Claude / your MCP client.
3. Ask Claude to run `instacart_login` — a real browser window will open.
4. Log in to Instacart inside that window.
5. Run `instacart_status` to confirm authentication.
6. Remove `INSTACART_HEADLESS` (or set it back to `true`) and restart — the saved profile keeps you logged in.
### How login detection works
Authentication is verified by navigating to `/account` and confirming the page resolves without a redirect to `/login` or `/authentication` (positive detection). This is more reliable than checking for the absence of a "Log in" button.
## Configuration
### Environment Variables
```bash
# Show browser window (required for first-time login)
INSTACART_HEADLESS=false # default: true (headless)
```
### Self-Hosted
```bash
# Clone the repo
git clone https://github.com/striderlabsdev/mcp-instacart
cd mcp-instacart
# Install dependencies
npm install
# Start the server
npm start
# Your agent can now connect to localhost:3000
```
## Architecture
### How We Connect
This connector uses browser automation (Playwright) to interact with Instacart, because Instacart doesn't have a public API. Here's why that's safe and reliable:
- **User-controlled:** Your agent only accesses your own Instacart account
- **Session-based:** We store your login session securely, not your password
- **Change-aware:** We detect Instacart UI changes and alert immediately
- **Fingerprinting:** We use realistic browser profiles to avoid bot detection
- **Rate-limited:** We respect Instacart's infrastructure with appropriate delays
### Security
- Credentials stored encrypted in your local `.env` or secure vault
- Sessions isolated per user
- No data sent to third parties
- MIT Licensed — audit the code yourself
## Support
- 📖 [Full Strider Labs Docs](https://github.com/striderlabsdev/striderlabs)
- 🐛 [Report Issues](https://github.com/striderlabsdev/mcp-instacart/issues)
- 💬 [Discussions](https://github.com/striderlabsdev/mcp-instacart/discussions)
- 🌐 [Website](https://striderlabs.ai)
- 📧 [Email](mailto:hello@striderlabs.ai)
## Contributing
We welcome contributions! Areas of interest:
- Bug reports and fixes
- Feature requests (new stores, categories, etc.)
- Performance improvements
- Documentation enhancements
See [CONTRIBUTING.md](../CONTRIBUTING.md) for guidelines.
## License
MIT — Free to use, modify, and distribute. See [LICENSE](./LICENSE) for details.
---
**Built by Strider Labs** — Making AI agents actually useful.
[GitHub](https://github.com/striderlabsdev) | [Website](https://striderlabs.ai) | [Discord](https://discord.gg/openclaw)
TDQS
Scored across 11 tools
Each tool has a clearly distinct purpose with no ambiguity. For example, instacart_search finds products, instacart_add_to_cart adds them, and instacart_view_cart shows the cart, making misselection unlikely. The tools cover different aspects like authentication, cart management, ordering, and store selection without overlap.
All tool names follow a consistent 'instacart_verb_noun' pattern, such as instacart_add_to_cart and instacart_set_address. This predictable naming scheme enhances readability and helps agents understand the tool's function at a glance, with no deviations in style.
With 11 tools, the server is well-scoped for an Instacart integration, covering essential workflows like login, search, cart management, and ordering. Each tool serves a specific function, and the count is neither too sparse nor bloated, fitting typical server ranges of 3-15 tools.
The tool surface is nearly complete for the Instacart domain, covering core operations from authentication to order placement. Minor gaps exist, such as the lack of tools for updating cart item quantities or removing specific items, but agents can work around these by using clear_cart and re-adding items.