Skip to main content
Glama
bssoft2b

marketplace-mcp

by bssoft2b

marketplace-mcp

Un servidor MCP que permite a los agentes de IA trabajar con cuentas de vendedor de Wildberries / Ozon / Yandex Market: herramientas de lectura tipadas, soporte multi-cuenta, normalización de datos, limitación de frecuencia, auditoría y credenciales cifradas. No es un proxy genérico: las herramientas tienen un espacio de nombres por marketplace (wb_*, ozon_*, ym_*), cada una comprueba los permisos de conexión y devuelve una única forma normalizada.

Estado: v0.3 — superficie de LECTURA en los tres marketplaces. Núcleo, los adaptadores de WB / Ozon / Yandex Market, 17 herramientas. Aún no implementado: ESCRITURA con vista previa/confirmación, recopiladores de historial, publicidad y finanzas. Consulta la hoja de ruta.

El propósito de este proyecto

Una pregunta, una forma de respuesta, independientemente de la plataforma. Los tres marketplaces modelan productos, existencias y pedidos de forma incompatible: en WB una fila de existencias es "una talla en un almacén", en Ozon es "un producto con una matriz de tipos fbo/fbs", en Yandex Market es "almacén → producto → tipos de existencias (AVAILABLE/FREEZE/DEFECT/…)". Este servidor reduce todo a un único esquema, de modo que un agente puede preguntar "¿qué se está agotando?" y obtener una respuesta que cubre tres cuentas:

unified stock list: 9 rows from 3 marketplaces
low stock: wildberries/ZR-002=7, ozon/ZR-002=3
ym dual-path stocks ok: 1 FBS (account) + 2 FBO (shop)

Eso no es una ilustración: es la salida de npm test, que ejecuta los tres adaptadores a través de los mismos esquemas zod.

La segunda línea muestra una peculiaridad honesta de la plataforma: Yandex Market divide las existencias entre dos métodos de API, y una sola llamada físicamente no puede cubrir ambos tipos de almacén. Por lo tanto, una consulta combinada entre tres cuentas devuelve solo los almacenes de vendedor de Yandex Market hasta que el agente pregunte también por los almacenes de Market. El servidor no oculta esto detrás de una agregación "cómoda" que descartaría existencias silenciosamente.

Related MCP server: Yandex Market Seller MCP Server

Inicio rápido sin claves de API (demo)

Sin base de datos, sin tokens: sin DATABASE_URL el servidor arranca con un almacén en memoria y cuentas de vendedor simuladas para los tres marketplaces, rellenas con datos realistas.

npm install
npm run dev            # stdio transport

Conéctalo a Claude Code:

claude mcp add marketplace -- npx tsx /path/to/marketplace-mcp/src/index.ts

Luego pregunta en el chat: "muestra mis conexiones", "¿qué se está quedando sin existencias? — revisa todos los marketplaces", "compara los precios de ZR-002 en las tres cuentas", "¿cuántos pedidos hay esta semana en total?".

Conexión de cuentas de vendedor reales

Las credenciales pueden venir del entorno (modo demo, sin base de datos) o almacenarse cifradas en PostgreSQL (producción).

WB_API_TOKEN=...                          # Wildberries
OZON_CLIENT_ID=... OZON_API_KEY=...       # Ozon
YM_API_KEY=...                            # Yandex Market
npm run dev

Cada plataforma autentica de forma distinta, que es exactamente por qué las credenciales se almacenan como un conjunto de claves en lugar de una única columna de token:

Marketplace

Autenticación

Dónde obtenerla

Wildberries

Cabecera Authorization: <token> (sin prefijo Bearer)

Panel del vendedor → Ajustes → Acceso a la API

Ozon

dos cabeceras: Client-Id + Api-Key

Panel del vendedor → Ajustes → API de vendedor

Yandex Market

Cabecera Api-Key: <key>

Panel del vendedor → Módulos de API → Tokens de autorización

connection_test valida la clave e informa de lo que realmente es accesible: por categoría de API en WB, y la lista de cuentas de negocio y tiendas en Yandex Market.

Entornos de prueba

Ninguno de los tres marketplaces entrega credenciales de prueba públicas: cada sandbox está vinculado a una cuenta de vendedor. Lo que realmente existe:

Marketplace

Sandbox

Cómo acceder

Wildberries

Sí: hosts *-api-sandbox.wildberries.ru separados con datos de prueba generados

El token de sandbox se crea en el panel del vendedor por separado del de producción. Compatible mediante WB_SANDBOX=1

Ozon

Sí: el entorno de prueba replica los métodos de la API de vendedor y está aislado de los datos reales

Requiere Client-Id y Api-Key de un panel de vendedor

Yandex Market

No hay entorno separado; en su lugar hay pedidos de prueba dentro del panel real (entregados con fake: true)

Panel del vendedor → Módulos de API → Pedido de prueba

Una advertencia sobre WB está integrada en el código: no todas las categorías tienen sandbox. "Analítica" no tiene, y ahí es donde viven las existencias, así que en modo sandbox wb_stocks_get habla con la API de producción. El servidor no finge que el aislamiento sea completo: el indicador sandbox es visible en connections_list, y marketplace_capabilities devuelve una sandbox_warning explícita. Todo es de solo lectura, por lo que la cuenta nunca se modifica.

