Blinkit MCP服务器
一个模型上下文协议(MCP)服务器,提供对Blinkit杂货购物平台的编程访问。使用Node.js和Playwright构建,实现强大的浏览器自动化。
特性
✅ 认证 -使用电话号码和OTP验证登录\ ✅ 产品搜索 -搜索具有详细信息的产品\ ✅ 购物车管理 -将商品添加到购物车并查看购物车内容\ ✅ 结账 -使用货到付款(COD)下订单\ ✅ 地址管理 -查看已保存的收货地址
快速开始
先决条件
- Node.js 18+
- npm或纱线
安装
git clone https://github.com/ukrocks007/blinkit-mcp-improved.git
cd blinkit-mcp-improved
npm install
npx playwright install chromium运行服务器
服务器在MCP客户端的stdio模式下运行:
npm start
# or
node src/index.js测试
使用附带的测试客户端测试服务器:
npm test
# or
node src/test_client.js可用工具
1. login
通过提供电话号码开始身份验证。
论据:
phoneNumber(string):印度电话号码(10位数字)
退货: 指示OTP已发送的成功消息
2. verify_otp
通过验证手机上收到的OTP完成登录。
论据:
otp(字符串):4位OTP代码
退货: 身份验证成功确认
3. search_products
在Blinkit上搜索产品。
论据:
query(string):搜索词(例如,“牛奶”、“面包”)limit(数字,可选):返回的最大结果数(默认值:10)
退货: 包含名称、变体、价格和指数的产品数组
4. add_to_cart
根据搜索结果中的产品索引将产品添加到购物车中。
论据:
productIndex(数字):搜索结果中的产品索引(从0开始)quantity(数字,可选):要添加的数量(默认值:1)
退货: 确认商品已添加到购物车
5. check_cart
查看购物车中的当前商品。
退货: 包含详细信息和总计的购物车商品数组
6. get_addresses
获取有关已保存的送货地址的信息。
退货: 保存的地址列表及其详细信息
7. place_order_cod
使用货到付款完成结账并下订单。
论据:
addressIndex(数字,可选):要使用的地址索引(默认值:0)
退货: 订单确认或错误详细信息
Claude桌面集成
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"blinkit": {
"command": "node",
"args": ["/absolute/path/to/blinkit-mcp-improved/src/index.js"]
}
}
}更新配置后,重新启动Claude Desktop。
用法示例
// In Claude Desktop or any MCP client:
// 1. Login
await login({ phoneNumber: "9876543210" });
// 2. Verify OTP (check your phone)
await verify_otp({ otp: "1234" });
// 3. Search for products
const products = await search_products({ query: "milk", limit: 10 });
// 4. Add first product to cart
await add_to_cart({ productIndex: 0, quantity: 2 });
// 5. Check cart
const cart = await check_cart();
// 6. View addresses
const addresses = await get_addresses();
// 7. Place order
await place_order_cod({ addressIndex: 0 });技术细节
建筑
- 语言: Node.js(需要18+)
- MCP-SDK:
@modelcontextprotocol/sdk - 浏览器自动化: 剧作家
- 运输: 标准
会话管理
- 浏览器会话是自动管理的
- Cookie存储在
~/.blinkit_mcp/cookies/ - 每个服务器进程一个浏览器实例
- 会话在工具调用中持续存在
选择器策略
使用弹性选择器,旨在处理:
- 样式化组件(类名哈希)
- 顺风CSS实用程序类
- 动态内容加载
- 骨架装载机
联合
- 部分类匹配
[class*=""] - 结构属性(
tabindex,role,id) - 文本内容
:has-text() - 备用链,坚固耐用
错误处理
- COD最小订单验证
- 地址选择验证
- 付款方式启用检查
- 带有信息错误的优雅降级
故障排除
“会话已过期”错误
重新运行 login 和 verify_otp 建立新会话的工具。
搜索未返回任何结果
- 检查产品是否出现在浏览器窗口中
- 等待时间已优化,但可能需要调整以适应慢速连接
- 尝试更具体的搜索词
COD下单失败
- 验证地址选择正确
- 检查购物车总数是否符合COD最低要求(通常₹100-200)
- 确保“现金”支付面板扩展,COD选项可见
浏览器未关闭
浏览器窗口在服务器生命周期内保持打开,以实现会话持久性。当服务器停止时,它们会关闭。
未找到浏览器
npx playwright install chromium发展
项目结构
blinkit-mcp-improved/
├── src/
│ ├── index.js # MCP server implementation
│ ├── playwright_auth.js # Browser automation logic
│ └── test_client.js # Test harness
├── package.json # Dependencies
├── README.md # This file
└── start.sh # Launch script关键文件
- src/index.js:实现MCP协议,定义工具
- src/playwright_auth.js:所有浏览器自动化(身份验证、搜索、购物车、结账)
- src/test_client.js:用于调试的独立测试仪
在调试模式下运行
编辑 src/playwright_auth.js 要查看浏览器窗口:
this.browser = await chromium.launch({
headless: false // Shows browser window
});MCP检验员测试
npx @modelcontextprotocol/inspector node src/index.js添加新功能
- 添加方法
PlaywrightAuth类在src/playwright_auth.js - 在中注册新工具
src/index.js带模式 - 测试用
npm test
安全与隐私
- 无数据收集:所有互动都是本地的
- 会话隔离:每个服务器实例都有自己的浏览器配置文件
- 凭证:电话号码和OTP仅用于Blinkit身份验证
- 本地存储:Cookie仅存储在
~/.blinkit_mcp/cookies/
局限性
- 仅COD:目前仅支持货到付款方式
- 单次会话:每个服务器进程一个活动浏览器会话
- 手动OTP:要求用户从手机输入OTP
- 仅限印度:适用于印度电话号码和地址
贡献
欢迎投稿!拜托:
- 克隆该仓库
- 创建要素分支
- 彻底测试(尤其是结账流程)
- 提交拉取请求
看 贡献.md 详细指南。
许可证
MIT许可证-有关详细信息,请参阅许可证文件
致谢
内置:
______________________________________________________________________
注: 这是一个非官方工具,与Blinkit/Zomato没有任何关联、认可或联系。按照Blinkit的服务条款负责任地使用。
