Zdalny agent
Uruchom w swojej sieci mały przekaźnik, który przekazuje żądania MCP do dozwolonych hostów.
Zdalny agent to mały przekaźnik. Instalujesz go na serwerze w swojej sieci, nad którym masz kontrolę. Przekaźnik sprawdza klucz API w każdym żądaniu. Gdy żądanie wskazuje dozwolony wewnętrzny serwer MCP, przekaźnik przesyła je dalej. Zapisuje też, co zrobił. Jeden publiczny adres może wtedy obsłużyć kilka prywatnych serwerów MCP.
Konrado łączy się z prywatnym serwerem przez przekaźnik za pomocą połączenia Własny serwer MCP. To połączenie zawiera nazwę i token serwera docelowego. Samo połączenie Zdalny agent sięga dziś tylko do własnych narzędzi przekaźnika, a z nich Konrado nie ma żadnego pożytku.
Jak to działa
Przekaźnik odpowiada pod /mcp i /sse. Każde żądanie musi zawierać jego klucz API:
Authorization: Bearer <API_KEY>Żądanie bez nagłówków celu zostaje w samym przekaźniku. Żądanie z oboma nagłówkami celu trafia dalej, do wskazanego serwera MCP:
Target-Host: <target-host>
Target-Token: <target-token>Przekaźnik porównuje Target-Host z listą dozwolonych HOSTS. Potem łączy się z
http://<host>/mcp albo z internalHost danego hosta i wysyła tam Target-Token jako token typu
bearer. Odpowiedź serwera docelowego przekazuje bez zmian. Przekaźnik odrzuca żądanie, które ma tylko
jeden z dwóch nagłówków.
Co potrafi przekaźnik
| Funkcja | Jak pomaga |
|---|---|
| Dostęp do prywatnych serwerów MCP | Jeden przekaźnik obsługuje wewnętrzne serwery MCP i nie musisz wystawiać każdego z nich na zewnątrz |
| Kierowanie według nazwy | Przypisuje publiczną nazwę celu do wewnętrznego host:port |
| Lista dozwolonych celów | HOSTS ogranicza cele, do których przekaźnik przekazuje żądania |
| Zachowanie sesji MCP | Przekazuje logowanie celu, pliki cookie, nagłówki sesji i odpowiedzi przesyłane strumieniowo |
| Podgląd ruchu | Pulpit pokazuje ostatnie żądania, ich status, czas trwania, cel i powód zablokowania |
Czego Konrado nie potrafi
| Nie da się | Dlaczego |
|---|---|
| Dotrzeć do celu przez połączenie Zdalny agent | To połączenie zawiera tylko adres przekaźnika i klucz API, bez nagłówków celu. Zamiast tego podłącz każdy cel jako własny serwer MCP |
| Ustawić serwer MCP tylko do odczytu | Każdy cel sam decyduje, co robią jego narzędzia |
| Ominąć logowanie celu | Przekazane żądanie nadal wymaga ważnego tokenu celu |
| Samodzielnie znaleźć wewnętrzne serwery MCP | Cele trzeba wskazać w żądaniu i wpisać do HOSTS, gdy ta lista nie jest pusta |
| Przekazywać zwykłe aplikacje internetowe lub inne ścieżki | Przekaźnik obsługuje ruch MCP tylko pod /mcp i /sse |
| Zastąpić zaporę sieciową | To Ty decydujesz, z jakich sieci można połączyć się z przekaźnikiem i jego pulpitem |
Używaj HOSTS jako listy dozwolonych. Pusta lista HOSTS=[] przekazuje żądania do dowolnego celu.
To wystarczy do testu, ale nie do pracy na produkcji. Traktuj API_KEY i każdy token celu jak
hasła. Pulpit nie ma własnego logowania, a przekaźnik działa na zwykłym HTTP. Otwórz port tylko dla
zaufanych sieci albo umieść przekaźnik za własną kontrolą dostępu.
Zanim zaczniesz
- Dostęp SSH jako root do maszyny, na której działa przekaźnik. Maszyna potrzebuje Pythona 3.10 lub
nowszego,
curl,unzipi systemd. - Dostęp wychodzący z tej maszyny do docelowych serwerów MCP.
- Wolny port TCP. Przekaźnik i jego pulpit używają portu
8001, chyba że go zmienisz. - Port
8001otwarty dla adresów IP Konrado (zobacz listę).
Podłączanie
Skopiuj polecenie instalacji
Otwórz Ustawienia obszaru roboczegoIntegracje, kliknij Dodaj integrację i wybierz Zdalny agent. Okno pokazuje trzy kroki i polecenie instalacji. Kliknij przycisk kopiowania obok polecenia. Okno ukrywa Twój klucz na ekranie, ale skopiowane polecenie go zawiera. Traktuj je więc jak hasło.
bash <(curl -s https://repo.konrado.ai/remote-agent/init.sh) --api-key=YOUR_KEY --callback-url=https://app.konrado.ai/api/integrations/servers/installUruchom je jako root
Zaloguj się na maszynę przez SSH jako root i wklej polecenie. Polecenie o nic nie pyta. Instalator
tworzy katalog /opt/KonradoAiRemoteAgent i użytkownika konrado-mcp-remote-agent, instaluje
przekaźnik i uruchamia konrado-mcp-remote-agent.service. Potem generuje API_KEY i zgłasza się do
Konrado. Aby użyć innego portu niż 8001, dopisz na końcu polecenia --port=8002 (lub swój port).
Poczekaj na połączenie
Okno pokazuje Nasłuchiwanie serwera… i sprawdza połączenie co 5 sekund. Gdy przekaźnik się zgłosi, pojawia się Połączono pomyślnie. Kliknij Gotowe. Polecenie można bezpiecznie uruchomić ponownie.
Ustaw listę dozwolonych
Otwórz pulpit pod adresem http://<SERVER_IP>:8001/dashboard i uzupełnij HOSTS w zakładce
Configuration. Zobacz ustawienia, aby sprawdzić, do czego służy każde pole.
Dostęp do prywatnego serwera MCP
Dla każdego prywatnego serwera MCP dodaj w Konrado połączenie Własny serwer MCP, które wskazuje na przekaźnik.
Otwórz formularz własnego serwera
Otwórz Ustawienia obszaru roboczegoIntegracje, kliknij Dodaj integrację i wybierz Własny serwer MCP.
Wskaż przekaźnik
| Pole | Co wpisać |
|---|---|
| Nazwa | Nazwę celu, na przykład Billing tools |
| Adres serwera | Adres przekaźnika, http://<SERVER_IP>:8001/mcp |
| Uwierzytelnianie | Własne nagłówki |
| Nagłówki żądania | Authorization z wartością Bearer <API_KEY>, Target-Host z hostem celu w takiej postaci, jak w HOSTS, oraz Target-Token z własnym tokenem serwera docelowego |
API_KEY przekaźnika znajduje się w pliku /opt/KonradoAiRemoteAgent/.env. Pokazuje go też wiersz
integracji Zdalny agent w Konrado, w polu Klucz API.
Przetestuj i dodaj
Kliknij Testuj połączenie. Zaznacz Ufam temu serwerowi. Moi agenci będą mogli używać jego narzędzi. i kliknij Dodaj serwer.
Konrado wysyła te trzy nagłówki z każdym żądaniem, a przekaźnik przesyła każde żądanie do celu.
Narzędzia celu działają wtedy jak narzędzia każdego własnego serwera MCP. Konrado korzysta tylko z
tych oznaczonych readOnlyHint: true i nie są one przypisane do usługi konkretnego klienta.
Przeczytaj stronę o własnym serwerze MCP, aby poznać
szczegóły.
Przekaźnik działa na zwykłym HTTP, więc nagłówki są przesyłane bez szyfrowania. Aby je zaszyfrować,
umieść przekaźnik za własnym serwerem proxy HTTPS i wpisz jego adres https:// w polu
Adres serwera.
Pulpit
Zakładka Logs pokazuje ostatnie żądania, kody statusu, czas trwania, informację, czy żądanie przeszło, czy zostało zablokowane, host celu i powód zablokowania.

W zakładce Configuration edytujesz HOSTS. Zmiany trafiają do pliku .env przekaźnika.

Jeśli później zmienisz SERVER_PORT, uruchom usługę ponownie i otwórz nowy port w zaporze. Konrado
nadal łączy się ze starym adresem. Otwórz więc wiersz integracji Zdalny agent w Konrado i zmień w polu
Adres serwera port na nowy.
Ustawienia
Przekaźnik odczytuje te ustawienia z pliku .env:
| Ustawienie | Co to jest |
|---|---|
API_KEY | Token typu bearer, którego Konrado i inni klienci używają, aby połączyć się z przekaźnikiem |
SERVER_BIND_IP_ADDRESS | Adres, na którym nasłuchuje, zwykle 0.0.0.0 |
SERVER_PORT | Port, na którym nasłuchuje, zwykle 8001 |
HOSTS | Lista JSON, którą edytujesz na pulpicie. Gdy jest pusta, przekaźnik przekazuje żądania do dowolnego Target-Host. Gdy jest uzupełniona, dopuszcza tylko wymienione hosty i może przypisać im inne adresy |
Każdy wpis w HOSTS może zawierać:
| Pole | Co to jest |
|---|---|
host | Wymagane. Wartość akceptowana z nagłówka Target-Host |
internalHost | Opcjonalne. Wewnętrzny host:port, z którym przekaźnik się łączy, gdy Target-Host pasuje do host |
label | Opcjonalne. Nazwa dla Twojego zespołu, na przykład cPanel EU clients |
HOSTS='[
{"host":"203.0.113.20:8000","label":"Direct target"},
{"host":"konrado-test:8000","internalHost":"203.0.113.20:8000","label":"Alias through internalHost"}
]'Sprawdź, czy działa
Przekaźnik widnieje na stronie Integracje ze statusem Połączono, typem Zdalny agent i numerem wersji. Konrado ponownie sprawdza połączenie co godzinę. Możesz też sprawdzić sam przekaźnik:
curl http://<SERVER_IP>:8001/healthPrzekaźnik odpowiada {"status": "healthy", "service": "Konrado AI Remote Agent"}. Aby sprawdzić
trasę do celu, wyślij żądanie MCP z oboma nagłówkami celu:
curl -i -X POST http://<SERVER_IP>:8001/mcp \
-H "Authorization: Bearer <API_KEY>" \
-H "Target-Host: <target-host>" \
-H "Target-Token: <target-token>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'Jeśli coś nie działa
| Co widzisz | Co zrobić |
|---|---|
| Pulpit się nie otwiera | Sprawdź, czy działa konrado-mcp-remote-agent.service i czy z Twojej sieci można połączyć się z tym portem |
403 z komunikatem Missing Authorization header lub Invalid API key | Wyślij Authorization: Bearer z kluczem API_KEY przekaźnika |
| Host '…' is not on the allowed HOSTS list | Dodaj host do HOSTS dokładnie w takiej postaci, w jakiej żądanie wysyła go w Target-Host |
| Żądanie z jednym nagłówkiem celu kończy się błędem | Wyślij oba nagłówki: Target-Host i Target-Token |
| Odpowiada sam przekaźnik zamiast celu | Żądanie nie zawierało nagłówków celu. Sprawdź pole Nagłówki żądania we własnym serwerze MCP |
| Połączono, ale Konrado nie używa żadnego narzędzia celu | Konrado korzysta tylko z narzędzi oznaczonych readOnlyHint: true. Wtyczka Konrado za przekaźnikiem oznacza je tylko w panelu Plesk |
| Nie da się dotrzeć do celu | Sprawdź internalHost we wpisie i to, czy maszyna przekaźnika łączy się z celem |
502 lub błąd połączenia z celem | Sprawdź, czy docelowy serwer MCP działa i odpowiada pod /mcp |
| Błąd połączenia w kroku instalacji | Uruchom poniższe polecenia na maszynie przekaźnika, a potem ponownie uruchom polecenie instalacji |
systemctl status konrado-mcp-remote-agent.service
journalctl -u konrado-mcp-remote-agent.service --since "15 minutes ago" --no-pager
systemctl restart konrado-mcp-remote-agent.service
ss -ltnp | grep ':8001'Aktualizacja przekaźnika
Gdy pojawi się nowa wersja, wiersz na stronie Integracje pokazuje Aktualizuj do v…. Konrado nie zaktualizuje przekaźnika za Ciebie. Kliknij ten przycisk, a potem uruchom pokazane polecenie na maszynie przekaźnika:
bash /opt/KonradoAiRemoteAgent/scripts/update.shUsuń integrację
Otwórz Ustawienia obszaru roboczegoIntegracje, otwórz menu wiersza (trzy kropki) i wybierz Usuń. Jeśli nic innego nie korzysta z przekaźnika, usuń go z maszyny jako root:
systemctl disable --now konrado-mcp-remote-agent.service
rm /etc/systemd/system/konrado-mcp-remote-agent.service
systemctl daemon-reload
rm -rf /opt/KonradoAiRemoteAgent
userdel konrado-mcp-remote-agent
groupdel konrado-mcp-remote-agentOstatnia aktualizacja: