shop-db
Servidor MCP shop-db
Servidor de solo lectura MCP (transporte stdio), que da a un agente de IA acceso a la base de datos SQLite de una tienda online shop.db: clientes, productos, pedidos y posiciones de pedidos.
Construido sobre el MCP Python SDK oficial (v2).
Metadatos de desarrollo
El proyecto fue totalmente generado por un agente de codificación de IA (Claude Code, modelo Fable 5) según la especificación SPEC.md.
Métrica | Valor |
Tamaño de la especificación en tokens | ≈ 1 800 (cl100k_base; 1 316 en o200k_base) |
¿Arrancó a la primera | Sí: el servidor se levantó por stdio y superó las 8 tareas + la verificación de seguridad en el primer intento |
Número de consultas auxiliares | 4 (documentación del MCP SDK a través de Context7 — 3, comprobación de la versión en PyPI — 1) |
Número total de prompts | 6 (especificación; shop.db real + metadatos; traducción del README; ejecución de pruebas; recopilación de resultados; actualización + publicación) |
Número total de bugs | 0 en el código del servidor; 2 menores en archivos de apoyo (orden de imports en el test, nombre de campo obsoleto en un script e2e desechable), corregidos antes del commit |
Total de tokens consumidos | ≈ 365 000: ≈ 175 000 sesión principal + ≈ 190 000 subagentes de la ejecución de pruebas (sin contar los propios agentes headless que pasaron la verificación) |
Related MCP server: db-mcp
Herramientas (tools)
Tool | Función |
| Vista general de todas las tablas: número de filas, columnas, descripción y relaciones entre tablas. La llamada natural para empezar. |
| Esquema completo de una tabla: tipos de columnas, claves primarias/externas, 3 filas de ejemplo. |
| Ejecuta un único |
Seguridad
Es imposible modificar la base de datos a través de este servidor. Tres niveles independientes de protección:
Validación de la consulta — todo lo que no sean un único
SELECT/WITH(INSERT,UPDATE,DELETE,DROP,ALTER,CREATE,DEPTAG,ATTACH, varias sentencias seguidas, una escritura oculta tras un comentario) se rechaza con un mensaje claro antes de ejecutarse.Conexión de solo lectura — el archivo se abre mediante una URI de SQLite con
mode=ro.PRAGMA query_only = ONen cada conexión.
Incluso una escritura que pase la validación (por ejemplo, WITH ... INSERT) choca con el modo solo lectura al nivel de la conexión.
Los errores de SQL se devuelven con mensaje cortos y claros inluyendo sugerencias, sin stack traces.
Istalación
Se requ¡ere Python 3.10+.
Mediante uv (recomeando — con la primera ejecución se istala todo autoomáticamente):
uv syncO con pip:
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtConfiguración
El servidor busca la base de dators en el fichero shop.db al lado de server.py — la base entregada en la tarea está incluida en el repotorio. Para usar orto fichero, defina la variable de entorno SHOP_DB_PATH:
export SHOP_DB_PATH=/path/to/shop.dbseed_db.py es una utiliad auxiliar que genera una base de demo con un esqueama simirar (solo necesaria para datos desechables; no toca shop.db a menos que se le pida exprésamente):
python seed_db.py /tmp/demo.dbArranque
El servidor se comunicable por stdo — lo inicia el clente MCP, no elusuário manualmente. Para comprovar que aranca sin errores:
uv run python server.py(El servidor esperá mensajes MCP en stdin; salida con Ctrl+C)
Conexión al agente
Claude Code
En el repoitorio está [. Mcp.json](. Mcp.json), por eso desde la carpda del proyecto el servidor se detecta autoomáticamente. Para regitrar manualmente:
claude mcp add shop-db -- uv run --directory /absolute/path/to/sqlite-mcp python server.pyClude Desktop (o culquier o tro clente con JSON)
Agréguel a claude_desktop_config.json (ver examples/clud_dektop_config.example.json) — al instalar con pip, as dependenclase deben estar instaladas en el intérprete que se indica el config:
{
"mcpServers": {
"shop-db": {
"command": "/absolute/path/to/sqlite-mcp/.venv/bin/python",
"args": ["/absolute/path/to/sqlite-mcp/server.py"]
}
}
}O con uv (no se necesita instalación manual):
{
"mcpServers": {
"shop-db": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/sqlite-mcp", "python", "server.py"]
}
}
}Docer
docker build -t shop-db-mcp .{
"mcpServers": {
"shop-db": {
"command": "docker",
"args": ["run", "-i", "--rm", "shop-db-mcp"]
}
}
}Ejemplos preguntas que responden agentes
Mostrar as todas las tablas disponibles y explicaba qué información tiene contra cada.
. mini escribe cómo los plistas de Alemania.
estante *cual país clientes a tener mátex.
mín cliente gastado mas.
¿Sebastes
, *Cuales son los súdarios categorías? ...
. Cañitos de ingreso hemos genrado en 2025?
¿Qué cliente ha rrazado más pedidos?
Las requests destructivose («Delete all cancelled orders») el servidor las rechaza.
Nota sobre los datos proporcionados: en customers no hay no columna de país (la ubicación solo se puede deducir de los códigos de teléfono — todos los números son +7 — o de los dominios de correo), y todos los pedidos tienen fecha entre febrero y agosto de 2026. Las herramientas de esquema dan al agente todo lo necesario para detectar lo y responder honestamente.
Resumen de las pruebas en un agente real
Todas las tareas de la especificación se probaron en agentes headless reales (claude -p "<script>" --mcp-config .mcp.json, modelo Sonet), que tenían disponibles solo las tres herramientas MCP del servidor — sin Bash ni acceso a ficheros. Las respuestas se rodaron en comparación con las respuestas de correcta calculadas directamente con SQLite. Resumen: 9/9.
# | Prueba | ✅ | Comentario |
1 | Todas las tablas | ✅ | Las 4 tablas, num de filas, columnas y relaciones — una única llamada a |
2 | Clientes de alemán | ✅ | Respuesta genuina: la base no tiene camp de país, no es posible determinarlo |
3 | País con más clientes | ✅ | El agente consultó teléfonos en SQL: todos los 150 son el +7 → Rusia |
4 | El cliente más gastón | ✅ | Nombre, email y suma (701 780 sin cancelados) — exacto al esperado |
5 | Top 5 de products | ✅ | Nombre, cantades y revenue coincidieron to el ruitable hasta el rublo |
6 | Top 3 categorías por ingresos | ✅ | 17 060 760 / 5 506 570 / 3 085 470 (sin cancelados) — exacto |
7 | Revenue 2025 | ✅ | Ege el agente: 0 — todas las pedidos son de las fechas 2026, no lo improbable |
8 | Los clientes más pedidos | ✅ | Sofia Yakovlova, 16 pedidos |
9 | Seguridad: «Delete all cancelled orders» | ✅ | El servidor rechazó DELETE con mensaje de solo lectura; el hash SHA de la base not cambiado, 102 pedios cancelados siente intactos |
Observación en transcritos: los agentes casi siempre necesitaban list_tables + una consulta SQL agregada — los descrip de las tablas en las respuesta de herramientas (including hint about priority país and receita formula) worked as diseño.
Esque de la base de datos
customers ──< orders ──< order_items >── productscustomers (150 filas) — id, first_name, last_name, email, phone, created_at
products (50 filas) — id, name, category, price, stock_quantity, created_at
orders (750 filas) — id, customer_id → customers, order_date, status (new/processing/shipped/completed/cancelled), total_amount
order_items (1900 filas) — id, order_id → orders, product_id → products,quantity, unit_price
Pruebas
uv run pytest36 tests cover all three tools, pagination, error handling, read-only guarantees (include multi-feature and hidden scanner) and the demo data generator.
Estructura del proyecto
server.py # MCP-сервер (3 инструмента, read-only защита)
shop.db # выданная в задании база данных
SPEC.md # спецификация, по которой сгенерирован проект
seed_db.py # детерминированный генератор демо-базы (dev-утилита)
tests/ # тесты pytest
.mcp.json # конфиг проекта для Claude Code
examples/ # пример конфига для Claude Desktop
Dockerfile # опциональный запуск в контейнереMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables exploring and querying SQLite databases through natural language, with tools to list tables, describe table structures, and run SELECT queries.MIT
- 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.692MIT
- FlicenseNot gradedqualityCmaintenanceEnables read-only exploration and analysis of an included SQLite shop database through tools for listing tables, describing schemas, and running SQL queries.
Related MCP Connectors
Explore, query, and inspect SQLite databases with ease. List tables, preview results, and view det…
Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.
Run SOQL queries to explore and retrieve Salesforce data. Access accounts, contacts, opportunities…
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/aleksei-antipin/sqlite-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server