MCP-DB Installation

Setup, Registrierung und Test des MCP-DB Servers.

Voraussetzungen

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

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