article
README
🚀 讨价者MCP客户端 🛍️
讨价者MCP客户端是一款强大的模型上下文协议(MCP)客户端,可从多个来源查找和比较交易信息,这些来源包括Slickdeals、RapidAPI市场和网页抓取。它具备现代基于网页的聊天界面,可实现交互式交易搜索。
✨ 主要特性
- 多源交易聚合:集成了Slickdeals API、RapidAPI市场和网页抓取功能。
- 交互式聊天界面:通过Socket.IO实现实时消息传递的现代网页用户界面。
- 智能交易过滤:可按价格、评级、商店和类别进行过滤。
- 交易比较:跨多个来源比较交易信息。
- MCP协议集成:完整实现模型上下文协议,拥有6种专业工具。
- 提供者模式架构:可扩展设计,便于添加新的交易来源。
- TypeScript编写:完全类型化的代码库,具备严格的类型检查。
🚀 快速开始
前提条件
- Node.js 18+
- npm 或 yarn
- 外部服务的API密钥(可选,可回退到模拟数据)
📦 安装指南
# 克隆仓库
git clone https://github.com/karthiksivaramms/bargainer-mcp-client.git
cd bargainer-mcp-client
# 安装依赖
npm install
# 构建项目
npm run build
💻 使用示例
网页聊天界面
# 启动网页界面
npm run web
# 或者在开发环境下使用自动重新加载功能
npm run dev:web
然后在浏览器中打开 http://localhost:3001 并开始聊天!
MCP服务器
# 启动MCP服务器
npm run dev
# 或者运行已构建的版本
npm start
演示与测试
# 运行交互式演示
npm run demo
# 测试服务器
npm run test:server
💬 可用命令
在聊天界面中使用以下自然语言命令:
- 搜索交易:“查找价格低于500美元的笔记本电脑交易”
- 获取顶级交易:“显示今天的顶级电子产品交易”
- 过滤交易:“价格低于100美元、评级4星以上的游戏耳机”
- 交易详情:“告诉我关于这个iPhone交易的更多信息”
- 比较交易:“跨来源比较iPad交易”
- 列出来源:“有哪些可用的交易来源?”
🛠️ MCP工具
服务器提供6种专业工具:
- search_deals - 按产品名称或关键词搜索交易。
- get_top_deals - 从所有来源获取热门交易。
- filter_deals - 按价格、评级、商店、类别过滤交易。
- get_deal_details - 获取特定交易的详细信息。
- compare_deals - 跨多个来源比较交易。
- get_available_sources - 列出所有已配置的交易来源。
🏗️ 架构
src/
├── server.ts # 主MCP服务器
├── providers/ # 交易来源提供者
│ ├── base.ts # 基础提供者接口
│ ├── slickdeals.ts # Slickdeals API提供者
│ ├── rapidapi.ts # RapidAPI市场提供者
│ └── webscraping.ts # 网页抓取提供者
├── services/
│ └── aggregator.ts # 交易聚合服务
└── types/ # TypeScript类型定义
ui/
├── index.html # 聊天界面
├── chat-interface.js # 前端JavaScript
└── server.js # 带有Socket.IO的Express服务器
test/ # 测试文件
scripts/ # 实用脚本
🤝 贡献
欢迎贡献代码!请随时提交拉取请求。
开发设置
# 安装依赖
npm install
# 以自动重新加载模式启动开发
npm run dev
# 以自动重新加载模式启动网页界面
npm run dev:web
# 运行代码检查
npm run lint
# 格式化代码
npm run format
添加新的交易来源
- 在
src/providers/中创建一个新的提供者。 - 扩展
BaseDealProvider。 - 实现所需的方法。
- 在
aggregator.ts中注册。
📚 详细文档
交易对象结构
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;
}
📄 许可证
本项目采用MIT许可证 - 详情请参阅 LICENSE 文件。
👨💻 作者
Karthik Sivaram M
- GitHub: @karthiksivaramms
💡 支持
如果您有任何问题或遇到问题,请在GitHub上 创建一个问题。
🗺️ 路线图
- [ ] 集成更多交易来源
- [ ] 交易提醒和通知
- [ ] 价格历史跟踪
- [ ] 高级过滤选项
- [ ] 移动应用版本
- [ ] 交易分享功能
为各地的讨价还价者用心打造!
Scan to join WeChat group