Superprecio MCP Server
# Superprecio MCP Server
A Model Context Protocol (MCP) server that provides AI assistants with access to Superprecio's price comparison functionality for supermarkets in Argentina (with plans to expand to all Latin America).
## Overview
This MCP server transforms Claude (or any MCP-compatible AI assistant) into an expert price comparison assistant for Argentina. It provides real-time access to product prices, deals, and availability across multiple supermarkets.
## Features
### 🛠️ Tools
The server provides 6 powerful tools:
1. **search_products** - Search for products by name across all supermarkets
2. **search_by_code** - Find products by EAN/barcode
3. **compare_prices** - Compare prices and find the best deals
4. **get_best_deals** - Discover current promotions and discounts
5. **send_notification** - Send push notifications about deals (requires Firebase)
6. **subscribe_device** - Subscribe devices to price alerts (requires Firebase)
### 📚 Resources
- **supermarket://list** - List of all available supermarkets
- **supermarket://[id]/info** - Detailed information about a specific supermarket
### đź’¬ Prompts
- **price_expert** - Transform Claude into an Argentina shopping expert
## Prerequisites
- Node.js 18.0.0 or higher
- Access to [Superprecio API](https://superprecio.ar) (production) or a local instance
## Installation
### Option 1: Use with npx (Recommended)
Once published to npm, you can use directly with:
```bash
npx superprecio-mcp
```
### Option 2: Install Globally
```bash
npm install -g superprecio-mcp
```
### Option 3: Local Development
```bash
# Clone the repository
git clone https://github.com/bunkerapps/superprecio_mcp.git
cd superprecio_mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run the server
npm start
```
## Configuration
Create a `.env` file in the project root:
```bash
# Copy the example file
cp .env.example .env
```
Edit `.env` with your settings:
```env
# Superprecio API URL (required)
# Use production API or your local instance
SUPERPRECIO_API_URL=https://superprecio.ar
# Request timeout in milliseconds (optional)
REQUEST_TIMEOUT=30000
# Enable debug logging (optional)
DEBUG=false
```
## Usage with Claude Desktop
Add this server to your Claude Desktop configuration:
### macOS
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"superprecio": {
"command": "npx",
"args": ["-y", "superprecio-mcp"]
}
}
}
```
**Note:** The server uses `https://superprecio.ar` by default. For local development, add:
```json
"env": {
"SUPERPRECIO_API_URL": "http://localhost:3000"
}
```
### Windows
Edit `%APPDATA%/Claude/claude_desktop_config.json` with the same configuration.
### Using Local Installation
If you installed locally or are developing:
```json
{
"mcpServers": {
"superprecio": {
"command": "node",
"args": ["/absolute/path/to/superprecio_mcp/build/index.js"]
}
}
}
```
For local development, override the API URL:
```json
"env": {
"SUPERPRECIO_API_URL": "http://localhost:3000"
}
```
## Example Conversations
Once configured, you can ask Claude:
### Search for Products
```
You: "Busca el arroz más barato"
Claude: *Uses search_products and compare_prices tools*
"El arroz más barato está en [Supermercado] por $2,450..."
```
### Compare Prices
```
You: "Compara precios de leche en todos los supermercados"
Claude: *Uses compare_prices tool*
"Aquà está la comparación de precios de leche:
1. Supermercado A: $850
2. Supermercado B: $750 🏆 MEJOR PRECIO
3. Supermercado C: $890
¡Puedes ahorrar $140 comprando en Supermercado B!"
```
### Find Best Deals
```
You: "¿Cuáles son las mejores ofertas de hoy en cereales?"
Claude: *Uses get_best_deals tool*
"Aquà están las mejores ofertas en cereales:
1. Corn Flakes en [Supermercado] - $2,100 (15% OFF)
2. ..."
```
### Use the Price Expert Prompt
```
You: "Use the price_expert prompt"
Claude: *Becomes an Argentina shopping expert*
"¡Hola! Soy tu experto en supermercados de Argentina.
ÂżCĂłmo puedo ayudarte a ahorrar dinero hoy?"
```
## API Reference
### Tools
#### search_products
```typescript
{
query: string; // Product name (e.g., "leche descremada")
maxResults?: number; // Results per store (1-50, default: 9)
sortBy?: string; // "OrderByTopSaleDESC" | "OrderByPriceASC" | "OrderByPriceDESC"
}
```
#### search_by_code
```typescript
{
code: string; // EAN/barcode (usually 13 digits)
}
```
#### compare_prices
```typescript
{
productName: string; // Product to compare
maxResults?: number; // Results to analyze per store (1-20, default: 5)
}
```
#### get_best_deals
```typescript
{
category: string; // Category (e.g., "lácteos", "cereales")
maxResults?: number; // Deals per store (1-30, default: 10)
}
```
#### send_notification
```typescript
{
title: string; // Notification title
message: string; // Notification body
deviceToken?: string; // Optional: specific device (else broadcasts)
data?: object; // Optional: custom data
}
```
#### subscribe_device
```typescript
{
deviceToken: string; // Firebase Cloud Messaging token
}
```
### Resources
- `supermarket://list` - Returns JSON with all supermarkets
- `supermarket://[id]/info` - Returns JSON with specific supermarket details
### Prompts
- `price_expert` - Takes optional `focus` argument
## Development
```bash
# Install dependencies
npm install
# Watch mode (rebuilds on changes)
npm run dev
# Build for production
npm run build
# Run built server
npm start
```
## Architecture
```
superprecio_mcp/
├── src/
│ ├── index.ts # Main MCP server
│ ├── client/
│ │ └── superPrecioApi.ts # HTTP client for Superprecio API
│ ├── tools/ # MCP tool implementations
│ ├── resources/ # MCP resource handlers
│ ├── prompts/ # MCP prompt templates
│ └── types/ # TypeScript type definitions
├── build/ # Compiled JavaScript
└── package.json
```
## How It Works
1. **MCP Server**: Runs as a stdio-based server that communicates with Claude
2. **HTTP Client**: Makes requests to your Superprecio API instance
3. **Tools**: Expose Superprecio functionality as MCP tools
4. **Resources**: Provide access to supermarket data
5. **Prompts**: Transform Claude into a shopping expert
## Troubleshooting
### "Could not connect to Superprecio API"
- Verify API is accessible: `curl https://superprecio.ar`
- Check `SUPERPRECIO_API_URL` in your configuration
- Ensure there are no firewall issues
### "Unknown tool" errors
- Restart Claude Desktop after configuration changes
- Verify the MCP server is running (check Claude Desktop logs)
### Debug Mode
Enable debug logging:
```env
DEBUG=true
```
This will log all API requests/responses to stderr.
## Contributing
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
## License
MIT License - see LICENSE file for details
## Credits
- Built with [Model Context Protocol SDK](https://github.com/anthropics/model-context-protocol)
- Integrates with [Superprecio](https://superprecio.ar)
## Support
For issues and questions:
- GitHub Issues: [https://github.com/bunkerapps/superprecio_mcp/issues](https://github.com/bunkerapps/superprecio_mcp/issues)
- Superprecio Website: [https://superprecio.ar](https://superprecio.ar)
---
Made with ❤️ in Argentina for Latin American shoppers
TDQS
Scored across 15 tools
Each tool has a clearly distinct purpose with no significant overlap. For example, 'add_items_to_list' is for adding products to an existing list, 'create_shopping_list' is for creating new lists, and 'optimize_shopping_list' is for finding the best supermarket for an entire list. The descriptions reinforce these distinct roles, making it easy for an agent to choose the right tool.
All tool names follow a consistent snake_case pattern with clear verb-noun structures, such as 'add_items_to_list', 'compare_prices', and 'set_price_alert'. There are no deviations in naming conventions, making the set predictable and easy to understand at a glance.
With 15 tools, this server is well-scoped for its purpose of shopping optimization and price comparison in Argentina. Each tool serves a specific function, from list management to price alerts and notifications, without feeling bloated or insufficient for the domain.
The tool set provides comprehensive coverage for shopping optimization, including CRUD operations for lists and alerts, price comparison, product search, location-based supermarket finding, and notification management. There are no obvious gaps; agents can handle the full lifecycle from planning to purchasing and monitoring deals.