MCP-DB Installation
Setup, Registrierung und Test des MCP-DB Servers.
Voraussetzungen
- Python 3.10+
- MariaDB/MySQL
- Claude Code CLI
1. Verzeichnis erstellen
mkdir -p /opt/mcp-servers/mcp-db
cd /opt/mcp-servers/mcp-db
2. Virtual Environment
python3 -m venv venv
source venv/bin/activate
pip install mcp[cli] mysql-connector-python python-dotenv
3. Dateien erstellen
Siehe Architektur für vollständige Verzeichnisstruktur.
# Struktur
/opt/mcp-servers/mcp-db/
├── server.py
├── config.py
├── .env
├── .env.example
├── requirements.txt
├── domain/
├── validators/
├── infrastructure/
└── tools/
4. .env konfigurieren
# .env erstellen
cp .env.example .env
# Bearbeiten
nano .env
# Berechtigungen setzen
chmod 600 .env
.env Inhalt
# Datenbank für Queries (mcp_readonly)
DB_HOST=localhost
DB_USER=mcp_readonly
DB_PASSWORD=SECURE_PASSWORD_HERE
# Datenbank für Logging (mcp_logger)
LOG_DB_HOST=localhost
LOG_DB_NAME=ki_protokoll
LOG_DB_USER=mcp_logger
LOG_DB_PASSWORD=DIFFERENT_SECURE_PASSWORD_HERE
5. Datenbank vorbereiten
mcp_log Tabelle
CREATE TABLE IF NOT EXISTS mcp_log (
id INT AUTO_INCREMENT PRIMARY KEY,
timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
client_name VARCHAR(50) NOT NULL DEFAULT 'mcp-db',
request TEXT,
status ENUM('success', 'error', 'denied') NOT NULL,
duration_ms INT DEFAULT 0,
error_message TEXT,
INDEX idx_timestamp (timestamp),
INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DB-User erstellen
-- mcp_readonly
CREATE USER IF NOT EXISTS 'mcp_readonly'@'localhost'
IDENTIFIED BY 'SECURE_PASSWORD_HERE';
GRANT SELECT ON ki_protokoll.mcp_log TO 'mcp_readonly'@'localhost';
GRANT SELECT ON ki_protokoll.ki_eintraege TO 'mcp_readonly'@'localhost';
GRANT SELECT ON ki_protokoll.ki_kategorien TO 'mcp_readonly'@'localhost';
GRANT SELECT ON ki_protokoll.ki_tags TO 'mcp_readonly'@'localhost';
GRANT SELECT ON ki_protokoll.ki_settings TO 'mcp_readonly'@'localhost';
GRANT SELECT ON information_schema.TABLES TO 'mcp_readonly'@'localhost';
GRANT SELECT ON ki_system.* TO 'mcp_readonly'@'localhost';
-- mcp_logger
CREATE USER IF NOT EXISTS 'mcp_logger'@'localhost'
IDENTIFIED BY 'DIFFERENT_SECURE_PASSWORD_HERE';
GRANT INSERT ON ki_protokoll.mcp_log TO 'mcp_logger'@'localhost';
FLUSH PRIVILEGES;
6. Server testen
# Manuell starten
cd /opt/mcp-servers/mcp-db
source venv/bin/activate
python server.py
# Bei Erfolg: Server wartet auf stdio Input
# Strg+C zum Beenden
7. In Claude Code registrieren
User-Scope (Global)
Registrierung für alle Projekte des Benutzers:
claude mcp add mcp-db \
--transport stdio \
-- /opt/mcp-servers/mcp-db/venv/bin/python \
/opt/mcp-servers/mcp-db/server.py
Projekt-Scope (Lokal)
Registrierung nur für ein bestimmtes Projekt (z.B. /var/www):
cd /var/www
claude mcp add mcp-db --transport stdio \
-- /opt/mcp-servers/mcp-db/venv/bin/python \
/opt/mcp-servers/mcp-db/server.py
Hinweis: Im Projekt-Scope wird die Konfiguration in /root/.claude.json unter dem entsprechenden Projekt gespeichert, nicht in .claude/settings.json im Projektverzeichnis.
8. Registrierung prüfen
# Liste aller MCP Server
claude mcp list
# Details zu mcp-db
claude mcp get mcp-db
# In Claude Code Session
/mcp
9. Tools testen
# In Claude Code:
> db_select("SELECT * FROM mcp_log LIMIT 5")
> db_schema()
> db_stats(limit=10)
Troubleshooting
Server startet nicht
# Log prüfen
tail -f /tmp/mcp_db_server.log
# Dependencies prüfen
pip list | grep mcp
# Python Version
python --version # Muss 3.10+ sein
Verbindungsfehler
# DB-Verbindung mit MCP-DB testen (empfohlen)
db_select("SELECT 1")
# Alternativ: Direkter Test (nur für Debugging)
mysql -u mcp_readonly -p -e "SELECT 1"
# .env prüfen
cat .env | grep -v PASSWORD
Permission Denied
# Berechtigungen prüfen
ls -la .env # Muss 600 sein
# User prüfen
mysql -u mcp_readonly -p -e "SHOW GRANTS"
Systemd Service (Optional)
MCP-DB läuft normalerweise on-demand (von Claude Code gestartet). Für Monitoring oder Debugging kann ein Systemd Service verwendet werden.
Service installiert
Der Service ist bereits unter /etc/systemd/system/mcp-db.service installiert und aktiviert.
Verwendung
# Status prüfen (zeigt on-demand oder systemd)
/opt/scripts/mcp-db-status.sh
# Service manuell starten (nicht empfohlen)
systemctl start mcp-db
# Service stoppen
systemctl stop mcp-db
# Logs ansehen
journalctl -u mcp-db -f
Wichtig
- Empfohlen: On-demand Betrieb (Claude startet MCP automatisch)
- Service nur für: Debugging, permanente Logs, externe Monitoring
- Service läuft nicht standardmäßig, nur nach
systemctl start mcp-db
Updates
# Dependencies aktualisieren
cd /opt/mcp-servers/mcp-db
source venv/bin/activate
pip install --upgrade mcp[cli] mysql-connector-python
# Nach Updates: Service neu laden (falls aktiv)
systemctl daemon-reload
systemctl restart mcp-db # nur falls Service läuft
Deinstallation
# Aus Claude Code entfernen
claude mcp remove mcp-db
# Verzeichnis löschen (optional)
rm -rf /opt/mcp-servers/mcp-db
# DB-User löschen (optional)
DROP USER 'mcp_readonly'@'localhost';
DROP USER 'mcp_logger'@'localhost';
Verwandte Kapitel
- Übersicht - Hauptseite
- Sicherheit - DB-User Details
- Konfiguration - .env Details