Skip to main content
Glama
karthiksivaramms

Bargainer MCP Server

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.

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

Related MCP server: Market FiyatΔ± MCP Server

Quick Start πŸš€

Prerequisites

  • Node.js 18+

  • npm or yarn

  • API keys for external services (optional, fallback to mock data)

Installation

# 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

# 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

# Start the MCP server
npm run dev

# Or run the built version
npm start

Demo & Testing

# 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

# 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

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 file for details.

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

Karthik Sivaram M

Support πŸ’‘

If you have any questions or run into issues, please open an issue 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!

Available Tools

6 tools
compare_dealsC

Compare similar deals and find the best options

ParametersJSON Schema
NameRequiredDescriptionDefault
dealsYesArray of deals to compare

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions comparing and finding best options but doesn't disclose behavioral traits such as how comparison is performed (e.g., criteria, algorithms), output format, error handling, or performance considerations. This leaves significant gaps in understanding the tool's operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a single sentence that directly states the tool's function. It's front-loaded and avoids unnecessary words, making it efficient. However, it could be more structured by including key details like comparison criteria, but it earns points for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a comparison tool with no annotations and no output schema, the description is incomplete. It lacks details on how the comparison works, what 'best' means, and the expected return values. For a tool that likely involves ranking or analysis, this leaves too much ambiguity for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the schema documenting that 'deals' is a required array. The description adds minimal value beyond this, as it doesn't elaborate on what constitutes a valid deal object in the array or provide examples. Since schema coverage is high, the baseline score of 3 is appropriate, but no additional insights are offered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's purpose as comparing deals to find best options, which is clear but vague. It specifies 'compare similar deals' but doesn't define what constitutes 'similar' or what 'best options' means. It distinguishes from siblings like 'filter_deals' or 'get_deal_details' by focusing on comparison rather than filtering or retrieval, but the distinction isn't explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like 'filter_deals' or 'get_top_deals'. The description implies usage for comparison scenarios, but it doesn't specify prerequisites, context, or exclusions. For example, it doesn't indicate if this is for pre-selected deals or if it integrates with search results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

filter_dealsC

Filter deals using advanced criteria

ParametersJSON Schema
NameRequiredDescriptionDefault
dealsYesArray of deals to filter
categoriesNoCategories to include
storesNoStores to include
priceRangeNoPrice range filter
ratingRangeNoRating range filter
tagsNoTags to filter by

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. 'Filter deals' implies a read-only operation, but the description doesn't clarify whether this is a safe query, what happens with invalid inputs, whether it's paginated, or what the output format looks like. It mentions 'advanced criteria' but doesn't explain what makes them advanced or how they're applied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point without unnecessary words. However, it's arguably too concise given the tool's complexity (6 parameters including nested objects) and lack of other documentation. Every word earns its place, but more information might be warranted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters (including nested objects), no annotations, and no output schema, the description is insufficient. It doesn't explain what constitutes a 'deal' object, how filtering logic works (AND/OR between criteria), what the output looks like, or error conditions. The agent must rely heavily on the schema alone without contextual guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds no additional parameter information beyond what's in the schema - it doesn't explain how parameters interact, provide examples of valid values, or clarify the 'advanced criteria' mentioned. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'filters deals using advanced criteria', which provides a basic verb+resource combination. However, it's vague about what 'advanced criteria' means and doesn't differentiate from sibling tools like 'search_deals' or 'get_top_deals' that might also involve filtering operations. The purpose is understandable but lacks specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'search_deals' and 'get_top_deals' that likely involve filtering, there's no indication of when this tool is preferred, what prerequisites exist, or what scenarios it's designed for. Usage must be inferred from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_available_sourcesB

