uv/pip και εκτελείται με το uvxnpm/npxΕπομένως, η σωστή σειρά εγκατάστασης και εφαρμογής αλλαγών θα είναι:
# 1. Προετοιμασία Python περιβάλλοντος για το sqlite
cd /home/legal-admin/projects/legal-text-analysis
source .venv/bin/activate
uv add mcp-server-sqlite
# 2. Εγκατάσταση Node.js εξαρτήσεων globally
sudo npm install -g @modelcontextprotocol/server-filesystem
sudo npm install -g @modelcontextprotocol/server-github
# 3. Δημιουργία των systemd services
sudo cp mcp-server-sqlite.service /etc/systemd/system/
sudo cp mcp-filesystem.service /etc/systemd/system/
sudo cp mcp-github.service /etc/systemd/system/
# 4. Reload και ενεργοποίηση με τη σωστή σειρά
sudo systemctl daemon-reload
# Πρώτα το SQLite service (καθώς χρειάζεται το Python env)
sudo systemctl enable mcp-server-sqlite.service
sudo systemctl start mcp-server-sqlite.service
# Μετά τα Node.js services
sudo systemctl enable mcp-filesystem.service
sudo systemctl start mcp-filesystem.service
sudo systemctl enable mcp-github.service
sudo systemctl start mcp-github.service
# 5. Επαλήθευση όλων των υπηρεσιών
for service in mcp-server-sqlite mcp-filesystem mcp-github; do
echo "Checking $service..."
sudo systemctl status $service
done
Επίσης, θα πρέπει να τροποποιήσουμε τα service files για να αντανακλούν αυτή τη διαφορά:
mcp-server-sqlite.service, χρειαζόμαστε το Python virtual environmentΚαταλαβαίνω το πρόβλημα - χρειάζεται πρώτα να δημιουργήσουμε τα service files πριν προσπαθήσουμε να τα αντιγράψουμε. Ας το κάνουμε βήμα-βήμα.
Πρώτα, ας δημιουργήσουμε τα service files στον κατάλληλο φάκελο του project:
# Δημιουργία φακέλου για τα service files
mkdir -p ~/projects/legal-text-analysis/services
# Μετακίνηση στον φάκελο
cd ~/projects/legal-text-analysis/services
Τώρα, ας δημιουργήσουμε το πρώτο service file για το SQLite:
cat > mcp-server-sqlite.service << 'EOL'
[Unit]
Description=MCP Server SQLite
After=network.target
StartLimitIntervalSec=300
StartLimitBurst=5
[Service]
Type=simple
User=legal-admin
WorkingDirectory=/home/legal-admin/projects/legal-text-analysis
Environment=PYTHONPATH=/home/legal-admin/projects/legal-text-analysis/.venv/lib/python3.10/site-packages
Environment=PATH=/home/legal-admin/projects/legal-text-analysis/.venv/bin:${PATH}
Environment=UV_FORCE_STDIO=1
Environment=DEBUG=mcp:*,sqlite:*
Environment=MCP_SQLITE_EXPOSE_TABLES=true
ExecStart=/home/legal-admin/projects/legal-text-analysis/.venv/bin/uvx mcp-server-sqlite --db-path /home/legal-admin/projects/legal-text-analysis/data/legal_text.db
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOL
Για το Filesystem service:
cat > mcp-filesystem.service << 'EOL'
[Unit]
Description=MCP Server Filesystem
After=network.target
StartLimitIntervalSec=300
StartLimitBurst=5
[Service]
Type=simple
User=legal-admin
WorkingDirectory=/home/legal-admin/projects/legal-text-analysis
Environment=NODE_ENV=production
Environment=DEBUG=mcp:*,fs:*
Environment=PATH=/usr/local/bin:/usr/bin:/bin
ExecStart=/usr/bin/npx -y @modelcontextprotocol/server-filesystem /home/legal-admin/projects/legal-text-analysis/data
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOL
Και για το GitHub service:
cat > mcp-github.service << 'EOL'
[Unit]
Description=MCP Server GitHub
After=network.target
StartLimitIntervalSec=300
StartLimitBurst=5
[Service]
Type=simple
User=legal-admin
WorkingDirectory=/home/legal-admin/projects/legal-text-analysis
Environment=NODE_ENV=production
Environment=DEBUG=mcp:*,github:*
Environment=GITHUB_PERSONAL_ACCESS_TOKEN=your_token_here
Environment=PATH=/usr/local/bin:/usr/bin:/bin
ExecStart=/usr/bin/npx -y @modelcontextprotocol/server-github
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOL
Τώρα μπορούμε να αντιγράψουμε τα αρχεία στο σωστό μέρος:
# Αντιγραφή των service files στο systemd
sudo cp mcp-server-sqlite.service /etc/systemd/system/
sudo cp mcp-filesystem.service /etc/systemd/system/
sudo cp mcp-github.service /etc/systemd/system/
# Επαναφόρτωση του systemd
sudo systemctl daemon-reload