Διακομιστής MCP¶
Το BombVault έχει ενσωματωμένο διακομιστή για το Model Context Protocol (MCP), το πρωτόκολλο με το οποίο βοηθοί τεχνητής νοημοσύνης όπως το Claude Code και το Claude Desktop φτάνουν σε εξωτερικά εργαλεία. Μέσα από αυτόν ένας βοηθός μπορεί να διαβάσει πώς πάνε τα αντίγραφά σου και, αν το επιτρέψεις, να ξεκινήσει ένα αντίγραφο ή να ακυρώσει ένα που ξεκίνησε ο ίδιος. Είναι κλειστός μέχρι να δημιουργήσεις ένα κλειδί ή να ενεργοποιήσεις τη σύνδεση μέσω OAuth: ως τότε το τελικό σημείο /mcp απαντά 404 σε όλα.
Τι μπορεί και τι δεν μπορεί να κάνει ένας βοηθός¶
| Εργαλείο | Τι κάνει | Είδος |
|---|---|---|
get_health |
Έκδοση, όνομα της εγκατάστασης, αν τρέχει αντίγραφο και τι επιτρέπεται σε αυτό το κλειδί | ανάγνωση |
get_status |
Κατάσταση προστασίας ανά τομέα: τελευταίο επιτυχημένο αντίγραφο, αναμενόμενο διάστημα, επαληθεύσεις και έλεγχοι off-site, επόμενες προγραμματισμένες εκτελέσεις, αντίγραφα που περιμένουν να ηρεμήσει η εφαρμογή, και για τα κοντέινερ η πιο πρόσφατη δοκιμή εκκίνησης | ανάγνωση |
get_coverage |
Τι προστατεύει το BombVault και τι όχι, με τον λόγο για το καθένα | ανάγνωση |
list_items |
Κάθε προστατευμένο κοντέινερ, VM και σύνολο φακέλων, το flash και οι ρυθμίσεις της εφαρμογής, με πρόγραμμα, τι σταματά ένα αντίγραφο, το τελευταίο αντίγραφο και πόσο κράτησε· τα κοντέινερ βάσεων δεδομένων δείχνουν και το τελευταίο dump· εμφανίζονται και τα σύνολα δεδομένων ZFS, με το αποτέλεσμα του τελευταίου τους ελέγχου· κάθε στοιχείο φέρει τον τελευταίο έλεγχο επαναφοράς του, και ένα κοντέινερ την τελευταία δοκιμή εκκίνησης ή τον λόγο που δεν μπορεί να δοκιμαστεί· ένα κοντέινερ που δημιουργήθηκε ξανά με άλλες ρυθμίσεις από το τελευταίο αντίγραφο δείχνει τι άλλαξε | ανάγνωση |
list_runs |
Ιστορικό εκτελέσεων, οι νεότερες πρώτες, με φίλτρο ανά τομέα, στοιχείο, κατάσταση, είδος και χρόνο· ένα αργό αντίγραφο που το φρέναρε ένα πράγμα το ονομάζει | ανάγνωση |
list_restore_points |
Σημεία επαναφοράς ενός στοιχείου από το κύριο αποθετήριό του και, για ένα κοντέινερ, τα dumps των βάσεών του· ένα σύνολο δεδομένων ZFS έχει ένα σημείο επαναφοράς ανά αντίγραφο, με ένα snapshot κάθε συνόλου δεδομένων κάτω από αυτό | ανάγνωση |
get_activity |
Τι τρέχει αυτή τη στιγμή, με φάση και ποσοστό | ανάγνωση |
get_storage_stats |
Ιστορικό μεγέθους του κύριου αποθετηρίου ενός τομέα και η αύξησή του ανά εβδομάδα, μαζί με τον χρησιμοποιημένο, ελεύθερο και συνολικό χώρο στον δίσκο ή στον απομακρυσμένο χώρο κάθε αποθετηρίου του | ανάγνωση |
get_size_breakdown |
Ποιοι φάκελοι και ποια αρχεία πιάνουν χώρο στο νεότερο αντίγραφο ενός κοντέινερ, μιας VM ή ενός συνόλου φακέλων, και πόσο από αυτά πρόσθεσε το τελευταίο αντίγραφο | ανάγνωση |
list_anomalies |
Ανωμαλίες που εντόπισε το BombVault στα αντίγραφα, με φίλτρα για κατάσταση, σοβαρότητα και τομέα και μια σύνοψη όσων είναι ανοιχτά | ανάγνωση |
get_anomaly |
Ένα από αυτά τα ευρήματα, με τη σημείωση που αφέθηκε όταν επιβεβαιώθηκε | ανάγνωση |
start_backup |
Παίρνει αμέσως αντίγραφο ενός στοιχείου | εκκίνηση |
start_domain_backup |
Παίρνει αντίγραφο κάθε προστατευμένου στοιχείου ενός τομέα | εκκίνηση |
start_backup_everything |
Τρέχει ένα Πλήρες αντίγραφο ασφαλείας | εκκίνηση |
cancel_backup |
Ακυρώνει ένα αντίγραφο σε εξέλιξη που ξεκίνησε αυτό το κλειδί | ακύρωση |
Στο web περιβάλλον μένουν: επαναφορές κάθε είδους (και η λήψη, η αποθήκευση ή η εισαγωγή ενός dump βάσης δεδομένων), η διαγραφή αντιγράφων, prune, unlock, οι έλεγχοι και οι ασκήσεις, η αναπαραγωγή off-site, οι ρυθμίσεις, τα διαπιστευτήρια και τα κλειδιά MCP, καθώς και η ακύρωση ενός αντιγράφου που ξεκίνησε το πρόγραμμα, το web περιβάλλον ή άλλο κλειδί. Το ίδιο ισχύει για την επιβεβαίωση μιας ανωμαλίας ή τη σήμανσή της ως αναμενόμενης, που γίνεται στη σελίδα Ανωμαλίες. Ο λόγος: οι απαντήσεις των εργαλείων περιέχουν ονόματα και μηνύματα σφάλματος από τον διακομιστή σου, και οποιοδήποτε από αυτά μπορεί να κουβαλά κείμενο γραμμένο για να κατευθύνει τον βοηθό. Ένας βοηθός που πέφτει σε τέτοιο κείμενο μπορεί, στη χειρότερη περίπτωση, να ξεκινήσει ένα αντίγραφο μέσα στα παρακάτω όρια ή να ακυρώσει ένα που ξεκίνησε ο ίδιος.
Αν το κύριο αποθετήριο ενός στοιχείου βρίσκεται αλλού (S3, REST, SFTP, rclone), το list_restore_points συνδέεται σε αυτό και η κλήση μπορεί να αργήσει λίγο. Τα αντίγραφα off-site δεν εμφανίζονται μέσω MCP. Τι εξετάζουν οι έλεγχοι ανωμαλιών περιγράφεται στις Δυνατότητες, και πώς ένα στοιχείο ZFS κρατά ένα στιγμιότυπο ανά σύνολο δεδομένων στα Σύνολα δεδομένων ZFS.
Τι κάνει ένα αντίγραφο που ξεκίνησε¶
Το αντίγραφο ενός βοηθού είναι το ίδιο αντίγραφο που ξεκινά το web περιβάλλον. Ένα κοντέινερ που τρέχει σταματά μέχρι να τελειώσει το αντίγραφό του, μαζί με τα κοντέινερ που είναι ρυθμισμένα να σταματούν μαζί του. Μια VM με τη μέθοδο "graceful" κλείνει και ξαναξεκινά. Ένα σύνολο δεδομένων ZFS σταματά τα κοντέινερ που έχουν οριστεί γι' αυτό όσο παίρνεται το snapshot του. Τα σύνολα φακέλων, το flash και οι ρυθμίσεις συνεχίζουν να τρέχουν. Μετά το BombVault εφαρμόζει την πολιτική διατήρησης και ίσως αντιγράψει στο αποθετήριο off-site. Το list_items λέει στον βοηθό τι σταματά ένα στοιχείο και πόσο κράτησε το τελευταίο του αντίγραφο, και οι περιγραφές των εργαλείων του ζητούν να σου το πει πριν ξεκινήσει οτιδήποτε.
Επειδή ένα αντίγραφο σταματά πράγματα και σπρώχνει έξω παλιά σημεία επαναφοράς, οι εκκινήσεις μέσω MCP έχουν όρια:
- 12 αντίγραφα που ξεκίνησαν ανά ώρα και ανά κλειδί.
- 15 λεπτά ανάμεσα σε δύο εκκινήσεις MCP του ίδιου στοιχείου, του ίδιου τομέα ή του Πλήρους αντιγράφου ασφαλείας.
- Το πολύ 4 εκκινήσεις MCP του ίδιου στοιχείου μέσα σε 24 ώρες.
- Φύλακας διατήρησης. Όταν ένας τομέας κρατά σταθερό αριθμό σημείων επαναφοράς (μόνο "κράτα τα τελευταία N", χωρίς ημερήσιο, εβδομαδιαίο ή μηνιαίο κανόνα, τοπικά ή σε προορισμό off-site), κάθε νέο αντίγραφο σπρώχνει έξω το παλαιότερο. Τότε το BombVault αρνείται μια εκκίνηση MCP ενός στοιχείου του οποίου τα N-1 νεότερα επιτυχημένα αντίγραφα ξεκίνησαν όλα μέσω MCP. Έτσι στο σύνολο που διατηρείται μένει πάντα τουλάχιστον ένα σημείο επαναφοράς που έφτιαξε το πρόγραμμα ή εσύ. Με "κράτα το τελευταίο 1" ένας βοηθός δεν μπορεί καθόλου να πάρει αντίγραφο αυτού του στοιχείου. Το επόμενο προγραμματισμένο αντίγραφο κάνει ξανά χώρο. Ένας ετήσιος κανόνας μόνος του μετράει ως "κράτα το τελευταίο 1", γιατί κρατά ένα μόνο σημείο επαναφοράς για το τρέχον έτος.
Μια εκκίνηση τομέα ή του Πλήρους αντιγράφου ασφαλείας παραλείπει τα στοιχεία που κρατά πίσω κάποιο όριο και τα αναφέρει στην απάντηση. Κανένα από αυτά τα όρια δεν αφορά το web περιβάλλον ή το πρόγραμμα. Ο ωριαίος προϋπολογισμός βρίσκεται στη μνήμη, οπότε μια επανεκκίνηση του BombVault τον μηδενίζει.
Οι εκκινήσεις μέσω του API και από το Home Assistant μετρούν στα ίδια όρια ανά στοιχείο με τις εκκινήσεις μέσω MCP, καθώς και στην προστασία διατήρησης.
Ενεργοποίηση¶
- Άνοιξε Ρυθμίσεις, Ενσωματώσεις, Διακομιστής MCP και πάτησε το κουμπί του πελάτη σου. Ένας πελάτης που δεν είναι στη λίστα συνδέεται μέσω του Άλλος πελάτης.
- Στο Κλειδί άφησε το Νέο κλειδί και το προτεινόμενο όνομα, δηλαδή του πελάτη, ή γράψε ένα που λέει πού χρησιμοποιείται το κλειδί, για παράδειγμα «Claude Code στο λάπτοπ». Ένα κλειδί ανά πελάτη σου επιτρέπει να ανακαλέσεις ένα χωρίς να αγγίξεις τα άλλα. Το Υπάρχον κλειδί δίνει στον πελάτη ένα κλειδί που έφτιαξες νωρίτερα.
- Ενεργοποίησε το Να επιτρέπεται η έναρξη αντιγράφων για ένα κλειδί που πρέπει να μπορεί να ξεκινά αντίγραφα· χωρίς αυτό το κλειδί μόνο διαβάζει. Μπορείς να το αλλάξεις αργότερα στο πλακίδιο του κλειδιού, και η αλλαγή ισχύει από το επόμενο αίτημα του βοηθού, χωρίς νέα σύνδεση.
- Πάτησε Δημιουργία κλειδιού. Το κλειδί εμφανίζεται μία φορά. Το BombVault κρατά μόνο ένα αποτύπωμά του και δεν μπορεί να το δείξει ξανά, οπότε αντίγραψέ το τώρα. Αν κλείσεις τον διάλογο πριν ο πελάτης χρησιμοποιήσει το κλειδί, η κάρτα συνεχίζει να το δείχνει μέχρι να επιβεβαιώσεις ότι το αντέγραψες.
Χωρίς κωδικό σύνδεσης, το ίδιο το web περιβάλλον είναι ανοιχτό σε όλους στο δίκτυό σου, και όποιος μπορεί να το ανοίξει μπορεί και να δημιουργήσει κλειδί. Η κάρτα το λέει. Αν ανοίξεις το BombVault με ένα όνομα που μοιάζει δημόσιο (για παράδειγμα bombvault.example.com πίσω από reverse proxy) και δεν έχει οριστεί κωδικός σύνδεσης, από αυτή τη διεύθυνση δεν μπορούν να δημιουργηθούν ούτε να αντικατασταθούν κλειδιά, ώστε καμία ιστοσελίδα στο διαδίκτυο να μην μπορεί να βάλει τον browser σου να φτιάξει ένα. Όρισε κωδικό σύνδεσης ή άνοιξε το BombVault με τη διεύθυνση IP του ή με ένα τοπικό όνομα όπως tower ή tower.local.
Τα κλειδιά σου και το αρχείο τους¶
Κάθε κλειδί έχει τη δική του κάρτα. Δείχνει το όνομα του κλειδιού, αν μπορεί να ξεκινά αντίγραφα ή μόνο διαβάζει, τους τέσσερις τελευταίους χαρακτήρες του, πότε δημιουργήθηκε ή αντικαταστάθηκε τελευταία φορά, πότε το χρησιμοποίησε τελευταία ένας πελάτης και πόσες κλήσεις έκανε σήμερα. Από την κάρτα μετονομάζεις το κλειδί, αλλάζεις την άδειά του, το αντικαθιστάς ή το ανακαλείς. Ένα ανακληθέν κλειδί μεταφέρεται στη λίστα των ανακληθέντων, όπου μπορείς να το διαγράψεις οριστικά μόλις καμία εκτέλεση στο ιστορικό δεν το αναφέρει πια.
Δίπλα στο όνομα, το πλακίδιο δείχνει το λογότυπο του πελάτη για τον οποίο φτιάχτηκε το κλειδί. Ένα κλειδί που φτιάχτηκε μέσω του Άλλος πελάτης, ή πριν η κάρτα απαριθμήσει πελάτες, δείχνει αντί γι' αυτό ένα κλειδί.
Το Αρχείο σε μια κάρτα ανοίγει ό,τι έκανε το κλειδί. Πρώτα έρχονται τα αντίγραφα που ξεκίνησε, το καθένα με την κατάστασή του και έναν σύνδεσμο προς εκείνη την εκτέλεση στο αρχείο δραστηριότητας του πίνακα. Από κάτω είναι οι κλήσεις του, οι νεότερες πρώτες, με το εργαλείο και την έκβαση της κλήσης. Μια απόρριψη λέει γιατί: το κλειδί μόνο διαβάζει, η φύλαξη διατήρησης κράτησε πίσω το αντίγραφο, εκτελούνταν ήδη άλλο αντίγραφο, ένα αντίγραφο του στοιχείου ξεκίνησε εκτός της διεπαφής πριν από λίγα λεπτά ή το κλειδί έστειλε πάρα πολλά αιτήματα. Μια ακύρωση οδηγεί στην εκτέλεση που αφορούσε.
Το BombVault κρατά τις εγγραφές κάθε κλειδιού έως 30 ημέρες: τις 500 νεότερες επιτυχημένες εκκινήσεις και ακυρώσεις και δίπλα τους τις 200 νεότερες υπόλοιπες κλήσεις (αναγνώσεις, απορρίψεις και σφάλματα), ώστε ένας βοηθός που ρωτά ξανά και ξανά για ένα αντίγραφο σε εξέλιξη ή επαναλαμβάνει μια κλήση που απορρίφθηκε να μην μπορεί να σπρώξει την εκκίνησή του έξω από το αρχείο. Για κάθε κλήση αποθηκεύει το εργαλείο, την έκβαση και την εκτέλεση που ανέφερε μια ακύρωση. Δεν αποθηκεύει ποτέ ό,τι έστειλε ο βοηθός, ούτε το κλειδί ή το αποτύπωμά του. Το πακέτο διάγνωσης μόνο μετρά τις εγγραφές, και η εξαγωγή ρυθμίσεων τις παραλείπει.
Σύνδεση ενός πελάτη¶
Κάθε πελάτης έχει ένα κουμπί στην κάρτα, κάτω από το Σε αυτόν τον υπολογιστή ή το Στο cloud. Το κουμπί ανοίγει έναν διάλογο τριών βημάτων: το κλειδί· τη ρύθμιση για αυτόν τον πελάτη, με τη διεύθυνση από την οποία άνοιξες την κάρτα, ένα κουμπί αντιγραφής, το πού βρίσκεται η ρύθμιση και, με το δικό του πιστοποιητικό του BombVault, τι χρειάζεται ο πελάτης για να το εμπιστευτεί· και την αναμονή για την πρώτη κλήση του πελάτη. Ο διάλογος παρακολουθεί την τελευταία χρήση του κλειδιού και γίνεται πράσινος όταν φτάσει αυτή η κλήση.
Ο διάλογος κρατά το κλειδί έξω από κάθε γραμμή εντολών. Όπου ο πελάτης μπορεί να το διαβάσει από μεταβλητή περιβάλλοντος (BOMBVAULT_MCP_KEY), από κρυφό αίτημα ή από δικό του αρχείο, η ρύθμιση απλώς το κατονομάζει. Όπου ο πελάτης δεν έχει τέτοιο τρόπο, το κλειδί βρίσκεται στο αρχείο ρυθμίσεων ή στις ρυθμίσεις του, και ο διάλογος το λέει. Όπου η τεκμηρίωση ενός πελάτη δεν λέει πώς χειρίζεται ένα άγνωστο πιστοποιητικό, ο διάλογος γράφει αυτό το βήμα ως το τι κάνεις αν ο πελάτης απορρίψει το πιστοποιητικό του BombVault.
| Πελάτης | Ρύθμιση | Από πού έρχεται το κλειδί |
|---|---|---|
| AnythingLLM | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Antigravity | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Claude Code | εντολή | αρχείο κλειδιού |
| Claude Desktop | αρχείο ρυθμίσεων | αρχείο κλειδιού |
| Cline | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Codex CLI | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Continue | αρχείο ρυθμίσεων | ~/.continue/.env |
| Copilot CLI | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Cursor | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Gemini CLI | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| GitHub Copilot (VS Code) | αρχείο ρυθμίσεων | κρυφό αίτημα |
| Goose | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Jan | φόρμα στην εφαρμογή | οι ρυθμίσεις της εφαρμογής |
| JetBrains (AI Assistant, Junie) | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Kimi Code | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| LM Studio | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Mistral Vibe | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Msty | φόρμα στην εφαρμογή | οι ρυθμίσεις της εφαρμογής |
| n8n | φόρμα στην εφαρμογή | τα διαπιστευτήρια του n8n |
| Open WebUI | φόρμα στην εφαρμογή | οι ρυθμίσεις της εφαρμογής |
| opencode | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Perplexity (Mac) | φόρμα στην εφαρμογή | αρχείο κλειδιού |
| Qwen Code | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Roo Code | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Visual Studio | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Warp | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Windsurf | αρχείο ρυθμίσεων | μεταβλητή περιβάλλοντος |
| Zed | αρχείο ρυθμίσεων | το αρχείο ρυθμίσεων |
| Grok | φόρμα, στο cloud | οι διακομιστές του παρόχου |
| Le Chat | φόρμα, στο cloud | οι διακομιστές του παρόχου |
| ChatGPT | σύνδεση μέσω OAuth, στο cloud | ένα διακριτικό πρόσβασης, δες παρακάτω |
| Claude (claude.ai) | σύνδεση μέσω OAuth, στο cloud | ένα διακριτικό πρόσβασης, δες παρακάτω |
Οι παρακάτω ενότητες εξηγούν πιο αναλυτικά τη ρύθμιση του Claude Code και του Claude Desktop και αναφέρουν τι χρειάζεται κάθε άλλος πελάτης.
Claude Code¶
Το Claude Code φτάνει στο BombVault μέσω του mcp-remote, που χρειάζεται Node.js σε εκείνον τον υπολογιστή. Πρώτα αποθήκευσε το κλειδί σε ξεχωριστό αρχείο κειμένου, σε μία γραμμή:
Μετά τρέξε μία φορά σε τερματικό την εντολή της κάρτας, με συμπληρωμένη τη διαδρομή αυτού του αρχείου. Πίσω από πιστοποιητικό που εμπιστεύεται ο υπολογιστής σου, μοιάζει έτσι:
claude mcp add bombvault --scope user -- npx -y mcp-remote@latest https://bombvault.example.com/mcp --header-file "<path of the file with your key>"
Με το δικό πιστοποιητικό του BombVault (δες TLS και πιστοποιητικά), η εντολή δείχνει επιπλέον στο Node.js το πιστοποιητικό που κατέβασες:
claude mcp add bombvault --scope user -e "NODE_EXTRA_CA_CERTS=<path of the downloaded bombvault-cert.pem>" -- npx -y mcp-remote@latest https://192.168.1.10:3443/mcp --header-file "<path of the file with your key>"
Έλεγξε τη σύνδεση με /mcp μέσα στο Claude Code. Το --scope user κάνει το BombVault διαθέσιμο σε όλα τα έργα σου. Το Claude Code κρατά μόνο τη διαδρομή του αρχείου κλειδιού, οπότε το κλειδί δεν εμφανίζεται ούτε στην εντολή και στο ιστορικό του shell σου, ούτε στη λίστα διεργασιών. Κράτα το αρχείο κάπου όπου μόνο εσύ μπορείς να το διαβάσεις και έξω από κάθε φάκελο που κάνεις commit. Το @latest κάνει το npx να φέρει ένα τρέχον mcp-remote· αλλιώς θα χρησιμοποιούνταν ένα παλαιότερο, εγκατεστημένο καθολικά, που δεν ξέρει το --header-file.
Μη γράφεις το ${BOMBVAULT_MCP_KEY} στα ορίσματα του mcp-remote για το Claude Code. Το Claude Code συμπληρώνει μια τέτοια αναφορά από το δικό του περιβάλλον πριν ξεκινήσει το mcp-remote, οπότε το κλειδί καταλήγει στη γραμμή εντολών εκείνης της διεργασίας, όπου μπορούν να το διαβάσουν άλλα προγράμματα και χρήστες του υπολογιστή.
Χωρίς Node.js, και μόνο πίσω από πιστοποιητικό που εμπιστεύεται ο υπολογιστής σου, το Claude Code μπορεί να συνδεθεί μόνο του. Βάλε ένα .mcp.json στον φάκελο του έργου:
{
"mcpServers": {
"bombvault": {
"type": "http",
"url": "https://bombvault.example.com/mcp",
"headers": {
"Authorization": "Bearer ${BOMBVAULT_MCP_KEY}"
}
}
}
}
Όρισε το BOMBVAULT_MCP_KEY εκεί όπου ξεκινά το Claude Code, για παράδειγμα κάτω από το "env" στο ~/.claude/settings.json ή στο προφίλ του shell σου, γραμμένο σε επεξεργαστή κειμένου και όχι στη γραμμή εντολών. Εδώ η αναφορά είναι ασφαλής, επειδή το Claude Code δεν ξεκινά δεύτερη διεργασία στην οποία θα κατέληγε το κλειδί. Με το δικό πιστοποιητικό του BombVault αυτό δεν δουλεύει: η δική σύνδεση του Claude Code το απορρίπτει ακόμα κι όταν έχει οριστεί το NODE_EXTRA_CA_CERTS. Μην κάνεις ποτέ commit ένα .mcp.json με το κλειδί γραμμένο μέσα.
Claude Desktop¶
Το Claude Desktop φτάνει στο BombVault μέσω του mcp-remote, που χρειάζεται Node.js σε εκείνον τον υπολογιστή. Αποθήκευσε πρώτα το κλειδί σε δικό του αρχείο κειμένου, σε μία γραμμή, όπως περιγράφεται για το Claude Code. Άνοιξε το αρχείο ρυθμίσεων στο Claude Desktop από Settings, Developer, Edit Config. Βρίσκεται στο %APPDATA%\Claude\claude_desktop_config.json στα Windows και στο ~/Library/Application Support/Claude/claude_desktop_config.json στο macOS. Πρόσθεσε την καταχώριση της κάρτας μέσα στο "mcpServers", δίπλα στους διακομιστές που ήδη υπάρχουν, και ξαναξεκίνα το Claude Desktop:
{
"mcpServers": {
"bombvault": {
"command": "npx",
"args": ["-y", "mcp-remote@latest", "https://192.168.1.10:3443/mcp", "--header-file", "<path of the file with your key>"],
"env": {
"NODE_EXTRA_CA_CERTS": "<path of the downloaded bombvault-cert.pem>"
}
}
}
}
- Το
NODE_EXTRA_CA_CERTSυπάρχει μόνο για το δικό πιστοποιητικό του BombVault. Πίσω από πιστοποιητικό που ο υπολογιστής σου ήδη εμπιστεύεται, βγάλ' το. - Το
--allow-httpμπαίνει μόνο για απλή διεύθυνσηhttp://. - Στα Windows γράψε τις διαδρομές με κανονικές καθέτους, για παράδειγμα
C:/Users/sam/bombvault-key.txt, γιατί μια μονή ανάποδη κάθετος δεν είναι έγκυρο JSON. Κράτα τη διαδρομή του αρχείου κλειδιού χωρίς κενά: το Claude Desktop στα Windows δίνει στοnpxμια διαδρομή με κενό σε δύο κομμάτια. - Η ρύθμιση αναφέρει μόνο το αρχείο κλειδιού, οπότε το κλειδί δεν εμφανίζεται ούτε σε αυτήν ούτε στη λίστα διεργασιών. Κράτα το αρχείο κάπου όπου μόνο εσύ μπορείς να το διαβάσεις.
Πελάτες στο cloud¶
Το ChatGPT, το Claude στο claude.ai, το Grok και το Le Chat καλούν το BombVault από τους διακομιστές του παρόχου τους, οπότε το BombVault πρέπει να είναι προσβάσιμο από το διαδίκτυο με δημόσια έμπιστο πιστοποιητικό, για παράδειγμα πίσω από αντίστροφο διακομιστή μεσολάβησης· το Le Chat απορρίπτει τα αυτοϋπογεγραμμένα. Μια σύνδεση στον διακομιστή μεσολάβησης μπορεί να προστατεύει τη διεπαφή web, αλλά το /mcp πρέπει να φτάνει στο BombVault χωρίς αυτήν: αυτές οι υπηρεσίες δεν μπορούν να συνδεθούν σε διακομιστή μεσολάβησης, και το BombVault ελέγχει μόνο του το κλειδί ή το διακριτικό τους. Το Grok και το Le Chat στέλνουν σταθερό κλειδί, και τα κουμπιά τους τα ρυθμίζουν όπως τα υπόλοιπα. Το ChatGPT, και στους περισσότερους οργανισμούς και το Claude στο claude.ai, συνδέονται μόνο μέσω σύνδεσης με OAuth, που περιγράφεται παρακάτω.
Σύνδεση μέσω OAuth¶
Για έναν πελάτη που δεν δέχεται κλειδί, το BombVault είναι ο δικός του διακομιστής εξουσιοδότησης OAuth. Ο πελάτης καταχωρίζεται μόνος του, σε στέλνει σε μια σελίδα του BombVault, και εκεί συνδέεσαι με τον κωδικό εισόδου σου (και τον δεύτερο παράγοντα, αν τον έχεις ρυθμίσει) και τον επιτρέπεις. Ο πελάτης παίρνει τότε ένα διακριτικό που ισχύει μόνο για το τελικό σημείο MCP αυτού του BombVault, και το ανανεώνει μόνος του.
- Όρισε κωδικό εισόδου στις Ρυθμίσεις, Ασφάλεια. Χωρίς αυτόν το BombVault δεν προσφέρει καθόλου σύνδεση, γιατί δεν θα υπήρχε κανείς να δώσει συγκατάθεση.
- Κάνε το BombVault προσβάσιμο από το διαδίκτυο μέσω https με πιστοποιητικό που εμπιστεύονται οι φυλλομετρητές, συνήθως μέσω αντίστροφου διακομιστή μεσολάβησης. Ο πελάτης καλεί τα
/mcp,/oauth/και/.well-known/από τους δικούς του διακομιστές, οπότε ένας διακομιστής μεσολάβησης με δική του σύνδεση πρέπει να αφήνει αυτές τις τρεις διαδρομές να φτάνουν στο BombVault. Η σελίδα συγκατάθεσης στο/oauth/authorizeανοίγει στον δικό σου φυλλομετρητή και μπορεί να μείνει πίσω από τη σύνδεση του διακομιστή μεσολάβησης. Γράψε επίσης το proxy στοTRUSTED_PROXY(δες Ρυθμίσεις). Το BombVault περιορίζει τις καταχωρίσεις πελατών ανά διεύθυνση, και χωρίς αυτό κάθε πελάτης φαίνεται να έρχεται από το proxy. - Στην κάρτα MCP ενεργοποίησε το Σύνδεση μέσω OAuth και γράψε τη Δημόσια διεύθυνση: τη διεύθυνση https χωρίς διαδρομή, για παράδειγμα
https://backup.example.com. Κάθε διακριτικό είναι δεμένο σε αυτή τη διεύθυνση, οπότε μετά από αλλαγή κάθε πελάτης πρέπει να συνδεθεί ξανά. - Πάτησε το κουμπί του ChatGPT ή του Claude. Ο διάλογος δείχνει το URL συνδέσμου, δηλαδή τη δημόσια διεύθυνση με
/mcpστο τέλος, και πού μπαίνει σε αυτόν τον πελάτη. Στο ChatGPT ενεργοποιείς τη λειτουργία προγραμματιστή στις Ρυθμίσεις, Εφαρμογές και σύνδεσμοι, Ρυθμίσεις για προχωρημένους, επιλέγεις Δημιουργία, επικολλάς το URL συνδέσμου ως URL διακομιστή MCP και επιλέγεις OAuth ως έλεγχο ταυτότητας. Στο claude.ai ανοίγεις Ρυθμίσεις, Σύνδεσμοι, Προσθήκη προσαρμοσμένου συνδέσμου, επικολλάς το URL συνδέσμου, αφήνεις κενά το αναγνωριστικό πελάτη και το μυστικό OAuth και επιλέγεις Σύνδεση. - Ο πελάτης ανοίγει τη σελίδα συγκατάθεσης. Δείχνει ποιος ζητά, πού σε στέλνει πίσω η απάντησή σου και τον διακόπτη Να επιτρέπεται η έναρξη αντιγράφων, που ξεκινά κλειστός. Επίλεξε Να επιτραπεί ή Απόρριψη.
Κάθε πελάτης που συνδέθηκε παίρνει ένα πλακίδιο δίπλα στα κλειδιά, με το σήμα του, το αρχείο του, Ανάκληση και Να επιτρέπεται η έναρξη αντιγράφων, και τα ίδια όρια με ένα κλειδί. Η ανάκληση ισχύει αμέσως. Όταν ο ίδιος πελάτης συνδέεται ξανά, η νέα άδεια αντικαθιστά την παλιά, και μια άδεια που κανείς δεν χρησιμοποίησε για 30 ημέρες λήγει. Μπορούν να είναι συνδεδεμένοι έως 10 πελάτες ταυτόχρονα, πέρα από τα 10 κλειδιά.
Η σελίδα συγκατάθεσης δέχεται αίτημα μόνο από καταχωρισμένο πελάτη που αναφέρει ακριβώς μία από τις καταχωρισμένες διευθύνσεις επιστροφής του: https, ή διεύθυνση loopback σε οποιαδήποτε θύρα για πελάτη στον δικό σου υπολογιστή. Γίνεται δεκτή μόνο η ροή κωδικού εξουσιοδότησης με PKCE (S256), και η απάντησή σου είναι δεμένη στη συνεδρία σου, οπότε κανένας άλλος ιστότοπος δεν μπορεί να τη στείλει για σένα. Τα διακριτικά πρόσβασης ισχύουν μία ώρα. Ένα διακριτικό ανανέωσης αντικαθίσταται σε κάθε χρήση, και αν κάποιο εμφανιστεί ξανά μετά, το BombVault ανακαλεί την άδεια, γιατί κάποιος άλλος έχει αντίγραφο. Ένας πελάτης που επαναλαμβάνει την τελευταία του ανανέωση μέσα σε 30 δευτερόλεπτα, επειδή η απάντηση δεν έφτασε ποτέ σε αυτόν, παίρνει αντί γι' αυτό νέα διακριτικά. Το BombVault δεν κατεβάζει μεταδεδομένα πελατών από το διαδίκτυο, οπότε οι πελάτες καταχωρίζονται μέσω δυναμικής καταχώρισης πελατών.
Άλλοι πελάτες¶
Κάνει κάθε πελάτης που μιλά Streamable HTTP:
- URL: η διεύθυνση του web περιβάλλοντος συν
/mcp, για παράδειγμαhttps://192.168.1.10:3443/mcp. - Το κλειδί στο
Authorization: Bearer <key>ή στοX-API-Key: <key>. Αν σταλούν και τα δύο, πρέπει να έχουν το ίδιο κλειδί. POSTμεContent-Type: application/jsonκαιAccept: application/json, text/event-stream.- Ένα μήνυμα JSON-RPC ανά αίτημα· οι δέσμες (batch) απορρίπτονται.
- Εκδόσεις πρωτοκόλλου 2026-07-28, 2025-11-25, 2025-06-18 και 2025-03-26.
TLS και πιστοποιητικά¶
Το BombVault σερβίρει HTTPS με πιστοποιητικό που έχει εκδώσει το ίδιο, και στην αρχή αυτό το πιστοποιητικό αναφέρει μόνο localhost, 127.0.0.1 και ::1. Το Claude Code και το mcp-remote το απορρίπτουν σε διεύθυνση του τοπικού δικτύου. Οι λύσεις, με τη σειρά που ταιριάζει στις περισσότερες εγκαταστάσεις Unraid:
- Πρόσθεσε τη διεύθυνση στην κάρτα MCP. Όταν ανοίγεις την κάρτα με HTTPS σε διεύθυνση που το πιστοποιητικό δεν αναφέρει, η κάρτα το λέει και προσφέρει Πρόσθεσε αυτή τη διεύθυνση στο πιστοποιητικό. Το BombVault εκδίδει τότε ξανά το πιστοποιητικό του με αυτή τη διεύθυνση (ο browser σου προειδοποιεί άλλη μία φορά, όπως την πρώτη). Μετά πάτησε Λήψη πιστοποιητικού· τα αποσπάσματα ορίζουν το
NODE_EXTRA_CA_CERTSστο αρχείο που κατέβηκε, ώστε ο πελάτης να εμπιστεύεται ακριβώς αυτό το πιστοποιητικό. Αυτό σημαίνει επίσης ότι κάθε πελάτης ρυθμισμένος με ένα αρχείο που κατέβηκε νωρίτερα σταματά να συνδέεται μόλις το πιστοποιητικό εκδοθεί ξανά, σε αυτόν τον υπολογιστή και σε κάθε άλλον, μέχρι να πάρει το νέο αρχείο. - Ένα reverse proxy με έμπιστο πιστοποιητικό (Nginx Proxy Manager, SWAG, Caddy, Traefik). Ο πελάτης βλέπει τότε το πιστοποιητικό του proxy και δεν χρειάζεται τίποτε άλλο, και η κάρτα δεν προειδοποιεί για το πιστοποιητικό του BombVault.
- Tailscale. Το
tailscale serveμπροστά από το κοντέινερ, ή η ενσωμάτωση Tailscale του Unraid, σου δίνει ένα όνομαts.netμε έμπιστο πιστοποιητικό. HTTP_ONLY=true, μόνο πίσω από proxy που τερματίζει το TLS ή σε δίκτυο που εμπιστεύεσαι πλήρως. Γυρίζει όλο το web περιβάλλον σε απλό HTTP, χρειάζεται αλλαγή στις ρυθμίσεις του κοντέινερ και στέλνει το κλειδί χωρίς κρυπτογράφηση.
Μην ορίσεις ποτέ NODE_TLS_REJECT_UNAUTHORIZED=0. Κλείνει τον έλεγχο πιστοποιητικών για οτιδήποτε μιλά με αυτή τη διεργασία Node.js.
Ένα reverse proxy πρέπει να περνά την κεφαλίδα Authorization (ή X-API-Key), κάτι που τα proxy κάνουν εκτός αν τους πεις αλλιώς, και δεν πρέπει να κάνει buffering ή να ξαναγράφει το /mcp. Ένα μπλοκ location για Nginx ή Nginx Proxy Manager που ελέγχει και το πιστοποιητικό του BombVault:
location /mcp {
proxy_pass https://192.168.1.10:3443;
proxy_ssl_verify on;
proxy_ssl_trusted_certificate /data/bombvault-cert.pem;
proxy_ssl_name localhost;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $host;
}
Πίσω από proxy, κάθε αίτημα φέρει τη διεύθυνση του proxy. Πέντε λάθος κλειδιά από έναν μόνο λάθος ρυθμισμένο πελάτη κλειδώνουν τότε για ένα λεπτό όλους τους πελάτες MCP πίσω από αυτό το proxy. Γράψε το proxy στο TRUSTED_PROXY (δες Ρυθμίσεις) για να μετράει ανά πελάτη.
Μοντέλο ασφάλειας¶
- Χωρίς ενεργό κλειδί και με τη σύνδεση μέσω OAuth κλειστή, το
/mcpαπαντά404. - Η σύνδεση μέσω OAuth προσφέρεται μόνο όσο υπάρχει κωδικός εισόδου. Διακριτικά, κωδικοί και μυστικά πελατών αποθηκεύονται μόνο ως αποτύπωμα, και ένα διακριτικό ισχύει μόνο για τη διεύθυνση για την οποία εκδόθηκε.
- Ένας πελάτης μπορεί να καταχωριστεί το πολύ 10 φορές την ώρα από μία διεύθυνση, και το BombVault κρατά το πολύ 100 καταχωρισμένους πελάτες με τους οποίους δεν συνδέθηκε κανείς, τον καθένα για μία ημέρα. Λάθος κωδικοί και διακριτικά ανανέωσης μετρούν στο ίδιο κλείδωμα με τα λάθος κλειδιά.
- Οι άδειες συμπεριφέρονται όπως τα κλειδιά κατά την επαναφορά αντιγράφου ρυθμίσεων ή την αλλαγή του
APP_KEY: μετά από επαναφορά κάθε πελάτης πρέπει να συνδεθεί ξανά. - Καμία διεύθυνση δεν εξαιρείται. Αιτήματα από
localhost, από τον υπολογιστή Unraid, από reverse proxy ή απόtailscale serveχρειάζονται κλειδί όπως κάθε άλλο, ακόμα κι όταν το web περιβάλλον δεν έχει κωδικό σύνδεσης. - Τα κλειδιά αποθηκεύονται μόνο ως αποτυπώματα, εμφανίζονται μία φορά και μπορούν να μετονομαστούν, να αντικατασταθούν και να ανακληθούν. Έως 10 ενεργά κλειδιά, το καθένα με τον δικό του διακόπτη Να επιτρέπεται η έναρξη αντιγράφων.
- Κάθε δημιουργία, αντικατάσταση, αλλαγή δικαιώματος και ανάκληση στέλνει ειδοποίηση από τα κανάλια ειδοποιήσεών σου, με τη διεύθυνση από την οποία ήρθε, εκτός αν οι ειδοποιήσεις είναι κλειστές.
- 5 λάθος κλειδιά ανά λεπτό ανά διεύθυνση, μετά
429. 120 αιτήματα ανά λεπτό και 12 αντίγραφα που ξεκίνησαν ανά ώρα ανά κλειδί, μαζί με την αναμονή και τον φύλακα διατήρησης παραπάνω. - Αιτήματα από σελίδα browser άλλης προέλευσης (origin) απορρίπτονται.
- Όσο δεν υπάρχει κωδικός σύνδεσης, δεν μπορούν να δημιουργηθούν κλειδιά από όνομα υπολογιστή που μοιάζει δημόσιο.
- Κάθε αντίγραφο που ξεκινά ένας βοηθός, και οι εκτελέσεις prune και off-site που προκύπτουν από αυτό, σημειώνονται "μέσω MCP" με το όνομα του κλειδιού στο αρχείο δραστηριότητας, στο πάνελ σφαλμάτων και στην ειδοποίηση του αντιγράφου.
- Κάθε κλήση εργαλείου γράφεται στο αρχείο καταγραφής του κοντέινερ με το id του κλειδιού και τους τέσσερις τελευταίους χαρακτήρες του (ποτέ με το όνομα) και μετριέται στο
/metrics(bombvault_mcp_requests_total,bombvault_mcp_tool_calls_total,bombvault_mcp_active_keys). - Η επαναφορά ενός αντιγράφου των ρυθμίσεων ανακαλεί όλα τα κλειδιά, γιατί η βάση που επανήλθε μπορεί να περιέχει κλειδιά που ανακάλεσες αφού αποθηκεύτηκε. Φτιάξε νέα κλειδιά μετά.
- Ένα κλειδί σταματά να λειτουργεί όταν αλλάξει το
APP_KEY(επανεγκατάσταση ή επαναφορά σε άλλο κοντέινερ). Η κάρτα το εντοπίζει και σημειώνει το κλειδί, και η Αντικατάσταση κλειδιού του δίνει ξανά έγκυρο μυστικό. - Να αντιμετωπίζεις ένα κλειδί σαν κωδικό πρόσβασης. Ένας πελάτης που δεν μπορεί να διαβάσει το κλειδί από μεταβλητή περιβάλλοντος, από αίτημα ή από αρχείο κλειδιού το κρατά ως απλό κείμενο στη ρύθμιση ή στις ρυθμίσεις του, και ο διάλογός του το λέει. Σε έναν υπολογιστή που εμπιστεύεσαι λιγότερο, προτίμησε ένα κλειδί μόνο για ανάγνωση.
Τι φεύγει από το μηχάνημα¶
Ό,τι διαβάζει ένας βοηθός πηγαίνει στον πάροχο τεχνητής νοημοσύνης πίσω του: ονόματα στοιχείων, προγράμματα, ιστορικό εκτελέσεων με μηνύματα σφάλματος, id και ώρες σημείων επαναφοράς, ονόματα μηχανών βάσεων δεδομένων και μεγέθη dumps, τρέχουσα δραστηριότητα, στοιχεία αποθηκευτικού χώρου, κάλυψη και κατάσταση. Το BombVault αφαιρεί διαδρομές του υπολογιστή, τοποθεσίες αποθετηρίων, ονόματα υπολογιστών, διαπιστευτήρια, εντολές hook και κλειδιά πριν φύγει οτιδήποτε.
Αντιμετώπιση προβλημάτων¶
| Τι βλέπεις | Τι σημαίνει |
|---|---|
404 |
Κανένα ενεργό κλειδί και η σύνδεση μέσω OAuth είναι κλειστή, ή λάθος διαδρομή όπως /api/mcp. Το τελικό σημείο είναι /mcp. |
401 |
Το κλειδί λείπει, είναι γραμμένο λάθος, έχει ανακληθεί ή αντικατασταθεί. Ίσως ένα proxy πετά την κεφαλίδα Authorization (δοκίμασε X-API-Key). Αν η κάρτα σημειώνει το κλειδί ως μη έγκυρο πια, το APP_KEY άλλαξε: αντικατάστησε το κλειδί. |
403 |
Το αίτημα ήρθε από σελίδα browser άλλης προέλευσης. Χρησιμοποίησε πελάτη επιφάνειας εργασίας ή γραμμής εντολών. |
405 σε GET |
Φυσιολογικό. Το σημείο σύνδεσης δέχεται μόνο POST. |
400 "Accept must contain both 'application/json' and 'text/event-stream'" |
Ο πελάτης είναι πολύ παλιός για Streamable HTTP. Ενημέρωσέ τον. |
400 "batch requests are not accepted" |
Ο πελάτης στέλνει δέσμες JSON-RPC. Στείλε ένα μήνυμα ανά αίτημα. |
429 |
Πολλά λάθος κλειδιά από αυτή τη διεύθυνση, ή πάνω από 120 αιτήματα το λεπτό με ένα κλειδί. Περίμενε ένα λεπτό και έλεγξε αν ο βοηθός έχει κολλήσει σε βρόχο. |
| Σφάλματα με "certificate", "self-signed" ή "unable to verify" | Ο πελάτης δεν εμπιστεύεται το πιστοποιητικό του BombVault. Δες TLS και πιστοποιητικά. |
busy |
Άλλο αντίγραφο ή εργασία συντήρησης κρατά τον τομέα. Δοκίμασε ξανά όταν τελειώσει. |
cooldown |
Αυτό το στοιχείο, αυτός ο τομέας ή το Πλήρες αντίγραφο ασφαλείας ξεκίνησε εκτός της διεπαφής πριν από λιγότερα από 15 λεπτά. |
retention_guard |
Ένα ακόμα αντίγραφο MCP θα άφηνε σε ένα παράθυρο "κράτα τα τελευταία N" μόνο σημεία επαναφοράς από MCP, ή το στοιχείο έχει ήδη πάρει 4 αντίγραφα μέσω MCP τις τελευταίες 24 ώρες, μαζί με όσα απέτυχαν ή ακυρώθηκαν. Στην πρώτη περίπτωση το επόμενο προγραμματισμένο αντίγραφο κάνει χώρο, στη δεύτερη το στοιχείο ελευθερώνεται 24 ώρες μετά το παλαιότερο από αυτά. Από το web περιβάλλον μπορείς να το ξεκινήσεις οποτεδήποτε. |
rate_limited |
Το κλειδί χρησιμοποίησε τις 12 εκκινήσεις του για αυτή την ώρα. |
not_permitted σε εκκίνηση |
Το κλειδί μπορεί μόνο να διαβάζει. Άνοιξε το Να επιτρέπεται η έναρξη αντιγράφων στην κάρτα· δεν χρειάζεται νέα σύνδεση. Σε ακύρωση σημαίνει ότι την εκτέλεση δεν την ξεκίνησε αυτό το κλειδί. |
domain_off |
Αυτό το είδος αντιγράφου είναι κλειστό στις ρυθμίσεις. |
not_found |
Το BombVault δεν προστατεύει αυτό το στοιχείο. Πρόσθεσέ το πρώτα στο web περιβάλλον· το MCP δεν δημιουργεί ποτέ ρυθμίσεις. |
| Ο πελάτης δεν βρίσκει τον διακομιστή εξουσιοδότησης | Η σύνδεση μέσω OAuth είναι κλειστή, δεν υπάρχει κωδικός εισόδου, ή ο διακομιστής μεσολάβησης δεν αφήνει το /.well-known/ να φτάσει στο BombVault. |
| Η σελίδα συγκατάθεσης λέει ότι η διεύθυνση επιστροφής δεν είναι καταχωρισμένη | Ο πελάτης έστειλε διεύθυνση επιστροφής που δεν καταχώρισε. Αφαίρεσε τον σύνδεσμο στον πελάτη και πρόσθεσέ τον ξανά. |
Ένας συνδεδεμένος πελάτης παίρνει 401 |
Η άδειά του ανακλήθηκε, έληξε μετά από 30 ημέρες χωρίς χρήση, ή άλλαξε η δημόσια διεύθυνση. Ο πελάτης συνδέεται ξανά. |
Μην ορίσεις στο κοντέινερ τη μεταβλητή περιβάλλοντος MCPGODEBUG. Αλλάζει τη συμπεριφορά της βιβλιοθήκης MCP, και μια λάθος τιμή σταματά το BombVault στην εκκίνηση πριν γράψει έστω μία γραμμή στο αρχείο καταγραφής.