Get list of available deal sources/providers

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a list, implying a read-only operation, but doesn't specify if it requires authentication, has rate limits, returns structured data, or handles errors. This leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what the tool does but lacks details on behavior, usage context, or output format, which could be helpful for an AI agent despite the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but since there are no parameters, this is appropriate. A baseline of 4 is applied as it adequately addresses the lack of parameters without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get list') and resource ('available deal sources/providers'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its siblings (like 'search_deals' or 'filter_deals'), which also deal with deal-related data, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'search_deals' and 'filter_deals' available, there's no indication of whether this tool is for metadata retrieval, initial setup, or other contexts, leaving usage ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_deal_detailsC

Get detailed information about a specific deal

ParametersJSON Schema
NameRequiredDescriptionDefault
dealIdYesThe ID of the deal to get details for
sourceNoThe source of the deal (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states it 'gets' information without disclosing behavioral traits. It doesn't mention if this is a read-only operation, requires authentication, has rate limits, or what the output format might be, leaving significant gaps in understanding how the tool behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, though it could be slightly more structured to include usage context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool with 2 parameters. It fails to explain what 'detailed information' entails, how results are returned, or any behavioral aspects, making it inadequate for full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter semantics beyond what the input schema provides, which has 100% coverage with clear descriptions for both parameters. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate with additional context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'detailed information about a specific deal', making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'get_top_deals' or 'search_deals' which also retrieve deal information, missing the specificity needed for a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'search_deals' or 'get_top_deals'. It lacks any mention of prerequisites, exclusions, or contextual cues, leaving the agent with minimal direction for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_dealsC

Get top/trending deals from all or specific sources

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of deals to return
sourcesNoSpecific sources to get deals from

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on permissions, rate limits, pagination, or return format (e.g., sorted by trending metrics). This is a significant gap for a tool that likely interacts with external data sources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple tool, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'top/trending' means (e.g., based on views, time, or other metrics), the return structure, or error handling. For a tool with potential complexity in sourcing and ranking deals, this leaves critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('limit' and 'sources') adequately. The description adds minimal value by implying parameter usage ('from all or specific sources' hints at 'sources'), but doesn't provide additional semantics beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('top/trending deals'), and specifies scope ('from all or specific sources'). However, it doesn't explicitly differentiate from sibling tools like 'filter_deals' or 'search_deals' that might also retrieve deals, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'filter_deals' or 'search_deals'. It mentions 'all or specific sources' but doesn't clarify if this is for trending content only or how it differs from other deal-retrieval tools, leaving usage context vague.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_dealsC

Search for deals across multiple sources based on text query and filters

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for deals (e.g., "gaming laptop", "iPhone", "kitchen appliances")
categoryNoCategory filter (e.g., "electronics", "clothing", "home")
minPriceNoMinimum price filter
maxPriceNoMaximum price filter
minRatingNoMinimum rating filter (0-5)
storeNoStore/retailer filter (e.g., "amazon", "best buy")
sortByNoSort criteria
sortOrderNoSort order
limitNoMaximum number of results (1-100)
sourcesNoSpecific sources to search (e.g., ["slickdeals", "rapidapi"])

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions searching 'across multiple sources' which adds some context about scope, but doesn't cover important aspects like rate limits, authentication requirements, pagination behavior, or what happens when no results are found. For a search tool with 10 parameters, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core functionality. Every word earns its place, with no wasted verbiage or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 10 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the search returns (e.g., deal objects with what fields), how results are structured, or any limitations beyond what's implied by the parameters. The lack of behavioral context is particularly problematic given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 10 parameters thoroughly with descriptions, enums, and constraints. The description adds no additional parameter information beyond what's in the schema, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('search') and resource ('deals'), and specifies the scope ('across multiple sources'). It distinguishes the tool from siblings like 'compare_deals' or 'get_top_deals' by emphasizing search functionality, though it doesn't explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'filter_deals' or 'get_top_deals'. The description mentions searching 'across multiple sources', but doesn't clarify if this is the primary search tool or when other tools might be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.3/5.0
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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/karthiksivaramms/bargainer-mcp-client'

If you have feedback or need assistance with the MCP directory API, please join our Discord server