Nomina MCP

Markets research for agents

View the Project on GitHub nomina-xyz/nomina-mcp

Hosting

Nomina’s Streamable HTTP mode is stateless, keeps no data, and needs no secrets, so it runs on any container platform that terminates TLS and can health-check GET /healthz. The container listens on PORT (default 8000) and rejects requests whose Host header is not PUBLIC_HOST (comma-separated for several hostnames), the platform’s RENDER_EXTERNAL_HOSTNAME, localhost, or 127.0.0.1. GET / serves a small landing page and GET /icon.png / /favicon.ico the icon.

Current deployment (Render)

render.yaml at the repository root is deployed as a Render Blueprint from the public repository: service nomina-mcp, Docker runtime, free plan, health check /healthz, public host taken from Render’s RENDER_EXTERNAL_HOSTNAME. Live at https://mcp.nomina.io/mcp (custom domain: a DNS-only CNAME mcp → nomina-mcp.onrender.com in Nomina’s Cloudflare zone, TLS issued by Render; https://nomina-mcp.onrender.com/mcp stays as an alias). The release workflow triggers a redeploy through a Render deploy hook after each tagged release. Free instances sleep after 15 idle minutes and wake in about a minute; a paid instance removes that. There is no edge rate limiting yet.

The Fly.io and Cloud Run commands below follow each platform’s documentation and have not been run for Nomina; fly.toml is checked for TOML syntax only.

Fly.io

fly.toml at the repository root is ready to use:

fly launch --copy-config --no-deploy
fly secrets set PUBLIC_HOST=mcp.example.com
fly deploy
fly certs add mcp.example.com

Then point mcp.example.com at the app (CNAME <app>.fly.dev) and connect clients to https://mcp.example.com/mcp.

Google Cloud Run

gcloud run deploy nomina-mcp \
  --source . --region us-east1 --allow-unauthenticated \
  --port 8000 --set-env-vars PUBLIC_HOST=mcp.example.com \
  --min-instances 0 --max-instances 3 --concurrency 50
gcloud run domain-mappings create --service nomina-mcp --domain mcp.example.com

Before exposing it publicly