io.github.belegante-byte/aetherx-mcp
# aetherx-mcp
<!-- mcp-name: io.github.belegante-byte/aetherx-mcp -->
**MCP server for the [Aether-X Port Congestion Oracle](https://aether-x-oracle-production.up.railway.app)** — gives any MCP-compatible agent (Claude Desktop, Cursor, VS Code, custom LLM agents) predictive port congestion signals for global trade and quantitative finance.
## Install
```bash
pip install aetherx-mcp
# or run without installing (recommended for MCP clients):
uvx aetherx-mcp
```
## Configure your MCP client
### Claude Desktop (`claude_desktop_config.json`)
```json
{
"mcpServers": {
"aetherx-oracle": {
"command": "uvx",
"args": ["aetherx-mcp"],
"env": { "RAPIDAPI_KEY": "SUA_RAPIDAPI_KEY" }
}
}
}
```
### Cursor (`~/.cursor/mcp.json`)
```json
{
"mcpServers": {
"aetherx-oracle": {
"command": "uvx",
"args": ["aetherx-mcp"],
"env": { "RAPIDAPI_KEY": "SUA_RAPIDAPI_KEY" }
}
}
}
```
## Tools
| Tool | Arguments | Returns |
|------|-----------|---------|
| `get_port_risk` | `port_id` (UN/LOCODE) | Congestion score, ETA delay, waiting vessels, freight volatility |
| `get_ports_risk` | `port_ids` (list) | Same, for a whole portfolio, fetched in parallel |
| `list_supported_ports` | — | The 15 pre-seeded ports (id, name, country) |
Every response is a typed payload:
```json
{
"port_id": "BRSSZ",
"port_name": "Santos",
"country": "Brasil",
"congestion_score": 0.78,
"eta_delay_days": 1.6,
"waiting_vessels": 12,
"freight_volatility_index": 0.42,
"updated_at": "2026-09-17 15:46:53"
}
```
## Configuration
| Variable | Default | Description |
|----------|---------|-------------|
| `RAPIDAPI_KEY` | — | When set, requests are routed through the RapidAPI gateway (metered billing) |
| `RAPIDAPI_HOST` | `aether-x-port-congestion-oracle.p.rapidapi.com` | RapidAPI host |
| `AETHERX_BASE_URL` | `https://aether-x-oracle-production.up.railway.app` | Direct API base URL |
Without `RAPIDAPI_KEY`, the server calls the public production API directly.
## Example agent prompts
- *"What's the congestion risk at Santos right now?"*
- *"Rank these ports by congestion: BRSSZ, CNSHA, NLRTM, USLAX."*
- *"Which of my Asian ports has the highest freight volatility index?"*
## License
MIT — see [LICENSE](LICENSE). The signals are provided "AS IS" and do not constitute investment advice. See the [Terms of Service](https://aether-x-oracle-production.up.railway.app/terms).
TDQS
Scored across 3 tools
The two risk tools differ only in cardinality (single vs. batch), but the names and descriptions clearly indicate which to use. list_supported_ports is entirely distinct. Minor potential confusion when querying one port, but explicit pluralization disambiguates.
All tools follow a consistent verb_noun snake_case pattern: get_ for queries, list_ for enumeration. Pluralization is used appropriately (port vs. ports), making the naming predictable and readable.
Three tools is minimal but appropriate for a read-only oracle with a fixed dataset. It covers listing, single query, and batch query without unnecessary bloat. Slightly thin, but well-scoped for the domain.
The tool set fully covers the domain: you can discover supported ports via list, query one port, or query many in parallel. There are no obvious dead ends or missing operations for the stated purpose of predictive congestion signals.