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协议有一些基本了解(有帮助但不是必需的)
地方发展
- 克隆存储库
git clone
cd mcp-server-scrap-ml- 安装依赖项
npm install- 启动服务器
npm start服务器将在以下时间可用 http://localhost:3003
使用Docker
- 塑造形象
docker build -t mcp-server .- 运行容器
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格式:
- 商店网址:
https://tienda.mercadolibre.com.ar/store-name- 网页 URL:
https://www.mercadolibre.com.ar/pagina/store-name备注:其他MercadoLibre URL格式可能不适用于此版本。
API终点
GET /-健康检查POST /mcp-MCP客户端通信GET /mcp-服务器到客户端通知(SSE)DELETE /mcp-会话终止
🌐 部署
部署到Google Cloud Run
- 设置Google Cloud命令行界面
gcloud auth login
gcloud config set project YOUR_PROJECT_ID- 启用所需的API
gcloud services enable cloudbuild.googleapis.com
gcloud services enable run.googleapis.com- 使用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添加新功能
由于这是一个测试项目,以下是如何添加更多内容:
- 新MCP工具:添加到
src/config/server.js - 更好的刮擦:扩展
src/services/scraper.js获取更多数据 - 更多端点:修改
src/index.js用于新的API路线 - 更好的错误处理:改进验证和错误响应
- 速率限制:增加一些防止滥用的保护措施
🔒 安全考虑
⚠️ 重要:这是一个具有相当基本安全性的测试项目:
- 公共访问:服务是公开的(不适合制作)
- 无速率限制:没有防止虐待的保护措施
- 基本输入验证:使用Zod进行一些验证
- 有限的错误处理:相当基本的错误响应
- 无身份验证:无用户身份验证或授权
用于生产:您希望添加适当的安全性,如身份验证、速率限制和更好的输入验证。
🐛 故障排除
常见问题
- “禁止”错误:尝试硬刷新或隐身模式
- 未找到产品:检查是否支持存储URL格式
- 超时错误:增加云运行配置中的超时时间
- 浏览器问题:确保安装了Playwright依赖项
日志
检查云运行日志:
gcloud run services logs read mcp-server --region=us-central1🤝 贡献
这只是一个个人测试项目,但如果您有任何反馈或建议,请随时联系我们!
______________________________________________________________________
备注:这是我为探索MCP服务器集成和网络抓取而进行的一个测试项目。它不是用于生产的。如果您在测试之外使用MercadoLibre,请务必遵守其服务条款。
