MercadoLibre产品搜索服务器

一个基于MCP协议和Playwright的服务器,允许AI助手通过编程方式在特定MercadoLibre商店中搜索产品。

  • by brianstanley
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 brianstanley/mcp-server-mercado-libre

使用说明

MercadoLibre MCP服务器

我将此构建为一个测试项目,以探索模型上下文协议(MCP)服务器集成和web抓取。它基本上是一个服务器,让人工智能助手以编程方式在特定的MercadoLibre商店中搜索产品。

备注:这只是我为测试MCP服务器集成和网络抓取技术而做的一个附带项目。它不适合生产使用,并且有一些局限性。

🎯 它做什么

此服务器可以:

  • 搜索产品 在特定的MercadoLibre商店
  • 提取产品信息 比如标题和价格
  • 与AI助手连接 通过MCP协议
  • 废弃网站 使用剧作家
  • 处理多个会话 针对不同的客户

它还不能做什么:

  • 仅获取基本信息(标题和价格)
  • 适用于有限的MercadoLibre URL格式
  • 没有花哨的过滤或排序
  • 相当基本的错误处理

🏗️ 建筑

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   MCP Client    │───▶│  MCP Server      │───▶│  MercadoLibre   │
│   (AI Assistant)│    │  (Express + MCP) │    │  (Web Scraping) │
└─────────────────┘    └──────────────────┘    └─────────────────┘

组件

  • MCP服务器:处理所有协议内容和注册工具
  • Web剪贴器:使用Playwright从MercadoLibre获取产品数据
  • URL转换器:将存储URL转换为搜索URL
  • 会话管理器:跟踪不同的客户端连接

🚀 快速开始

先决条件

  • Node.js 20+
  • Docker(如果你想部署)
  • Google Cloud帐户(用于Cloud Run部署)
  • 对MCP协议有一些基本了解(有帮助但不是必需的)

地方发展

  1. 克隆存储库

    git clone <repository-url>
    cd mcp-server-scrap-ml
    
  2. 安装依赖项

    npm install
    
  3. 启动服务器

    npm start
    

服务器将在以下时间可用 http://localhost:3003

使用Docker

  1. 塑造形象

    docker build -t mcp-server .
    
  2. 运行容器

    docker run -p 3003:3003 mcp-server
    

🔧 如何使用

MCP工具: search_mercadolibre

现在服务器有一个搜索产品的工具:

参数

  • query (string):搜索词(例如“智能手表”、“笔记本电脑”)
  • store (字符串):MercadoLibre商店URL

示例用法

// Example MCP client call
const result = await mcpClient.callTool("search_mercadolibre", {
  query: "smart watch",
  store: "https://tienda.mercadolibre.com.ar/example-store"
});

支持的商店URL格式

它适用于以下URL格式:

  1. 商店网址:

    https://tienda.mercadolibre.com.ar/store-name
    
  2. 网页 URL:

    https://www.mercadolibre.com.ar/pagina/store-name
    

备注:其他MercadoLibre URL格式可能不适用于此版本。

API终点

  • GET / -健康检查
  • POST /mcp -MCP客户端通信
  • GET /mcp -服务器到客户端通知(SSE)
  • DELETE /mcp -会话终止

🌐 部署

部署到Google Cloud Run

  1. 设置Google Cloud命令行界面

    gcloud auth login
    gcloud config set project YOUR_PROJECT_ID
    
  2. 启用所需的API

    gcloud services enable cloudbuild.googleapis.com
    gcloud services enable run.googleapis.com
    
  3. 使用Cloud Build进行部署

    gcloud builds submit --config cloudbuild.yaml
    

该服务将与以下内容一起部署:

  • 公众知情权 (无需身份验证)
  • 1个CPU,1GB RAM
  • 0-10个实例 (自动缩放)
  • 300秒超时

访问您部署的服务

部署后,您的服务将在以下位置可用:

https://mcp-server-[PROJECT_ID].us-central1.run.app

📋 配置

环境变量

  • PORT:服务器端口(默认值:3003,Cloud Run会自动设置此端口)

云运行配置

该服务配置了:

  • 记忆:1GB
  • 中央处理器:1个vCPU
  • 最大实例数: 10
  • 超时:300秒
  • 公众知情权:已启用

🔍 运作原理

1.URL转换

服务器获取存储URL,并使用一些基本的字符串操作将其转换为搜索URL:

// Input
store: "https://tienda.mercadolibre.com.ar/example-store"
query: "smart watch"

// Output
searchUrl: "https://listado.mercadolibre.com.ar/smart-watch_Tienda_example-store"

2.网页抓取

使用Playwright和Chromium(无头模式):

  • 转到搜索URL
  • 等待页面加载
  • 使用CSS选择器抓取产品标题和价格
  • 返回前5个结果(硬编码限制)

3.MCP集成

  • 注册 search_mercadolibre 具有一些基本验证的工具
  • 非常简单地管理客户端会话
  • 以MCP格式返回响应

📊 示例响应

{
  "content": [
    {
      "type": "text",
      "text": "Smart Watch XYZ - $15000\nSmart Watch ABC - $12000\nSmart Watch DEF - $18000"
    }
  ]
}

🛠️ 发展

项目结构

src/
├── index.js              # Express server and MCP integration
├── config/
│   └── server.js         # MCP server configuration
├── services/
│   └── scraper.js        # Web scraping logic (pretty basic)
├── transport/
│   └── session.js        # Session management
└── utils/
    └── error.js          # Error handling utilities

添加新功能

由于这是一个测试项目,以下是如何添加更多内容:

  1. 新MCP工具:添加到 src/config/server.js
  2. 更好的刮擦:扩展 src/services/scraper.js 获取更多数据
  3. 更多端点:修改 src/index.js 用于新的API路线
  4. 更好的错误处理:改进验证和错误响应
  5. 速率限制:增加一些防止滥用的保护措施

🔒 安全考虑

⚠️ 重要:这是一个具有相当基本安全性的测试项目:

  • 公共访问:服务是公开的(不适合制作)
  • 无速率限制:没有防止虐待的保护措施
  • 基本输入验证:使用Zod进行一些验证
  • 有限的错误处理:相当基本的错误响应
  • 无身份验证:无用户身份验证或授权

用于生产:您希望添加适当的安全性,如身份验证、速率限制和更好的输入验证。

🐛 故障排除

常见问题

  1. “禁止”错误:尝试硬刷新或隐身模式
  2. 未找到产品:检查是否支持存储URL格式
  3. 超时错误:增加云运行配置中的超时时间
  4. 浏览器问题:确保安装了Playwright依赖项

日志

检查云运行日志:

gcloud run services logs read mcp-server --region=us-central1

🤝 贡献

这只是一个个人测试项目,但如果您有任何反馈或建议,请随时联系我们!


备注:这是我为探索MCP服务器集成和网络抓取而进行的一个测试项目。它不是用于生产的。如果您在测试之外使用MercadoLibre,请务必遵守其服务条款。