Konradodocs

Remote Agent

Run a small relay inside your network that forwards MCP requests to the hosts you allow.

Remote Agent
Developer tools
A relay to MCP servers inside your network

Remote Agent is a small relay you install on a server you control, inside your network. It checks every request against its API key. When a request names an internal MCP server you allow, the relay forwards it there. It logs what it did. One public address can then front several private MCP servers.

Konrado reaches a private server through the relay with a Custom MCP server connection that carries the target's name and token. The Remote Agent connection itself reaches only the relay's own tools today, and those give Konrado nothing to use.

Install
One command as root
On a machine inside your network.
Port
8001
For the relay and its dashboard, unless you change it.
Allowlist
HOSTS
The hosts it may forward to, set in its dashboard.
Data
Passed through
It forwards answers as the target sends them.

How it works

The relay answers on /mcp and /sse. Every request needs its API key:

Authorization: Bearer <API_KEY>

A request with no target headers stays on the relay itself. A request that carries both target headers goes on to that MCP server:

Target-Host: <target-host>
Target-Token: <target-token>

The relay checks Target-Host against the HOSTS allowlist. It then connects to http://<host>/mcp, or to the host's internalHost, and sends Target-Token there as the bearer token. It passes on what the target answers, unchanged. The relay refuses a request with only one of the two headers.

What the relay can do

FeatureHow it helps
Reach private MCP serversOne relay fronts internal MCP servers, without exposing each one
Route by nameMap a public target name to an internal host:port
Allowlist targetsHOSTS limits which targets the relay forwards to
Keep MCP sessionsIt forwards the target's sign-in, cookies, session headers and streamed answers
Show its trafficThe dashboard lists recent requests, their status, duration, target and why one was blocked

What Konrado cannot do

Not possibleWhy
Reach a target through the Remote Agent connectionThat connection holds the relay's address and API key only, with no target headers. Connect each target as a Custom MCP server instead
Make an MCP server read-onlyEach target decides what its own tools do
Get past a target's sign-inA forwarded request still needs a valid target token
Find internal MCP servers on its ownTargets must be named in the request, and listed in HOSTS when the list is not empty
Forward plain web apps or other pathsThe relay carries MCP traffic on /mcp and /sse only
Replace your firewallYou decide which networks reach the relay and its dashboard
Security model

Use HOSTS as an allowlist. An empty HOSTS=[] forwards to any target, which suits a test, not production. Treat API_KEY and every target token as secrets. The dashboard has no sign-in of its own, and the relay serves plain HTTP. Open the port only to trusted networks, or put the relay behind your own access control.

Before you start

  • Root SSH access to the machine that runs the relay, with Python 3.10 or newer, curl, unzip and systemd.
  • Outbound access from that machine to the target MCP servers.
  • A free TCP port. The relay and its dashboard use 8001 unless you change it.
  • Port 8001 open to Konrado's IP addresses (see the list).

Connect

Copy the install command

Open Workspace SettingsIntegrations, click Add integration and choose Remote Agent. The sheet shows three steps and the install command. Click the copy button next to it. The sheet hides your key on screen, but the copied command contains it, so treat it like a password.

