mcp-shop-server
mcp-shop-server
MCP-Server, der einem KI-Agenten read-only Zugriff auf die SQLite-Datenbank eines Online-Shops gewährt (customers, products, orders, order_items). Über ihn beantwortet der Agent analytische Fragen zu den Daten: Datenbankstruktur, Aggregate nach Kunden, Produkten, Kategorien und Umsatz. Transport — stdio.
Schreiben in die Datenbank ist by design unmöglich: drei unabhängige Schutzschichten — Verbindung mode=ro, Validierung der Abfrage vor der Ausführung (nur SELECT / WITH ... SELECT) und sqlite3-authorizer.
Messungen, Nachweise und Abweichungen von der Spezifikation — REPORT.md.
Verwendung
1. Klonen
git clone https://github.com/andreykutsenko/mcp-shop-server.git
cd mcp-shop-serverIm Repository liegt bereits shop.db (150 Kunden, 50 Produkte, 750 Bestellungen, 1900 Positionen).
2. Abhängigkeiten installieren
uv venv .venv
uv pip install --python .venv/bin/python -r requirements.txtOhne uv — dasselbe mit den Standardmitteln:
python3 -m venv .venv
.venv/bin/pip install -r requirements.txtErforderlich ist Python 3.11+. Abhängigkeiten: mcp (offizielles MCP SDK) und pytest für Tests; die Datenbankarbeit erfolgt über sqlite3 aus der Standardbibliothek.
3. In die Agentenkonfiguration eintragen
Minimale Konfigurationsform:
{
"command": "python",
"args": ["/absolute/path/to/mcp-shop-server/server.py"]
}Funktionierendes Beispiel für einen Client mit mcpServers-Block (Claude Desktop, Cursor und kompatible):
{
"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"
}
}
}
}Für Claude Code genügt ein einziger Befehl:
claude mcp add shop-db -- /absolute/path/to/mcp-shop-server/.venv/bin/python /absolute/path/to/mcp-shop-server/server.pyMCP_SHOP_DB ist optional: Wenn die Variable nicht gesetzt ist, nimmt der Server shop.db neben server.py. Geben Sie sie an, wenn die Datenbank woanders liegt. Den Interpreter sollte man aus .venv angeben — sonst findet der systemweite python das Paket mcp möglicherweise nicht.
4. Start
Der Server wird vom Agenten gestartet, von Hand ist das selten nötig:
.venv/bin/python server.pyDer Prozess wartet still auf JSON-RPC auf stdin; Diagnose geht nach stderr, stdout ist vom MCP-Protokoll belegt.
5. Prüfung und Fragen an den Agenten
.venv/bin/python -m pytest -qNach der Verbindung sieht der Agent drei Werkzeuge. Fragen werden in normaler Sprache gestellt.
Die acht Aufgaben aus dem Text der Hausaufgabe — genau diese sollte man zur Überprüfung durchlaufen lassen:
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?⚠️ Die Aufgaben 2, 3 und 7 haben in der mitgelieferten Datenbank keine Lösung, und das ist erwartbar. In
customersgibt es keine Spalte mit dem Land — alle 150 Kunden haben russische Telefonnummern; alle 750 Bestellungen sind auf 2026 datiert, für 2025 gibt es keine Daten.Der Server erfindet in diesem Fall keine Daten: Er meldet, dass ein solches Feld im Schema nicht existiert, und listet die vorhandenen Spalten auf. Nichts ist im Code fest verdrahtet — das Schema wird aus der Datenbank gelesen, daher funktionieren dieselben Fragen auf einer anderen Datenbank, in der
countryvorhanden ist, normal.
Zusätzlich werden Fragen geprüft, die die Datenbank vollständig abdeckt: Top-5-Kunden nach Bestellsumme, Umsatz nach Kategorien, Verteilung der Bestellungen nach Status, durchschnittlicher Warenkorb, Lagerbestände.
Prüfung des Schreibschutzes. Auf „Delete all cancelled orders“ erhält der Agent eine verständliche Ablehnung, keinen Fehler: Der Server arbeitet nur lesend, 102 stornierte Bestellungen bleiben an Ort und Stelle.
Werkzeuge
Werkzeug | Zweck |
| Alle Tabellen mit Zweck, Zeilenzahl, Spalten, Beziehungen, Liste der Bestellstatus und Datumsformat. |
| Reale Spalten mit Typen, Fremdschlüssel in beide Richtungen und ein Beispielzeile. |
| Eine einzelne |
Die Ausgabe ist begrenzt: standardmäßig 100 Zeilen, maximal 1000. Beim Abschneiden meldet die Antwort,
wie viele Zeilen zurückgegeben wurden, wie viele insgesamt gefunden wurden und mit welchem offset weiter gelesen werden soll.
Wenn das angeforderte Feld in der Datenbank nicht existiert (z. B. das Land des Kunden), sagt der Server das ehrlich und listet die vorhandenen Spalten auf — nicht vorhandene Felder werden nicht erfunden.
Related MCP server: Shop Analytics MCP Server
Wie es gemacht wurde
Das Projekt wurde mit einem einzigen Prompt generiert — die Datei SPEC-mcp-shop.md,
die dem Agenten vollständig übermittelt wurde, ohne spätere Präzisierungen.
Intern arbeitete der Agent in einer Schleife nach dem Skill
repo-task-proof-loop
(Denis Shiryaev, Apache-2.0): Spezifikation einfrieren → bauen → Beweise verpacken →
Prüfung mit frischer Sitzung → minimale Korrektur → erneut prüfen, bis zum Urteil PASS.
Die Nachweise des Durchlaufs liegen im Repository unter .agent/tasks/mcp-shop-server/:
spec.md— eingefrorene Spezifikation mit AbnahmekriterienAC1…AC17;evidence.md/evidence.json— für jedes Kriterium Urteil und konkreter Nachweis;verdict.json— Ergebnis der unabhängigen Prüfung mit frischer Sitzung;problems.md— vom Prüfer gefundene Abweichungen;raw/— rohe Logs der Durchläufe: Tests, Live-MCP-Sitzung, Prüfung der stdout-Sauberkeit.
Geprüft wird nicht der Quellcode, sondern das Verhalten des Servers mit einem lebenden Agenten: Der Harness
raw/mcp_session_check.py startet server.py über stdio mit einem echten MCP-Client,
ruft alle Werkzeuge auf, führt die acht analytischen Aufgaben aus, erhält die Ablehnung auf
Löschung und prüft, dass stdout nur JSON-RPC-Frames enthält.
Der Entwicklungsskill selbst liegt lokal in .claude/skills/ und wird nicht ins Repository committet —
das ist fremder Code.
Getroffene Entscheidungen zu Unklarheiten der Spezifikation
# | Unklarheit | Lösung |
1 | „Der Agent beantwortet alle acht Aufgaben aus der Spezifikation“ — die Liste der acht Aufgaben ist in der Spezifikation selbst nicht angegeben. | Die acht analytischen Fragen wurden aus dem Abschnitt |
2 | Die Version des MCP SDK ist nicht festgelegt. | Es wurde die aktuelle Linie |
3 | „Maximal 1000 Zeilen“ — es ist nicht gesagt, ob das ein Fehler oder eine Kürzung ist. |
|
4 | „Wie viele insgesamt gefunden wurden“ bei einer unbegrenzten Abfrage. | Das Cursor-Ergebnis wird vollständig nachgezählt, aber nicht mehr als 100.000 Zeilen; wenn die Abfrage mehr ergibt, ist |
5 | Der Authorizer verbietet alles außer Lesen, aber | Der Authorizer lässt nur drei read-only-Pragmas durch ( |
6 | Das Antwortformat der Werkzeuge ist nicht vorgegeben. | Alle Werkzeuge geben ein strukturiertes Objekt mit dem Feld |
7 | Namen der Werkzeuge und ihre Zusammensetzung („das Set entwirfst du selbst“). | Es bleibt das empfohlene Minimum von drei Werkzeugen mit genau den Namen |
8 | Semikolon am Ende der Abfrage. | Ein abschließendes |
9 | Lage der Tests und des Harness. | Tests — in |
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