使用说明
Mercado Libre MCP Server — para Claude Code, Cursor y agentes de IA
@nahuelalbornoz/mercadolibre-mcp — servidor MCP (Model Context Protocol) para vendedores de Mercado Libre. 11 tools de operación (con write-back), proxy al MCP oficial de ML, token-store Supabase multi-tenant, y knowledge tools ("TRAID ML Hub", v1.2.0+) que exponen features, gotchas y patrones reusables programáticamente. Compatible con Claude Code, Cursor, Continue y cualquier cliente MCP.
npx @nahuelalbornoz/mercadolibre-mcp
Por qué esta vs las alternativas
- vs el MCP oficial de ML: este paquete lo envuelve (Capa 0, tools
official_*, siempre actualizado server-side) y le agrega las operaciones de seller que el oficial no expone (precio/stock/preguntas/ads con write-back, métricas, reputación, competencia). - vs
@nahuelalbornoz/mercadolibre-mcp-read: ese es el subset read-only (7 tools, sin riesgo de tocar la tienda). Usá este paquete completo cuando necesites escribir (precios, stock, respuestas, ads); usá el-readsi solo hacés análisis/reporting. - Auth flexible: 3 modos (Supabase multi-tenant, token directo, auto-refresh standalone) — elegís según si tenés un backend (n8n/cron) renovando el token o no.
Arquitectura — 5 capas
CAPA 4 · _meta_* introspection (TBD v1.2.0 GA)
CAPA 3 · flow_* composite workflows opt-in (TBD v1.2.0-rc)
CAPA 2 · traid_* knowledge tools ★ NUEVO en v1.2.0
CAPA 1 · ml_* endpoints ML hand-coded (11 v1.0 + 9 nuevas en beta)
CAPA 0 · official_* proxy MCP oficial ML (v1.1.0)
| Capa | Cuándo cambia | Quién la usa |
|---|---|---|
| 0 — official | Cuando ML actualiza server-side (transparente) | Devs buscando docs ML on-demand |
| 1 — ml | Cuando descubrimos gotcha o endpoint nuevo | Cualquier tool de Capa 3 o devs |
| 2 — traid | Cuando agregamos feature al knowledge/ |
Todo agente Claude arrancando feature ML en cualquier repo TRAID |
| 3 — flow | Cuando pulimos un workflow de negocio | Proyectos cliente que activan el flow via config |
| 4 — meta | Casi nunca | Devs debuggeando conexión MCP |
Specs completos: knowledge/stack/mcp-traid-ml-hub/ en el repo CONOCIMIENTO-NAHUEL.
Capa 1 — Tools ML (11 v1.0 + extensiones)
Las 11 tools existentes v1.0 (preservadas con backwards-compat 100%). Las 4 marcadas
Escritura sólo se registran con ML_WRITES_ENABLED=1 — sin esa env var el server
arranca read-only y esas 4 tools no existen para el cliente MCP (ver "Seguridad").
| Tool | Descripción | Tipo |
|---|---|---|
list_products |
Lista productos/publicaciones de un vendedor | Lectura |
get_orders |
Obtiene órdenes/ventas con detalle | Lectura |
update_price |
Actualiza precio de una publicación | Escritura (ML_WRITES_ENABLED=1) |
update_stock |
Actualiza stock de una publicación | Escritura (ML_WRITES_ENABLED=1) |
list_questions |
Lista preguntas recibidas | Lectura |
answer_question |
Responde una pregunta | Escritura (ML_WRITES_ENABLED=1) |
get_item_metrics |
Métricas: visitas, conversión, salud | Lectura |
manage_ads |
Gestiona Product Ads (activar/pausar/status) | Escritura (ML_WRITES_ENABLED=1) |
get_reputation |
Reputación del vendedor | Lectura |
search_competitors |
Busca productos de la competencia | Lectura |
get_categories |
Categorías y atributos para publicar | Lectura |
price_to_win |
Precio para ganar el buy-box / competencia de catálogo | Lectura |
price_history |
Historial de cambios de precio de una publicación | Lectura |
stockout_risk |
Riesgo de quiebre de stock (días de cobertura + velocidad) | Lectura |
Las 3 últimas (price_to_win, price_history, stockout_risk) se sumaron en la fusión meli-seller-mcp (2026-07-18) — ver más abajo.
En v1.2.0-beta llegan 9 tools más con prefijo ml_* para endpoints validados que faltaban: ml_items_price_to_win, ml_users_items_visits_bulk, ml_products_catalog, ml_products_catalog_items, ml_items_shipping_options, ml_marketplace_benchmarks (con pre-flight Global Selling check), ml_orders_billing, ml_claims_search, ml_stock_fulfillment. Ver spec-capa1-ml-raw.md.
Capa 2 — Knowledge tools (★ nuevo)
Tools que exponen el catálogo TRAID (155+ features auditadas en 10 repos cliente) y conocimiento operativo programáticamente.
Disponibles hoy (prototypes que demuestran el patrón):
traid_feature_lookup(query, limit?, category?)
Busca features reusables. Ej: traid_feature_lookup("repricing") → top 5 con motor-repricing-semaforo-7-estados.md en primer lugar.
traid_client_context(slug?)
Devuelve metadata del cliente actual (seller_ids, schema Supabase, n8n folder, bloqueantes). Auto-detect via TRAID_CLIENT_SLUG env.
TBD en próximas alphas:
traid_pattern_for(use_case)— patrón reusable para un caso de usotraid_gotcha_search(query)— busca gotchas API ML conocidostraid_endpoint_catalog(pattern?)— endpoints validados/rotos/workaroundstraid_sql_snippet(domain)— schemas SQL canónicostraid_stack_advice(component)— recomendación stack TRAID 2026traid_anti_pattern_check(description)— check vs 10 anti-patterns
Spec completo: knowledge/stack/mcp-traid-ml-hub/spec-capa2-traid-knowledge.md.
Capa 0 — Proxy MCP oficial ML
Al boot, conecta al servidor oficial https://mcp.mercadolibre.com/mcp y re-registra sus tools con prefijo official_*. Cuando ML agrega endpoints, los ves automáticamente sin re-buildear.
Tools típicas: official_search_documentation, official_get_documentation_page, official_product_description, official_product_reviews, official_seller_reputation.
Desactivable con ML_SKIP_UPSTREAM_PROXY=1 o TRAID_DISABLE_LAYERS=official.
Setup
Tres modos de autenticación (orden de prioridad — se elige el primero configurado):
Opción A: Supabase (multi-tenant, recomendado v1.1.0+)
{
"mcpServers": {
"traid-ml-hub": {
"command": "npx",
"args": ["-y", "@nahuelalbornoz/mercadolibre-mcp"],
"env": {
"SUPABASE_URL": "https://YOUR_PROJECT.supabase.co",
"SUPABASE_SERVICE_KEY": "${SUPABASE_SERVICE_ROLE_KEY}",
"ML_ACCOUNT_LABEL": "miami",
"ML_TOKEN_TABLE": "oauth_tokens",
"ML_SITE_ID": "MLA",
"TRAID_CLIENT_SLUG": "mi-cliente",
"TRAID_KNOWLEDGE_MODE": "bundled"
}
}
}
}
Schema mínimo esperado de la tabla de tokens:
create table oauth_tokens (
account_label text primary key,
access_token text not null,
refresh_token text,
expires_at timestamptz,
updated_at timestamptz default now()
);
Opción B: Token directo
{
"env": {
"ML_ACCESS_TOKEN": "APP_USR-...",
"ML_SITE_ID": "MLA",
"TRAID_CLIENT_SLUG": "mi-cliente"
}
}
Opción C: Auto-refresh standalone
{
"env": {
"ML_CLIENT_ID": "tu_client_id",
"ML_CLIENT_SECRET": "tu_client_secret",
"ML_REFRESH_TOKEN": "tu_refresh_token",
"ML_SITE_ID": "MLA"
}
}
Env vars v1.2.0+
| Env | Default | Propósito |
|---|---|---|
ML_WRITES_ENABLED |
(vacío = OFF) | Setear 1 o true para habilitar update_price/update_stock/answer_question/manage_ads. Sin esto el server arranca read-only. |
TRAID_CLIENT_SLUG |
(vacío) | Slug del cliente actual. Habilita traid_client_context sin args. |
TRAID_KNOWLEDGE_MODE |
bundled |
bundled (default, snapshot JSON en el paquete) · filesystem (lee del repo CONOCIMIENTO-NAHUEL via TRAID_KNOWLEDGE_PATH) · pinecone (v1.3). |
TRAID_KNOWLEDGE_PATH |
(vacío) | Path al repo CONOCIMIENTO-NAHUEL (solo modo filesystem). |
TRAID_FLOWS_ENABLED |
(vacío) | CSV con nombres de flow_* a registrar. Default vacío = solo Capas 0+1+2+4. |
TRAID_DISABLE_LAYERS |
(vacío) | CSV de capas a deshabilitar (official,ml,traid,flow). |
GCP_PROJECT_ID |
(vacío) | Activa flows que usan Vertex Gemini. Sin esto, los flows W3.* arrancan disabled. |
Env vars existentes v1.1.0 (preservadas): ML_ACCESS_TOKEN, ML_CLIENT_ID, ML_CLIENT_SECRET, ML_REFRESH_TOKEN, ML_SITE_ID, ML_ACCOUNT_LABEL, ML_TOKEN_TABLE, SUPABASE_URL, SUPABASE_SERVICE_KEY, ML_SKIP_UPSTREAM_PROXY.
Sites soportados
| Site ID | País |
|---|---|
| MLA | Argentina |
| MLU | Uruguay |
| MLB | Brasil |
| MLC | Chile |
| MLM | México |
| MCO | Colombia |
| CBT | Global Selling (cross-border) |
Uso desde Claude
"Listame los productos activos"
"Mostrá las órdenes de hoy"
"Actualizá el precio de MLA123456 a $5000"
"Qué preguntas sin responder tengo?"
"Buscá competencia para repuestos de freno Toyota"
# Nuevo en v1.2.0 (Capa 2):
"Buscame features de TRAID relacionadas a OAuth multi-tenant"
"Qué contexto tengo del cliente actual?"
Desarrollo
cd PROYECTOS/mercadolibre-mcp
npm install
npm run build # Compilar TypeScript
npm run build:knowledge # Regenerar data/knowledge.json desde CONOCIMIENTO-NAHUEL
npm run dev # Dev con tsx + reload
Requiere que el repo CONOCIMIENTO-NAHUEL esté en ../CONOCIMIENTO-NAHUEL para build:knowledge.
Tests del knowledge snapshot
node -e "const {searchFeatures} = require('./dist/knowledge/loader.js'); console.log(searchFeatures('repricing', {limit: 3}))"
Seguridad
- Auto-refresh serializado (single-flight + lease CAS): el refresh del token (modo standalone) está serializado in-process — dos refrescos concurrentes ya no revocan la cuenta (el
refresh_tokende ML es de un solo uso). Con Supabase configurado, además se serializa entre procesos/réplicas con un lease compare-and-set (CAS) sobreoauth_tokens(columnasrefresh_in_progress/locked_until). Requiere aplicarmigrations/0001_oauth_tokens_lease.sql(idempotente, RLS inline service_role-only). Sin la migración, el single-flight in-process sigue protegiendo la carrera. Ver la sección "Fusión meli-seller-mcp". - Nunca se loguea el valor de un token, ni truncado. Solo "presente/ausente/rotado".
- Candados de tools (
src/tool-guard.ts), dos independientes, ambos aplicados a todo registro (proxy oficial incluido):- Denylist de compra/destructivas (
buy_*,purchase,checkout,delete,cancel,refund,pay*, en inglés y español) — siempre bloqueada, sin flag que la habilite. - Escritura desactivada por defecto:
update_price,update_stock,answer_questionymanage_adssólo se registran conML_WRITES_ENABLED=1seteado explícitamente en el entorno del cliente MCP. Sin esa env var, el server arranca read-only (10 tools de ML, sin las 4 de escritura).
- Denylist de compra/destructivas (
- El paquete npm no bundlea
data/knowledge.json: el knowledge snapshot (Capa 2) nunca lleva fichas de clientes TRAID (clients: []en el snapshot commiteado) y, además, no viaja en absoluto en el tarball publicado — sólo está disponible corriendo desde el repo local o conTRAID_KNOWLEDGE_MODE=filesystemapuntando a un checkout privado. - Reportar vulnerabilidades: issues del repo o
contacto@traid.agency.
Fusión meli-seller-mcp — 2026-07-18
Este paquete absorbió lo mejor del repo hermano meli-seller-mcp (un MCP read-only más nuevo, con la auth blindada y analytics porteadas de globalstats-haussman), que queda archivado. Qué se trajo:
Absorbido:
- Lease CAS del token (seguridad): el refresh del modo standalone ahora puede serializarse cross-proceso con un lease en la DB, no sólo in-process. Cableado en
src/auth.tssobre helpers desrc/token-store.ts(tryAcquireRefreshLease/releaseRefreshLease/persistRefreshedToken/readTokenRow/waitForFreshDbToken). Se activa cuando hay Supabase configurado;ML_AUTH_MODE=standalonefuerza el auto-refresh aunque haya Supabase (para usar el lease). Migración nueva:migrations/0001_oauth_tokens_lease.sql. - 3 analytics read-only nuevas (Capa 1,
src/tools/), reimplementadas en TypeScript puro con el patrónserver.tool()→contentdel paquete:price_to_win— precio para ganar el buy-box / competencia de catálogo (GET /items/{id}/price_to_win?version=v2).price_history— historial de cambios de precio (GET /pricing-automation/items/{id}/price/history).stockout_risk— riesgo de quiebre de stock: días de cobertura y velocidad de venta, calculado en vivo (órdenes + stock). Suma un helpermlGetAll(paginado offset/limit) asrc/client.ts.
- Candados de tools destructivas/de compra (ver Seguridad).
Qué falta / fuera de alcance:
forecast_demand(pronóstico de demanda Prophet/Python) NO se portó: introduce una dependencia de host (Python +prophet+pandas) que no queremos como dependencia dura en todos los deploys. Queda como trabajo futuro detrás de un flag.- El broker de tokens central: a futuro, el refresh delegará en el token broker de traid-saas (
/internal/v1/token) cuando esté vivo; el lease CAS local queda como defensa propia (funciona sin el broker y lo complementa).
Related
@nahuelalbornoz/mercadolibre-mcp-read— subset read-only (7 tools), sin riesgo de tocar la tienda.- Model Context Protocol — especificación del protocolo.
- Mercado Libre Developers — docs oficiales de la API.
Licencia
MIT