bash <(curl -s https://repo.konrado.ai/remote-agent/init.sh) --api-key=YOUR_KEY --callback-url=https://app.konrado.ai/api/integrations/servers/install

Run it as root

Log in to the machine over SSH as root and paste the command. It asks no questions. The installer creates /opt/KonradoAiRemoteAgent and the user konrado-mcp-remote-agent, installs the relay and starts konrado-mcp-remote-agent.service. Then it generates the API_KEY and reports back to Konrado. To use another port than 8001, add --port=8002 (or yours) at the end of the command.

Wait for the connection

The sheet reads Listening for your server… and checks every 5 seconds. When the relay reports back it shows Connected successfully. Click Done. Running the command again is safe.

Set the allowlist

Open the dashboard at http://<SERVER_IP>:8001/dashboard and fill in HOSTS under Configuration. See the settings for what each field does.

Reach a private MCP server

For each private MCP server, add a Custom MCP server in Konrado that points at the relay.

Open the custom server form

Open Workspace SettingsIntegrations, click Add integration and choose Custom MCP server.

Point it at the relay

FieldWhat to enter
NameThe target's name, such as Billing tools
Server URLThe relay's address, http://<SERVER_IP>:8001/mcp
AuthenticationCustom headers
Request headersAuthorization with Bearer <API_KEY>, Target-Host with the target's host as HOSTS lists it, and Target-Token with the target server's own token

The relay's API_KEY sits in /opt/KonradoAiRemoteAgent/.env. The Remote Agent row in Konrado shows it too, under API Key.

Test and add

Click Test Connection. Tick I trust this server. My agents will be able to call its tools. and click Add server.

Konrado sends the three headers with every request, and the relay forwards each request to the target. The target's tools then work like any custom MCP server's: Konrado takes only the ones marked readOnlyHint: true, and they are not tied to one customer's service. Read the Custom MCP server page for the details.

The relay serves plain HTTP, so the headers travel unencrypted. To encrypt them, put the relay behind your own HTTPS proxy and use its https:// address as the Server URL.

The dashboard

The Logs tab shows recent requests, status codes, durations, whether each passed or was blocked, the target host and why a request was blocked.

The Remote Agent dashboard's Logs tab

The Configuration tab edits HOSTS and saves it to the relay's .env file.

The Remote Agent dashboard's Configuration tab with a HOSTS list and the Save & Apply button

If you change SERVER_PORT later, restart the service and open the new port in your firewall. Konrado still calls the old address, so open the Remote Agent row in Konrado and change its Server URL to the new port.

Settings

The relay reads these from its .env file:

SettingWhat it is
API_KEYThe bearer token Konrado and other clients use to reach the relay
SERVER_BIND_IP_ADDRESSThe address it listens on, usually 0.0.0.0
SERVER_PORTThe port it listens on, usually 8001
HOSTSA JSON list you edit in the dashboard. Empty, it forwards to any Target-Host. Filled in, it allows only the hosts listed and can map them

Each HOSTS entry can hold:

FieldWhat it is
hostRequired. The value accepted from the Target-Host header
internalHostOptional. The internal host:port the relay connects to when Target-Host matches host
labelOptional. A name for your team, such as 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"}
]'

Check it works

The relay is on the Integrations page as Connected, with the type Remote Agent and its version. Konrado tests the connection again every hour. You can also check the relay itself:

curl http://<SERVER_IP>:8001/health

It answers {"status": "healthy", "service": "Konrado AI Remote Agent"}. To test a route, send an MCP request with both target headers:

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"}}}'

If something is wrong

What you seeWhat to do
The dashboard does not openCheck that konrado-mcp-remote-agent.service runs and that your network reaches the port
403 with Missing Authorization header or Invalid API keySend Authorization: Bearer with the relay's API_KEY
Host '…' is not on the allowed HOSTS listAdd the host to HOSTS, exactly as the request sends it in Target-Host
A request with one target header failsSend both Target-Host and Target-Token
The relay's own answer instead of the target'sThe request carried no target headers. Check the Custom MCP server's Request headers
Connected, but Konrado uses no tool from the targetKonrado takes only tools marked readOnlyHint: true. A Konrado plugin behind the relay marks them on Plesk only
The target is not reachedCheck the entry's internalHost and that the relay's machine reaches the target
502 or a connection error from the targetCheck that the target MCP server is up and answers on /mcp
Connection error in the install stepRun the commands below on the relay's machine, then run the install command again
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'

Update the relay

When a new version is out, the row on the Integrations page shows Update to v…. Konrado cannot update the relay for you: click it, then run the command it shows on the relay's machine:

bash /opt/KonradoAiRemoteAgent/scripts/update.sh

Remove the integration

Open Workspace SettingsIntegrations, open the row menu (three dots) and choose Delete. Then, if nothing else uses the relay, remove it from its machine as 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-agent

Last updated on

On this page