MCP server for automated product search and price comparison across multiple marketplaces with integrated license management
Project description
Offers Check Marketplaces MCP Server
A powerful MCP (Model Context Protocol) server for automated product search and price comparison across multiple marketplaces with integrated license management.
Features
- 🔍 Multi-marketplace Search: Search products across multiple e-commerce platforms
- 💰 Price Comparison: Automated price comparison and analysis
- 📊 Statistics & Analytics: Comprehensive reporting and data analysis
- 🗄️ Database Management: SQLite-based data storage with async operations
- 🔐 License Management: Integrated license verification system
- 🌐 Web Scraping: Playwright-based web scraping capabilities
- 📈 Excel Integration: Import/export data from Excel files
- 🚀 High Performance: Async/await architecture for optimal performance
Supported Marketplaces
- Komus (komus.ru) - Office supplies and stationery
- VseInstrumenti (vseinstrumenti.ru) - Tools and equipment
- Ozon (ozon.ru) - Universal marketplace
- Wildberries (wildberries.ru) - Consumer goods
- OfficeMag (officemag.ru) - Office supplies
Installation
From PyPI
pip install offers-check-marketplaces
From Source
git clone https://github.com/yourusername/offers-check-marketplaces-mcp.git
cd offers-check-marketplaces-mcp
pip install -e .
Quick Start
1. Basic Usage
# Run in STDIO mode (for MCP clients)
offers-check-marketplaces
# Run in SSE mode (web server)
offers-check-marketplaces --sse --host 0.0.0.0 --port 8000
2. MCP Configuration
Add to your MCP client configuration (e.g., .cursor/mcp.json or .kiro/settings/mcp.json):
{
"mcpServers": {
"offers_check_marketplaces": {
"command": "offers-check-marketplaces",
"env": {
"LICENSE_KEY": "your-license-key-here"
}
}
}
}
3. Environment Variables
# Set license key
export LICENSE_KEY="your-license-key-here"
# Optional: Set custom API endpoint
export API_BASE_URL="https://your-api-endpoint.com"
MCP Tools
The server provides the following MCP tools:
Core Tools
get_product_details- Get detailed product information and pricesget_product_list- List all products from databaseget_statistics- Generate comprehensive statistics
Data Management Tools
save_product_prices- Save found prices to database
License Management Tools
check_license_status- Check current license statusset_license_key- Set new license key
Excel Tools
parse_excel_file- Parse Excel file and return structured dataget_excel_info- Get information about Excel file structure without reading all dataexport_to_excel- Export data to Excel file with formattingfilter_excel_data- Filter Excel data by specified criteriatransform_excel_data- Transform Excel data according to specified rules
Usage Examples
Search Products
# Using MCP client
Get Product Details
# Get detailed information about a product
result = await mcp_client.call_tool("get_product_details", {
"product_code": 195385.0
})
Generate Statistics
# Get comprehensive statistics
result = await mcp_client.call_tool("get_statistics", {})
Parse Excel File
# Parse Excel file with specific parameters
result = await mcp_client.call_tool("parse_excel_file", {
"file_path": "data/input.xlsx",
"sheet_name": "Данные",
"header_row": 0,
"max_rows": 100
})
Export Data to Excel
# Export processed data to Excel with formatting
result = await mcp_client.call_tool("export_to_excel", {
"data": processed_data,
"file_path": "data/output.xlsx",
"sheet_name": "Результаты",
"apply_formatting": True,
"auto_adjust_columns": True
})
Filter Excel Data
# Filter data by multiple criteria
result = await mcp_client.call_tool("filter_excel_data", {
"data": excel_data,
"filters": {
"Категория": "Хозтовары и посуда",
"Цена позиции\nМП c НДС": {
"greater_than": 1000,
"less_than": 5000
}
}
})
Configuration
License Configuration
The system requires a valid license key. You can provide it through:
- Environment variable:
LICENSE_KEY=your-key - MCP configuration: Set in the
envsection of your MCP config - Configuration file:
data/.license_config.json
Data Directory
The system automatically creates user data directories following OS standards:
- Windows:
%APPDATA%\offers-check-marketplaces\ - macOS:
~/Library/Application Support/offers-check-marketplaces/ - Linux:
~/.local/share/offers-check-marketplaces/(XDG compliant)
Contains:
- SQLite database (
database/products.db) - License cache (
cache/.license_cache.json) - Excel files for import/export
- Application logs (
logs/)
Data Migration
The system automatically migrates data from the legacy ./data directory to the new standard location. During migration:
- Files are safely copied (not moved) to preserve originals
- Migration is skipped if files are currently in use (e.g., Excel files are open)
- The old directory is renamed to
data.migratedafter successful migration
Environment Variables
OFFERS_CHECK_DATA_DIR- Override default data directory locationOFFERS_CHECK_DISABLE_MIGRATION- Set totrueto disable automatic migration
Migration Control
# Disable automatic migration
export OFFERS_CHECK_DISABLE_MIGRATION=true
# Use custom data directory
export OFFERS_CHECK_DATA_DIR=/path/to/custom/location
# Windows examples
set OFFERS_CHECK_DISABLE_MIGRATION=true
set OFFERS_CHECK_DATA_DIR=C:\MyData\offers-check
For detailed migration information, see Data Migration Guide.
Development
Setup Development Environment
git clone https://github.com/yourusername/offers-check-marketplaces-mcp.git
cd offers-check-marketplaces-mcp
# Install with development dependencies
pip install -e ".[dev]"
Running Tests
# Run all tests
pytest
# Run specific test files
python test_license_integration.py
python test_mcp_license_tools.py
python test_final_integration.py
Building Package
# Install build tools
pip install build twine
# Build package
python -m build
# Upload to PyPI (requires credentials)
twine upload dist/*
Architecture
Components
- Server (
server.py) - Main MCP server with tool implementations - License Manager (
license_manager.py) - License verification and management - Database Manager (
database_manager.py) - SQLite database operations - Search Engine (
search_engine.py) - Multi-marketplace search coordination - Data Processor (
data_processor.py) - Excel file processing - Statistics Generator (
statistics.py) - Analytics and reporting - Error Handling (
error_handling.py) - Comprehensive error management
Data Flow
- Input: Excel files with product specifications
- Processing: Search products across marketplaces
- Storage: Save results to SQLite database
- Analysis: Generate statistics and comparisons
- Output: Updated Excel files with prices and analysis
API Reference
Get Product Details
get_product_details(product_code: float) -> dict
Get detailed information about a specific product.
Parameters:
product_code(float): Unique product code from database
Returns:
- Dictionary with product details and price analysis
Error Handling
The system includes comprehensive error handling:
- License Errors: Invalid or missing license keys
- Network Errors: Marketplace connectivity issues
- Database Errors: SQLite operation failures
- Validation Errors: Invalid input parameters
All errors are logged and return user-friendly messages.
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
- Documentation: GitHub Repository
- Issues: Bug Tracker
- License: Contact support for license-related questions
Changelog
v0.1.0
- Initial release
- Multi-marketplace product search
- Price comparison and analysis
- Integrated license management
- MCP server implementation
- Excel data processing
- SQLite database storage
- Comprehensive error handling
Made with ❤️ for automated marketplace analysis
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file offers_check_marketplaces_mcp_2025-0.1.3.tar.gz.
File metadata
- Download URL: offers_check_marketplaces_mcp_2025-0.1.3.tar.gz
- Upload date:
- Size: 449.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eb9d50e839f762966ece019dc400fd570602a38779134232eda1917a88703d9
|
|
| MD5 |
ec95300a6543a6632236a700404dce0c
|
|
| BLAKE2b-256 |
52dd892e426ac55852cbbcf0ee25570d0c11179490b5603908f06235f78a3d52
|
File details
Details for the file offers_check_marketplaces_mcp_2025-0.1.3-py3-none-any.whl.
File metadata
- Download URL: offers_check_marketplaces_mcp_2025-0.1.3-py3-none-any.whl
- Upload date:
- Size: 97.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1b9fd8032e2ca735186c2d9ea34e83c47f5ae69cae598a7d4be727bb49e69ef9
|
|
| MD5 |
93db7ddab6271539cc19f59f7bde9cf5
|
|
| BLAKE2b-256 |
917475ca2e3e211ee6cc8b8e1be48b266559e5593f104b43b194b60ceb9b9bde
|