MCP-DB Testprotokoll
Vollständiger Funktionstest aller MCP-DB Features mit 54 Testfällen.
Testübersicht
| Kategorie | Tests | Status |
|---|---|---|
| db_select/basic | 6 | 100% |
| db_select/params | 3 | 100% |
| db_select/db_allow | 4 | 100% |
| db_select/table_allow | 8 | 100% |
| db_select/blocklist | 17 | 100% |
| db_select/limits | 8 | 100% |
| db_schema | 3 | 100% |
| db_stats | 5 | 100% |
| GESAMT | 54 | 100% |
Testmatrix: db_select
Basis-Funktionalität
| Test | Query | Erwartung | Status |
|---|---|---|---|
| Simple SELECT | SELECT 1 as test | success | OK |
| SELECT with columns | SELECT id, status FROM mcp_log | success | OK |
| SELECT with WHERE | SELECT * FROM mcp_log WHERE status = 'success' | success | OK |
| SELECT with ORDER BY | SELECT * FROM mcp_log ORDER BY id DESC | success | OK |
| SELECT with COUNT | SELECT COUNT(*) as total FROM mcp_log | success | OK |
| SELECT with GROUP BY | SELECT status, COUNT(*) FROM mcp_log GROUP BY status | success | OK |
Prepared Statements
| Test | Query | Params | Status |
|---|---|---|---|
| Single param | SELECT * FROM mcp_log WHERE status = %s | ["success"] | OK |
| Multiple params | SELECT * FROM mcp_log WHERE status = %s AND id > %s | ["success", 0] | OK |
| LIKE param | SELECT * FROM mcp_log WHERE request LIKE %s | ["%SELECT%"] | OK |
Database Allowlist
| Database | Erwartung | Status |
|---|---|---|
| ki_protokoll | allowed | OK |
| ki_system | allowed | OK |
| mysql | denied | OK |
| information_schema | denied | OK |
Table Allowlist
| Tabelle | Database | Erwartung | Status |
|---|---|---|---|
| mcp_log | ki_protokoll | allowed | OK |
| protokoll | ki_protokoll | allowed | OK |
| documents | ki_system | allowed | OK |
| chunks | ki_system | allowed | OK |
| content_orders | ki_system | allowed | OK |
| users | - | denied | OK |
| secrets | - | denied | OK |
| mysql.user | - | denied | OK |
Keyword Blocklist (15 Keywords)
| Kategorie | Keyword | Test-Query | Status |
|---|---|---|---|
| DML | DROP | SELECT ...; DROP TABLE x | BLOCKED |
| DML | DELETE | SELECT ...; DELETE FROM x | BLOCKED |
| DML | INSERT | SELECT ...; INSERT INTO x | BLOCKED |
| DML | UPDATE | SELECT ...; UPDATE x SET | BLOCKED |
| DDL | TRUNCATE | SELECT ...; TRUNCATE TABLE | BLOCKED |
| DDL | ALTER | SELECT ...; ALTER TABLE | BLOCKED |
| DDL | CREATE | SELECT ...; CREATE TABLE | BLOCKED |
| DDL | RENAME | SELECT ...; RENAME TABLE | BLOCKED |
| DCL | GRANT | SELECT ...; GRANT ALL | BLOCKED |
| DCL | REVOKE | SELECT ...; REVOKE ALL | BLOCKED |
| File | LOAD_FILE | SELECT LOAD_FILE('/etc/passwd') | BLOCKED |
| File | INTO OUTFILE | SELECT ... INTO OUTFILE | BLOCKED |
| File | INTO DUMPFILE | SELECT ... INTO DUMPFILE | BLOCKED |
| DoS | BENCHMARK | SELECT BENCHMARK(...) | BLOCKED |
| DoS | SLEEP | SELECT SLEEP(10) | BLOCKED |
Word Boundary Tests
| Test | Query | Erwartung | Status |
|---|---|---|---|
| dropdown != DROP | SELECT 'dropdown' as word | success | OK |
| updated_at != UPDATE | SELECT 'updated_at' as col | success | OK |
Limits
| Test | Parameter | Erwartung | Status |
|---|---|---|---|
| max_rows=1 | max_rows=1 | success | OK |
| max_rows=50 | max_rows=50 | success | OK |
| max_rows=100 | max_rows=100 | success (max) | OK |
| max_rows=0 | max_rows=0 | denied | OK |
| max_rows=101 | max_rows=101 | denied (>100) | OK |
| Empty query | query="" | denied | OK |
| Non-SELECT | query="SHOW TABLES" | denied | OK |
| Query > 2000 chars | query=long_string | denied | OK |
Testmatrix: db_schema
| Test | Database | Erwartung | Status |
|---|---|---|---|
| ki_protokoll schema | ki_protokoll | tables[] | OK |
| ki_system schema | ki_system | tables[] | OK |
| mysql denied | mysql | error | OK |
Testmatrix: db_stats
| Test | Parameter | Erwartung | Status |
|---|---|---|---|
| Default limit | limit=50 | logs[] | OK |
| Custom limit | limit=5 | logs[] (5) | OK |
| Max limit | limit=100 | logs[] (max 100) | OK |
| Clamped min | limit=0 | logs[] (clamped to 1) | OK |
| Clamped max | limit=200 | logs[] (clamped to 100) | OK |
Konfiguration
| Parameter | Wert |
|---|---|
| Erlaubte Datenbanken | ki_protokoll, ki_system |
| Erlaubte Tabellen | 29 |
| Blockierte Keywords | 15 |
| Max Query Length | 2000 Zeichen |
| Max Rows | 100 |
| Query Timeout | 30 Sekunden |
Test ausführen
# Comprehensive Test Suite
cd /opt/mcp-servers/mcp-db
source venv/bin/activate
python comprehensive_test.py
# Erwartete Ausgabe:
# GESAMT: 54/54 Tests bestanden (100%)
# STATUS: ALLE TESTS BESTANDEN
Letzte Prüfung
| Datum | Version | Ergebnis |
|---|---|---|
| 2025-12-20 10:29 | Python 3.13.5 | 54/54 (100%) |
Verwandte Kapitel
- Übersicht - Hauptseite
- Sicherheit - Sicherheitskonzept
- Konfiguration - Allowlists