Modo producción

cp .env.example .env    # MASTER_KEY and MCP_AUTH_TOKEN: openssl rand -hex 32
docker compose up --build

Levanta PostgreSQL con migraciones automáticas junto con el servidor en Streamable HTTP: POST /mcp, salud en GET /health.

Seguridad del transporte. Estas herramientas se sitúan delante de las claves de cuentas de vendedor de otras personas, por lo que /mcp está protegido por un token de portador (MCP_AUTH_TOKEN) y validación de Origin (MCP_ALLOWED_ORIGINS, defensa contra DNS rebinding). Sin MCP_AUTH_TOKEN, el servidor se vincula deliberadamente solo a 127.0.0.1 y avisa de ello. En compose, el puerto se publica en loopback: expónlo a través de un proxy inverso TLS. Las claves de cuenta se almacenan como texto cifrado AES-256-GCM; la clave maestra vive fuera de la base de datos.

Arquitectura

MCP client (Claude / ChatGPT / agent)
        │  stdio | Streamable HTTP (stateless, POST /mcp, bearer + Origin)
        ▼
   MCP server ── shared tools: connections_list, connection_test, marketplace_capabilities
        │
        ├─ core: store (Postgres/in-memory) · secrets (AES-GCM) · rate limiter
        │        (token bucket per marketplace+connection+endpoint group) ·
        │        retries (backoff+jitter) · audit (tool_calls) · unified error model
        │
        ├─ adapters/common/schema.ts — THE single normalized schema for all platforms
        │
        ├─ adapters/wb    — Content / Analytics / Statistics / Discounts-Prices APIs
        ├─ adapters/ozon  — Seller API (all methods POST, last_id cursor)
        └─ adapters/ym    — Partner API (businessId → campaignId)

Principios fundamentales:

  • Un único esquema para cada plataforma y para los mocks: adapters/common/schema.ts es la única fuente de verdad. Los esquemas sirven también como outputSchemas de las herramientas, de modo que el SDK valida las respuestas, y la suite de pruebas ejecuta además los mapeos de la API real a través de ellos. La deriva de formas falla en tiempo de compilación o en las pruebas, no en la cuenta del cliente.

  • Multi-cuenta: cuando existen varias conexiones para un marketplace y se omite connection_id, el servidor devuelve AMBIGUOUS_CONNECTION con la lista, nunca una elección silenciosa. La misma regla se aplica a las cuentas de negocio de Yandex Market (businessId).

  • FBO y FBS nunca se fusionan: en las tres plataformas son filas separadas con un fulfillment_model explícito, no un número combinado.

  • Modelo de error unificado: AUTH_FAILED, MARKETPLACE_PERMISSION_DENIED, RATE_LIMITED (con retry_after_ms), UPSTREAM_TIMEOUT, … — códigos legibles por IA que llevan un indicador retryable.

  • Dinero como cadenas decimales con una moneda, fechas en UTC ISO 8601, y un único contrato de paginación limit/cursor superpuesto a tres mecanismos diferentes (cursor de WB, last_id de Ozon, nextPageToken de Yandex Market).

  • Los secretos nunca se registran y nunca aparecen en respuestas, errores o el registro de auditoría; solo el texto cifrado llega a la base de datos.

Herramientas (17)

Herramienta

Propósito

connections_list / connection_get

cuentas de vendedor conectadas, nunca secretos

connection_test

comprobación de clave: por categoría de API en WB, con la lista de tiendas en Yandex Market

marketplace_capabilities

a qué puede acceder el agente, qué credenciales y ámbitos se requieren

wb_products_list · wb_stocks_get · wb_prices_get · wb_orders_list

Wildberries

ozon_products_list · ozon_stocks_get · ozon_prices_get · ozon_orders_list

Ozon

ym_campaigns_list · ym_products_list · ym_stocks_get · ym_prices_get · ym_orders_list

Yandex Market

ym_campaigns_list existe debido al modelo de dos niveles de Yandex Market: una cuenta de negocio (businessId) contiene tiendas (campaignId), y diferentes métodos necesitan identificadores distintos.

Cumplimiento de la API de los marketplaces (verificado el 2026-08-28)

Las rutas, los hosts y los límites se comprobaron contra las especificaciones oficiales en lugar de escribirse de memoria.

Wildberries — de las especificaciones oficiales de OpenAPI:

Grupo

Host

Límite

Contenido

content-api.wildberries.ru

100/min

Precios y descuentos

discounts-prices-api.wildberries.ru

10/6s

Estadísticas

statistics-api.wildberries.ru

1/min

Analítica

seller-analytics-api.wildberries.ru

