Skip to main content
Glama

Servidor MCP de solo lectura para la tienda

Servidor MCP de Python para stdio de una base de datos SQLite existente de tienda en línea (data/shop.db). El archivo se abre únicamente en modo lectura; cualquier SQL que la modifique se rechaza y no se ejecuta.

Instalación

Python 3.11+:

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Related MCP server: sqlite-mcp-local

Ejecución

Desde la raíz del proyecto (la ruta por defecto de la base de datos es ./data/shop.db):

python -m shop_mcp
# или
shop-mcp

Otra ruta a la base de datos:

SHOP_DB_PATH=~/my/test-mcp-db/data/shop.db python -m shop_mcp

El proceso se comunica por MCP a través de stdin/stdout. No introduzca comandos en este terminal mientras hasta que un cliente MCP esté conectado a él.

Config MCP en Cursor

Añada la entrada mcpServers (Cursor Settings → MCP ou .cursor/mcp.json en el proyecto). El transporte es stdio.

En los ejemplos, la ruta ~/my/test-mcp-db — es este repositorio. El servidor expande SHOP_DB_PATH por sí mismo (~ → directorio personal). Si Cursor no expande ~ en command / cwd, indique allí /Users/<вы>/my/test-mcp-db/....

Localmente (venv)

{
  "mcpServers": {
    "shop": {
      "command": "~/my/test-mcp-db/.venv/bin/python",
      "args": ["-m", "shop_mcp"],
      "cwd": "~/my/test-mcp-db",
      "env": {
        "SHOP_DB_PATH": "~/my/test-mcp-db/data/shop.db"
      }
    }
  }
}

Si tras pip install -e . prefiere un script de consola:

{
  "mcpServers": {
    "shop": {
      "command": "~/my/test-mcp-db/.venv/bin/shop-mcp",
      "cwd": "~/my/test-mcp-db",
      "env": {
        "SHOP_DB_PATH": "~/my/test-mcp-db/data/shop.db"
      }
    }
  }
}

Docker

Construya la imagen una sola vez:

docker build -t shop-mcp .
{
  "mcpServers": {
    "shop": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "~/my/test-mcp-db/data/shop.db:/data/shop.db:ro",
        "-e",
        "SHOP_DB_PATH=/data/shop.db",
        "shop-mcp"
      ]
    }
  }
}

El flag -i es obligatorio para que stdio permanezca conectado. Montedir solo shop.db; el contenedor no debe sobrescribir el archivo en el host.

Herramientas

Tool

Propósito

list_tables

Tablas de usuario y una breve descripción de su rol (sqlite_sequence no se muestra)

describe_table

Columnas reales, tipos, PK/FK

execute_readonly_sql

Una sola consulta SELECT / WITH / EXPLAIN; limit (por defecto 100, máximo 1000) y offset

shop_analytics

Clasificaciones y ingresos por año sin SQL manual

Los importes, las unidades y los ingresos se calculan como order_items.quantity * order_items.unit_price; los pedidos con estado cancelled se descartan. El año natural se toma de strftime('%Y', orders.order_date).

Seguridad

  • SQLite URI file:<abs>?mode=ro

  • Los comentarios se eliminan; las cadenas de consultas (SELECT 1; DELETE ...) se rechazan.

  • INSERT / UPDATE / DELETE / DROP / ALTER / CREATE / ATTACH / PRAGMA / … → error explícito «no permitido».

  • Los errores de sintaxis de SQLite y las columnas desconocidas se devuelven de forma estructurada; el proceso no se detiene.

Notas para la evaluación

  • La tabla customers no tiene columna country. Esto se ve a través de describe_table; la geografía no se debe inventar. SELECT country FROM customers devolverá un error de SQLite.

  • Las fechas de los pedidos en el volcado actual son de 2026. Los ingresos de 2025 pueden ser 0. Esa es una respuesta correcta, no un filtro roto.

Pruebas

pytest

Las pruebas copian data/shop.db a un archivo temporal y verifican que el hash de la copia no cambia después de rechazar escrituras.

Ejemplo de consulta procesada

screenshot.png

Install Server
F
license - not found
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
    Not graded
    quality
    C
    maintenance
    A read-only MCP server that enables LLMs to safely explore and query any SQLite database via natural language. It exposes tools for listing tables, describing schemas, and executing SELECT/WITH queries with built-in safety guards like write prevention and row limits.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only querying of a local SQLite database via MCP, with tools to list tables, retrieve schema, and execute SELECT/WITH/EXPLAIN queries.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides read-only access to a sales database, letting LLMs answer analytics questions like revenue by region or top customers via MCP tools.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language sales queries against a SQLite database, generating and executing read-only SQL through a secure MCP server with table listing, schema description, and query execution.

View all related MCP servers

Related MCP Connectors

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

  • Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.

  • Explore, query, and inspect SQLite databases with ease. List tables, preview results, and view det…

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/DrZeD-13/test-mcp-db'

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