Skip to main content
Glama

Read-only-MCP-Server für den Shop

Python-MCP-Server per stdio für die vorhandene SQLite-Datenbank des Onlineshops (data/shop.db). Die Datei wird nur schreibgeschützt geöffnet; ändernde SQL-Anweisungen werden abgelehnt und nicht ausgeführt.

Installation

Python 3.11+:

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

Related MCP server: sqlite-mcp-local

Start

Aus dem Projektstammverzeichnis (Standardpfad zur Datenbank — ./data/shop.db):

python -m shop_mcp
# или
shop-mcp

Anderer Pfad zur Datenbank:

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

Der Prozess kommuniziert über MCP via stdin/stdout. Geben Sie keine Befehle in dieses Terminal ein, solange kein MCP-Client angeschlossen ist.

MCP-Konfiguration in Cursor

Fügen Sie den Eintrag mcpServers hinzu (Cursor Settings → MCP oder .cursor/mcp.json im Projekt). Transport — stdio.

In den Beispielen ist der Pfad ~/my/test-mcp-db dieses Repository. SHOP_DB_PATH wird vom Server selbst aufgelöst (~ → Home-Verzeichnis). Wenn Cursor ~ in command / cwd nicht auflöst, geben Sie dort /Users/<вы>/my/test-mcp-db/... an.

Lokal (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"
      }
    }
  }
}

Falls nach pip install -e . ein Konsolenskript bequemer ist:

{
  "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

Das Image einmal erstellen:

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"
      ]
    }
  }
}

Das Flag -i ist erforderlich, damit stdio verbunden bleibt. Mounten Sie nur shop.db; der Container darf die Datei auf dem Host nicht überschreiben.

Werkzeuge

Tool

Zweck

list_tables

Benutzerdefinierte Tabellen und eine kurze Rollenbeschreibung (sqlite_sequence wird nicht angezeigt)

describe_table

Tatsächliche Spalten, Typen, PK/FK

execute_readonly_sql

Ein SELECT / WITH / EXPLAIN; limit (Standard 100, Maximum 1000) und offset

shop_analytics

Bewertungen und Jahresumsatz pro Jahr ohne manuelles SQL

Summen, Stückzahlen und Umsatz werden als order_items.quantity * order_items.unit_price berechnet; Bestellungen mit dem Status cancelled werden ausgeschlossen. Das Kalenderjahr wird aus strftime('%Y', orders.order_date) übernommen.

Sicherheit

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

  • Kommentare werden entfernt; Befehlsketten (SELECT 1; DELETE ...) werden abgelehnt

  • INSERT / UPDATE / DELETE / DROP / ALTER / CREATE / ATTACH / PRAGMA / … → expliziter Fehler „nicht erlaubt“

  • SQLite-Syntaxfehler und unbekannte Spalten werden strukturiert zurückgegeben; der Prozess wird nicht beendet

Hinweise zur Bewertung

  • customers hat keine Spalte country. Dies ist über describe_table sichtbar; Geografie darf nicht erfunden werden. SELECT country FROM customers ergibt einen SQLite-Fehler.

  • Die Bestelltermine im aktuellen Dump stammen aus dem Jahr 2026. Der Umsatz für 2025 kann 0 sein. Das ist eine korrekte Antwort und kein defekter Filter.

Tests

pytest

Die Tests kopieren data/shop.db in eine temporäre Datei und prüfen, dass sich der Hash der Kopie nach abgelehnten Schreibvorgängen nicht ändert.

Beispiel ausgeführter Abfrage

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