3/min

  • GET /api/v1/supplier/stocks se desactivó el 2026-06-23. Las existencias ahora provienen de POST /api/analytics/v1/stocks-report/wb-warehouses (FBO) y .../seller-warehouses (FBS); el token necesita la categoría "Analítica".

  • El nuevo método no devuelve el artículo del vendedor (solo nmId), por lo que seller_sku se enriquece desde las tarjetas de producto.

  • La autorización es el token sin procesar sin prefijo Bearer: la especificación declara un esquema de seguridad apiKey, y la palabra Bearer nunca aparece en las especificaciones de WB.

Ozonapi-seller.ozon.ru, cada método es un POST, paginación por cursor last_id. Usa /v3/product/list, /v3/product/info/list, /v4/product/info/stocks, /v5/product/info/prices (v4 está obsoleto), /v2/posting/fbo/list, /v3/posting/fbs/list. A fecha de agosto de 2026, ninguno de estos tiene aviso de descontinuación. Ozon no publica una especificación OpenAPI pública, por lo que el contrato se ensambló a partir de documentación y clientes mantenidos; esta es la parte que más necesita verificación con una clave real. Verificado en vivo: Ozon reporta credenciales incorrectas con HTTP 400 (code: 5 / code: 16), no 401, y el cliente lo mapea a AUTH_FAILED.

Yandex Marketapi.partner.market.yandex.ru, de la especificación oficial de OpenAPI (github.com/yandex-market/yandex-market-partner-api). Límites tomados de la especificación: GET /v2/campaigns 1000/hora, POST /v3/businesses/{id}/offers/stocks 500/min, POST /v1/businesses/{id}/orders 10000/hora (máx. 50 pedidos por respuesta, ventana ≤30 días). El estado no estándar 420 se trata como límite de frecuencia.

Yandex Market divide las existencias entre dos métodos, algo que el adaptador maneja: POST /v3/businesses/{id}/offers/stocks cubre los almacenes de vendedor (FBS/DBS/Express, y solo funciona sin grupos de almacenes), mientras que POST /v2/campaigns/{campaignId}/offers/stocks cubre los almacenes de Market (FBY → FBO) y es la única vía que funciona cuando existen grupos de almacenes. ym_stocks_get elige la ruta correcta según si se pasó campaign_id; para ver todas las existencias, la herramienta se llama dos veces, algo que se indica explícitamente en su descripción para el agente.

Lo que sigue sin verificar. Los cuerpos de respuesta reales de las tres plataformas: las especificaciones describen el contrato, pero solo una clave real confirma que la producción coincide en cada campo; para eso están previstas pruebas de contrato sobre respuestas grabadas. Ozon es el eslabón más débil (sin especificación pública). También deliberadamente fuera del alcance de v0.3: la marca del producto en Ozon (vive en atributos, una llamada separada) y los nombres de almacén en Ozon y Yandex Market (directorios separados); esos campos devuelven null en lugar de inventarse.

Hoja de ruta

Etapa

Alcance

Estado

1. Núcleo

conexiones, secretos, permisos, auditoría, límites de peticiones, modelo de error

2. Lectura de Wildberries

productos / stocks / precios / pedidos

3. Lectura de Ozon

Seller API: productos / stocks / precios / pedidos FBO+FBS

4. Lectura de Yandex Market

campañas / productos / stocks / precios / pedidos

4b. Lectura ampliada

finanzas, reseñas, publicidad (Ozon Performance API, WB Advert)

5. Recopiladores de historial

worker de instantáneas de precio/stock (tablas ya existentes en el esquema)

6–7. Escritura

vista previa/ejecución en seco → confirmación → ejecución; límites de política; idempotencia

Pruebas

npm test

Sin dependencias externas — un par MCP cliente↔servidor vinculado en memoria. Cubre: tools/list y la presencia de outputSchema en las 12 herramientas de datos, datos simulados para tres plataformas, paginación, separación FBO/FBS, el modelo de error unificado, auditoría, ausencia de secretos en las respuestas, normalización entre marketplaces (3 plataformas × 4 tipos de entidad mediante un mismo conjunto de esquemas), fusión de stocks de tres cuentas en una sola lista, ambas rutas de stock de Yandex Market (FBS de cuenta y FBO de tienda), enrutamiento del host de sandbox de WB (incluidas las categorías que no tienen sandbox), los mapeos de las API reales para WB / Ozon / Yandex Market frente a los esquemas compartidos y el comportamiento del limitador de peticiones.

Los títulos de producto y los nombres de almacén simulados se dejan deliberadamente en ruso: eso es lo que devuelven las API reales de los marketplaces, por lo que la demo se mantiene fiel a los datos de producción.

Licencia

MIT

A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Wildberries Seller API MCP server providing 15 tools for managing products, prices, stocks, orders, sales, warehouses, supplies, statistics, feedbacks, and ABC analysis with built-in rate limiting and 409 penalty protection.
    30
    44
    12
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    AI-доступ к кабинетам Wildberries и Ozon через MCP-сервера над Seller API. Обеспечивает 793 метода для управления продажами, остатками, ценами, финансами, отзывами и рекламой с safety-гейтом и авто-пагинацией.
    58
    17
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to read and write MoySklad inventory, orders, reports, and documents via JSON API 1.2 with safety gates.

View all related MCP servers

Related MCP Connectors

  • SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • 60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bssoft2b/marketplace-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server