Content
# smoke-mcp-host
24/7 MCP server host in one Docker Compose stack. Runs on Oracle Cloud Free Tier, Render, Fly.io, or any VPS.
## Servers exposed
| Port | MCP server | Notes |
|------|--------------|-------|
| 8080 | SearXNG | Web search engine |
| 3000 | mcp-searxng | SearXNG MCP bridge |
| 3001 | brave-search | Requires `BRAVE_API_KEY` |
| 3002 | github | Requires `GITHUB_TOKEN` |
Each bridge speaks JSON-RPC over HTTP POST `/mcp` and exposes `/health`.
## Deploy on Oracle Cloud Free Tier
1. Sign up at https://www.oracle.com/cloud/free
2. Create an Always Free `VM.Standard.A1.Flex` instance (1 OCPU, 6GB RAM, 50GB disk)
3. Add your SSH key, open ingress TCP 22, 80, 443, 3000–3002, 8080
4. SSH in and run:
```bash
curl -fsSL https://raw.githubusercontent.com/cmasoninbox-art/smoke-mcp-host/main/install.sh | bash
```
Or manually:
```bash
git clone https://github.com/cmasoninbox-art/smoke-mcp-host.git
cd smoke-mcp-host
export GITHUB_TOKEN=ghp_xxx
export BRAVE_API_KEY=BSxxx
docker compose up -d
```
## Hermes config snippet
```yaml
mcp_servers:
cloud_searxng:
url: "http://YOUR_ORACLE_IP:3000/mcp"
timeout: 60
connect_timeout: 30
cloud_brave:
url: "http://YOUR_ORACLE_IP:3001/mcp"
timeout: 30
connect_timeout: 15
env:
BRAVE_API_KEY: "${BRAVE_API_KEY}"
cloud_github:
url: "http://YOUR_ORACLE_IP:3002/mcp"
timeout: 60
connect_timeout: 15
env:
GITHUB_TOKEN: "${GITHUB_TOKEN}"
```
## Security
Put Caddy or Nginx in front with HTTPS + Basic Auth before exposing to the internet. Plain HTTP leaks tool inputs and results.
## License
MIT