mcp-shop-server
mcp-shop-server
Servidor MCP que da al agente de IA acceso de solo lectura a la base de datos SQLite de una tienda en línea
(customers, products, orders, order_items). A través de él, el agente responde a preguntas analíticas
sobre los datos: estructura de la base, agregados por clientes, productos, categorías e ingresos.
El transporte es stdio.
La escritura en la base es imposible por diseño: tres capas de protección independientes: conexión mode=ro,
validación de la consulta antes de la ejecución (solo SELECT / WITH ... SELECT) y sqlite3-authorizer.
Mediciones, pruebas y desviaciones del pliego de condiciones — en REPORT.md.
Uso
1. Clonar
git clone https://github.com/andreykutsenko/mcp-shop-server.git
cd mcp-shop-serverEn el repositorio ya está shop.db (150 clientes, 50 productos, 750 pedidos, 1900 posiciones).
2. Instalar dependencias
uv venv .venv
uv pip install --python .venv/bin/python -r requirements.txtSin uv — lo mismo con las herramientas estándar:
python3 -m venv .venv
.venv/bin/pip install -r requirements.txtSe requiere Python 3.11+. Dependencias: mcp (SDK oficial de MCP) y pytest para las pruebas;
el trabajo con la base — con sqlite3 de la biblioteca estándar.
3. Configurar en el agente
Forma mínima de configuración:
{
"command": "python",
"args": ["/absolute/path/to/mcp-shop-server/server.py"]
}Ejemplo funcional para un cliente con el bloque mcpServers (Claude Desktop, Cursor y compatibles):
{
"mcpServers": {
"shop-db": {
"command": "/absolute/path/to/mcp-shop-server/.venv/bin/python",
"args": ["/absolute/path/to/mcp-shop-server/server.py"],
"env": {
"MCP_SHOP_DB": "/absolute/path/to/mcp-shop-server/shop.db"
}
}
}
}Para Claude Code basta un solo comando:
claude mcp add shop-db -- /absolute/path/to/mcp-shop-server/.venv/bin/python /absolute/path/to/mcp-shop-server/server.pyMCP_SHOP_DB es opcional: si la variable no está definida, el servidor toma shop.db junto a
server.py. Indíquela si la base está en otro lugar. Es mejor indicar el intérprete
desde .venv — de lo contrario, el python del sistema puede no encontrar el paquete mcp.
4. Ejecución
El servidor lo inicia el agente; manualmente rara vez se necesita:
.venv/bin/python server.pyEl proceso espera en silencio JSON-RPC en stdin; el diagnóstico va a stderr, stdout está ocupado por el protocolo MCP.
5. Verificación y preguntas al agente
.venv/bin/python -m pytest -qTras la conexión, el agente ve tres herramientas. Las preguntas se formulan en lenguaje natural.
Ocho tareas del texto de la tarea — son las que conviene ejecutar para la verificación:
1. Show me all available tables and explain what information each table contains.
2. How many customers are from Germany?
3. Which country has the most customers?
4. Who is the customer who spent the most money?
5. What are the top 5 best-selling products?
6. What are the top 3 product categories by revenue?
7. How much revenue did we generate in 2025?
8. Which customer placed the most orders?⚠️ Las tareas 2, 3 y 7 en la base suministrada no tienen solución, y esto es esperable. En
customersno hay columna de país — los 150 clientes tienen teléfonos rusos; los 750 pedidos están fechados en 2026, no hay datos de 2025.En este caso, el servidor no inventa datos: informa que ese campo no existe en el esquema y enumera las columnas existentes. Nada está codificado — el esquema se lee de la base, por lo que en otra base donde
countryexista, las mismas preguntas funcionarán con normalidad.
Además se verifican preguntas que la base cubre por completo: top-5 clientes por importe de pedidos, ingresos por categorías, distribución de pedidos por estados, ticket medio, existencias de productos.
Verificación de la protección contra escritura. Ante «Delete all cancelled orders» el agente recibe una negativa clara, no un error: el servidor solo funciona en lectura, los 102 pedidos cancelados permanecen en su lugar.
Herramientas
Herramienta | Función |
| Todas las tablas con su propósito, número de filas, columnas, relaciones, lista de estados de pedidos y formato de fechas. |
| Columnas reales con tipos, claves externas en ambas direcciones y un ejemplo de fila. |
| Ejecutar un |
La salida está limitada: por defecto 100 filas, máximo 1000. Al truncar, la respuesta informa
cuántas filas se devolvieron, cuántas se encontraron en total y con qué offset seguir leyendo.
Si el campo solicitado no existe en la base (por ejemplo, el país del cliente), el servidor lo dice honestamente y enumera las columnas existentes — no inventa campos inexistentes.
Related MCP server: Shop Analytics MCP Server
Cómo está hecho
El proyecto se generó con un solo prompt — el archivo SPEC-mcp-shop.md,
enviado al agente completo, sin aclaraciones posteriores.
Internamente, el agente trabajó en un ciclo según la habilidad
repo-task-proof-loop
(Denis Shiryaev, Apache-2.0): congelación de la especificación → construcción → empaquetado de pruebas →
verificación con una sesión nueva → corrección mínima → verificación de nuevo, hasta el veredicto PASS.
Las pruebas de la ejecución están en el repositorio, en .agent/tasks/mcp-shop-server/:
spec.md— especificación congelada con criterios de aceptaciónAC1…AC17;evidence.md/evidence.json— para cada criterio, veredicto y prueba concreta;verdict.json— resultado de la verificación independiente con una sesión nueva;problems.md— discrepancias encontradas por el verificador;raw/— registros brutos de las ejecuciones: pruebas, sesión MCP en vivo, verificación de la limpieza de stdout.
No se verifica el código fuente, sino el comportamiento del servidor con un agente real: el harness
raw/mcp_session_check.py levanta server.py por stdio con un cliente MCP real,
llama a todas las herramientas, ejecuta las ocho tareas analíticas, recibe la negativa ante el
borrado y comprueba que stdout contenga solo marcos JSON-RPC.
La propia habilidad de desarrollo está localmente en .claude/skills/ y no se commitea al repositorio —
es código de terceros.
Decisiones tomadas sobre ambigüedades del pliego
# | Ambigüedad | Decisión |
1 | «El agente responde a las ocho tareas del pliego» — la lista de las ocho tareas no se da en el pliego. | Las ocho preguntas analíticas se deducen de la sección |
2 | La versión del SDK de MCP no está fijada. | Se toma la línea actual |
3 | «Máximo 1000 filas» — no se dice si es un error o un truncamiento. |
|
4 | «Cuántas se encontraron en total» con una consulta sin límite. | El resultado del cursor se calcula por completo, pero no más de 100 000 filas; si la consulta devuelve más, |
5 | El authorizer prohíbe todo excepto lectura, pero | El authorizer solo permite tres pragmas de solo lectura ( |
6 | El formato de respuesta de las herramientas no está definido. | Todas las herramientas devuelven un objeto estructurado con el campo |
7 | Los nombres de las herramientas y su composición («el conjunto lo diseñas tú»). | Se mantiene el mínimo recomendado de tres herramientas exactamente con los nombres |
8 | Punto y coma al final de la consulta. | Se permite el |
9 | Ubicación de las pruebas y el harness. | Las pruebas están en |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Ask questions across Shopify, Klaviyo, GA4 and 20+ e-commerce sources in plain English.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Read-only zobrx e-commerce data: P&L, orders, inventory, marketplace, tax & shelf insights.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to safely interact with a SQLite shop database through schema discovery, read-only SQL queries, and pre-built analytics reports like top customers, top products, and revenue summaries.683MIT
- FlicenseAqualityCmaintenanceEnables AI agents to answer analytical questions about an online store's SQLite database through specialized read-only tools, without any risk of modifying the underlying data.8
- FlicenseAqualityCmaintenanceEnables AI agents to read-only query an online store's SQLite database, listing tables, inspecting schemas, and running SELECT queries over customers, products, orders, and order items.3
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to read-only analyze a SQLite e-commerce database, exploring schema and running analytical SQL queries over stdio.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/andreykutsenko/mcp-shop-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server