Skip to main content
Glama
karthiksivaramms

Bargainer MCP Server

README.md
# Bargainer MCP Client πŸ›οΈ

A powerful Model Context Protocol (MCP) client for finding and comparing deals from multiple sources including Slickdeals, RapidAPI marketplace, and web scraping. Features a modern web-based chat interface for interactive deal searching.

<a href="https://glama.ai/mcp/servers/@karthiksivaramms/bargainer-mcp-client">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@karthiksivaramms/bargainer-mcp-client/badge" alt="Bargainer Server MCP server" />
</a>

## Features ✨

- **Multi-Source Deal Aggregation**: Integrates with Slickdeals API, RapidAPI marketplace, and web scraping
- **Interactive Chat Interface**: Modern web UI with real-time messaging via Socket.IO
- **Intelligent Deal Filtering**: Filter by price, rating, store, and category
- **Deal Comparison**: Compare deals across multiple sources
- **MCP Protocol Integration**: Full Model Context Protocol implementation with 6 specialized tools
- **Provider Pattern Architecture**: Extensible design for adding new deal sources
- **TypeScript**: Fully typed codebase with strict type checking

## Quick Start πŸš€

### Prerequisites

- Node.js 18+ 
- npm or yarn
- API keys for external services (optional, fallback to mock data)

### Installation

```bash
# Clone the repository
git clone https://github.com/karthiksivaramms/bargainer-mcp-client.git
cd bargainer-mcp-client

# Install dependencies
npm install

# Build the project
npm run build
```

### Usage

#### Web Chat Interface
```bash
# Start the web interface
npm run web

# Or with auto-reload for development
npm run dev:web
```

Then open http://localhost:3001 in your browser and start chatting!

#### MCP Server
```bash
# Start the MCP server
npm run dev

# Or run the built version
npm start
```

#### Demo & Testing
```bash
# Run interactive demo
npm run demo

# Test the server
npm run test:server
```

## Available Commands πŸ’¬

Use these natural language commands in the chat interface:

- **Search deals**: "Find laptop deals under $500"
- **Get top deals**: "Show me today's top electronics deals"
- **Filter deals**: "Gaming headphones under $100 with 4+ stars"
- **Deal details**: "Tell me more about this iPhone deal"
- **Compare deals**: "Compare iPad deals across sources"
- **List sources**: "What deal sources are available?"

## MCP Tools πŸ› οΈ

The server provides 6 specialized tools:

1. **search_deals** - Search for deals by product name or keywords
2. **get_top_deals** - Get trending deals from all sources
3. **filter_deals** - Filter deals by price, rating, store, category
4. **get_deal_details** - Get detailed information about specific deals
5. **compare_deals** - Compare deals across multiple sources
6. **get_available_sources** - List all configured deal sources

## Architecture πŸ—οΈ

```
src/
β”œβ”€β”€ server.ts              # Main MCP server
β”œβ”€β”€ providers/             # Deal source providers
β”‚   β”œβ”€β”€ base.ts           # Base provider interface
β”‚   β”œβ”€β”€ slickdeals.ts     # Slickdeals API provider
β”‚   β”œβ”€β”€ rapidapi.ts       # RapidAPI marketplace provider
β”‚   └── webscraping.ts    # Web scraping provider
β”œβ”€β”€ services/
β”‚   └── aggregator.ts     # Deal aggregation service
└── types/                # TypeScript type definitions

ui/
β”œβ”€β”€ index.html            # Chat interface
β”œβ”€β”€ chat-interface.js     # Frontend JavaScript
└── server.js             # Express server with Socket.IO

test/                     # Test files
scripts/                  # Utility scripts
```

## Contributing 🀝

Contributions are welcome! Please feel free to submit a Pull Request.

### Development Setup

```bash
# Install dependencies
npm install

# Start development with auto-reload
npm run dev

# Start web interface with auto-reload
npm run dev:web

# Run linting
npm run lint

# Format code
npm run format
```

### Adding New Deal Sources

1. Create a new provider in `src/providers/`
2. Extend `BaseDealProvider`
3. Implement required methods
4. Register in `aggregator.ts`

## API Documentation πŸ“š

### Deal Object Structure

```typescript
interface Deal {
  id: string;
  title: string;
  price: number;
  originalPrice?: number;
  discount?: number;
  rating?: number;
  store: string;
  url: string;
  imageUrl?: string;
  description?: string;
  category?: string;
  source: string;
  timestamp: Date;
}
```

## License πŸ“„

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Author πŸ‘¨β€πŸ’»

**Karthik Sivaram M**

- GitHub: [@karthiksivaramms](https://github.com/karthiksivaramms)

## Support πŸ’‘

If you have any questions or run into issues, please [open an issue](https://github.com/karthiksivaramms/bargainer-mcp-client/issues) on GitHub.

## Roadmap πŸ—ΊοΈ

- [ ] More deal source integrations
- [ ] Deal alerts and notifications
- [ ] Price history tracking
- [ ] Advanced filtering options
- [ ] Mobile app version
- [ ] Deal sharing features

---

Made with ❀️ for bargain hunters everywhere!

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes, but 'search_deals' and 'filter_deals' could cause some confusion as both involve filtering criteria. The descriptions clarify that search is text-based with filters, while filter uses advanced criteria, but the boundary is slightly fuzzy. Other tools like 'compare_deals', 'get_deal_details', and 'get_top_deals' are clearly differentiated.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case, such as 'compare_deals', 'filter_deals', 'get_available_sources', 'get_deal_details', 'get_top_deals', and 'search_deals'. The verbs are descriptive and uniform, making the set predictable and easy to understand.

Tool Count5/5

With 6 tools, the server is well-scoped for a bargain/deal-finding domain. Each tool serves a specific function without redundancy, covering key operations like searching, filtering, comparing, and retrieving details. This count is appropriate and manageable for the intended purpose.

Completeness4/5

The tool set covers core deal-finding workflows, including discovery (search, filter, get top deals), comparison, and detailed viewing. A minor gap is the lack of tools for user-specific actions like saving deals or setting alerts, but the existing tools provide a solid foundation for agent interactions without dead ends.

Maintenance

ActivityInactive
ResponsivenessUnresponsive