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

TestQueryErwartungStatus
Simple SELECTSELECT 1 as testsuccessOK
SELECT with columnsSELECT id, status FROM mcp_logsuccessOK
SELECT with WHERESELECT * FROM mcp_log WHERE status = 'success'successOK
SELECT with ORDER BYSELECT * FROM mcp_log ORDER BY id DESCsuccessOK
SELECT with COUNTSELECT COUNT(*) as total FROM mcp_logsuccessOK
SELECT with GROUP BYSELECT status, COUNT(*) FROM mcp_log GROUP BY statussuccessOK

Prepared Statements

TestQueryParamsStatus
Single paramSELECT * FROM mcp_log WHERE status = %s["success"]OK
Multiple paramsSELECT * FROM mcp_log WHERE status = %s AND id > %s["success", 0]OK
LIKE paramSELECT * FROM mcp_log WHERE request LIKE %s["%SELECT%"]OK

Database Allowlist

DatabaseErwartungStatus
ki_protokollallowedOK
ki_systemallowedOK
mysqldeniedOK
information_schemadeniedOK

Table Allowlist

TabelleDatabaseErwartungStatus
mcp_logki_protokollallowedOK
protokollki_protokollallowedOK
documentski_systemallowedOK
chunkski_systemallowedOK
content_orderski_systemallowedOK
users-deniedOK
secrets-deniedOK
mysql.user-deniedOK

Keyword Blocklist (15 Keywords)

KategorieKeywordTest-QueryStatus
DMLDROPSELECT ...; DROP TABLE xBLOCKED
DMLDELETESELECT ...; DELETE FROM xBLOCKED
DMLINSERTSELECT ...; INSERT INTO xBLOCKED
DMLUPDATESELECT ...; UPDATE x SETBLOCKED
DDLTRUNCATESELECT ...; TRUNCATE TABLEBLOCKED
DDLALTERSELECT ...; ALTER TABLEBLOCKED
DDLCREATESELECT ...; CREATE TABLEBLOCKED
DDLRENAMESELECT ...; RENAME TABLEBLOCKED
DCLGRANTSELECT ...; GRANT ALLBLOCKED
DCLREVOKESELECT ...; REVOKE ALLBLOCKED
FileLOAD_FILESELECT LOAD_FILE('/etc/passwd')BLOCKED
FileINTO OUTFILESELECT ... INTO OUTFILEBLOCKED
FileINTO DUMPFILESELECT ... INTO DUMPFILEBLOCKED
DoSBENCHMARKSELECT BENCHMARK(...)BLOCKED
DoSSLEEPSELECT SLEEP(10)BLOCKED

Word Boundary Tests

TestQueryErwartungStatus
dropdown != DROPSELECT 'dropdown' as wordsuccessOK
updated_at != UPDATESELECT 'updated_at' as colsuccessOK

Limits

TestParameterErwartungStatus
max_rows=1max_rows=1successOK
max_rows=50max_rows=50successOK
max_rows=100max_rows=100success (max)OK
max_rows=0max_rows=0deniedOK
max_rows=101max_rows=101denied (>100)OK
Empty queryquery=""deniedOK
Non-SELECTquery="SHOW TABLES"deniedOK
Query > 2000 charsquery=long_stringdeniedOK

Testmatrix: db_schema

TestDatabaseErwartungStatus
ki_protokoll schemaki_protokolltables[]OK
ki_system schemaki_systemtables[]OK
mysql deniedmysqlerrorOK

Testmatrix: db_stats

TestParameterErwartungStatus
Default limitlimit=50logs[]OK
Custom limitlimit=5logs[] (5)OK
Max limitlimit=100logs[] (max 100)OK
Clamped minlimit=0logs[] (clamped to 1)OK
Clamped maxlimit=200logs[] (clamped to 100)OK

Konfiguration

ParameterWert
Erlaubte Datenbankenki_protokoll, ki_system
Erlaubte Tabellen29
Blockierte Keywords15
Max Query Length2000 Zeichen
Max Rows100
Query Timeout30 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

DatumVersionErgebnis
2025-12-20 10:29Python 3.13.554/54 (100%)

Verwandte Kapitel