Connecting MCP Tools
Knowledge lets an agent know things; tools let it do things. AETHER connects agents to external systems using the Model Context Protocol (MCP) — an open standard for exposing tools, data and actions to AI models.
What is MCP?
An MCP server publishes a set of tools — typed functions the agent can call mid-conversation to fetch live data or take an action. Examples: look up an order, query a database, create a ticket, call an internal API, run a calculation.
When an agent has MCP tools available, the model decides when to call them based on the conversation and your system instructions, passes the right arguments, and weaves the result into its reply. Every tool call is recorded for auditing.
Connecting a server
You attach MCP servers to an agent from the builder. For each server you provide:
- its endpoint (the MCP server URL/transport), and
- any credentials it needs (for example an API key or OAuth connection).
Once connected, the agent's MCP Servers count in the Agent Status panel reflects the active connections, and the server's tools become available to the model.
Security: Tool credentials are stored encrypted. Grant an agent only the servers and tools it needs for its job — the same least-privilege thinking you'd apply to any integration.
Connecting to private / enterprise MCP servers
Have an MCP server that only runs inside your company network — behind a firewall or VPN, on
localhost, or on a private subnet with no public address? You can still connect it to an AETHER
agent. This section explains why it needs a little extra setup, then walks through three ways to do
it — all configured entirely on your side, with nothing to enable on AETHER.
Why a private server isn't reachable by default
AETHER agents run in the cloud. When an agent uses a tool it makes an outbound call to the server's endpoint URL — the agent is the client, your MCP server is the server. That's fine for public servers, but a server that only listens on a private network has no address the agent can dial, and corporate firewalls block unsolicited inbound traffic by design:
Fails: AETHER agent ──✗──▶ 🔒 firewall ──✗──▶ your MCP server (private)
(no inbound route in)
The fix: let your server dial out
Firewalls that block inbound almost always allow outbound HTTPS — the same traffic your laptop uses to browse the web. So instead of opening a hole in your firewall, you run a small tunnel (or proxy) next to your MCP server that dials out and publishes a stable public HTTPS endpoint. Your server is never exposed to inbound traffic; only the tunnel is. You then paste that public URL into AETHER like any other MCP server:
Works: your MCP server ──▶ tunnel client ══ outbound HTTPS ══▶ tunnel edge ◀── AETHER agent
(runs on your network) (public URL) (connects here)
Rule of thumb: if you can open
https://your-public-endpoint/mcpfrom a browser on the public internet, an AETHER agent can reach it too. Your only job is to create that endpoint securely.
Which approach should I use?
| Approach | Best for | Setup effort | Cost | Notes |
|---|---|---|---|---|
| Cloudflare Tunnel | Production; a stable hostname you own | Low | Free tier | Outbound-only; runs as a background service |
| ngrok | Quick pilots & development | Lowest | Free / paid | Random URL on free tier; reserved domain on paid |
| Reverse proxy in a DMZ | Teams who prefer their own infra, no third party | Medium | Your infra | You already manage controlled inbound access |
Option 1 — Cloudflare Tunnel (recommended)
cloudflared opens an outbound-only tunnel
from your network to Cloudflare and maps it to a hostname you control.
- Install
cloudflaredon any host that can reach your MCP server. - Authenticate, create a named tunnel, and route a hostname to your server's local address:
cloudflared tunnel login cloudflared tunnel create aether-mcp cloudflared tunnel route dns aether-mcp mcp.yourcompany.com cloudflared tunnel run --url http://localhost:3000 aether-mcp - Confirm it's live by opening
https://mcp.yourcompany.com/mcpin a browser. - Add it to your agent (see Add it to your agent below) using the endpoint
https://mcp.yourcompany.com/mcp.
No inbound ports are opened. For production, install the tunnel as a service so it survives reboots — see Keep the tunnel running.
Option 2 — ngrok (fastest to try)
Great for a quick proof of concept:
ngrok config add-authtoken <your-token>
ngrok http 3000
ngrok prints a public https://<random>.ngrok.app URL that forwards to your local server; use it
(plus your server's MCP path) as the endpoint. For anything beyond testing, add a reserved domain
so the URL stays stable across restarts, and apply a traffic policy (OAuth, IP restrictions) so
the endpoint isn't open to the world.
Option 3 — Self-hosted reverse proxy in a DMZ
If you'd rather not use a third-party tunnel, put a reverse proxy (nginx, Caddy, Envoy, …) in a DMZ that already has controlled inbound access and forward only the MCP path to the private server:
# nginx: expose only /mcp publicly, proxy through to the private MCP server
location /mcp/ {
proxy_pass http://10.0.0.5:3000/mcp/; # private address, never public
proxy_http_version 1.1; # keep-alive for streaming transports
proxy_set_header Host $host;
proxy_set_header Connection "";
}
Terminate TLS at the proxy and expose only the MCP path (never the whole host). To protect the
internal leg you can add mTLS or an IP allow-list between the proxy and your backend. The
public URL then becomes https://proxy.yourcompany.com/mcp.
Add it to your agent
Once you have a public HTTPS URL, connecting it is identical to any other server (see Connecting a server above):
- In the agent builder, open MCP Servers and choose Add MCP Server.
- Paste the public endpoint, e.g.
https://mcp.yourcompany.com/mcp. - Leave Transport on Auto-detect unless your server needs a specific mode (Streamable HTTP or SSE).
- Set Auth to match your server — a Static token (sent as
Authorization: Bearer …) or an OAuth connection. - Save. The MCP Servers count in the Agent Status panel updates and the server's tools become available to the model.
Verify the connection
- The MCP Servers count in the Agent Status panel should increase by one.
- Open the Test Console and ask the agent something that needs the tool; the invocation log records each tool call and its result.
- If the count doesn't move or tool calls fail, check Troubleshooting below.
Keep the tunnel running
The tunnel is the only path to your server, so it has to stay up:
- Run it as a service, not in a terminal window —
cloudflared service install, a systemd unit, a Windows service, or a container withrestart: always. - Host it somewhere always on that can always reach the MCP server (not a laptop).
- Avoid random URLs for anything permanent: an ngrok free-tier URL changes on restart and will break the agent's saved endpoint. Use a reserved domain or a named tunnel instead.
Security checklist
The tunnel provides reachability; you still need real authorization on top of it. Because a tunnel exposes your server to the internet, treat the public URL as sensitive:
- Authenticate every request at the server. AETHER sends the Static token (Bearer) or OAuth credentials you configure on every call — require them on your MCP server so the tunnel is just an encrypted pipe, not an open door.
- Expose only the MCP endpoint, never the whole host or other internal services.
- Grant least privilege — attach only the tools the agent actually needs for its job.
- Rotate credentials as you would for any internet-facing integration; AETHER stores them encrypted.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Server won't add / times out | Public URL not reachable, or wrong path | Open the URL in a browser; confirm it ends in your server's MCP path (often /mcp). |
| Added, but 0 tools load | Transport mismatch | Set Transport explicitly to Streamable HTTP or SSE instead of Auto-detect. |
| Tool calls return 401 / 403 | Server auth doesn't match AETHER's Auth setting | Make sure the token / OAuth you configured is exactly what the server expects. |
| Worked, then stopped | Tunnel down or URL changed | Restart the tunnel as a service; switch off random URLs (reserved domain / named tunnel). |
Using tools in workflows
You can also invoke a specific tool at a defined point in a guided conversation using an MCP Call step in the Workflow Designer — handy when you want a deterministic sequence rather than letting the model decide.
Next steps
- Workflow Designer — orchestrate tools and knowledge visually.
- Multi-Agent — let specialist agents (each with their own tools) collaborate.