Skip to main content

Server Map

ServerMCP URLHealth URLAuth
Dataloaderhttps://market-data-loader-production.up.railway.app/mcp/dataloaderhttps://market-data-loader-production.up.railway.app/healthoptional bearer
Fama-French Replicatehttps://fama-french-factors-production.up.railway.app/mcp/fama_french_replicatehttps://fama-french-factors-production.up.railway.app/healthoptional bearer
Statistical Factor Modelshttps://backend-production-c775c.up.railway.app/mcp/statistical-factor-modelshttps://backend-production-c775c.up.railway.app/healthoptional bearer
Jump Modelshttps://mcp-production-11da.up.railway.app/mcp/jump-modelshttps://mcp-production-11da.up.railway.app/healthno bearer
Wavelet Mean Reversionhttps://wavelet-mean-reversion-production.up.railway.app/mcp/waveletmeanreversionhttps://wavelet-mean-reversion-production.up.railway.app/healthoptional bearer
Parallax ExtremeHurstcoming soonhttps://parallax-hurst-signals-production.up.railway.app/healthoptional bearer
EP Ratio Screenerhttps://ep-ratio-screener-production.up.railway.app/mcp/epratioscreenerhttps://ep-ratio-screener-production.up.railway.app/healthoptional bearer
Volatility Scaling Labhttps://volatility-scaling-lab-production.up.railway.app/mcp/qca-open-loop-volatilityhttps://volatility-scaling-lab-production.up.railway.app/healthoptional bearer

Shared Assumptions

  • If bearer auth is disabled, clients can connect directly without auth.
  • If bearer auth is enabled, use a client that supports custom Authorization headers.
  • Tool calls use the generated request envelope: {"request": {...}}.
  • Verify /health before wiring the MCP URL into a production client.
  • Direct streamable HTTP calls require a session handshake before tools/list or tools/call.

Cursor

Cursor reads MCP config from either project-local .cursor/mcp.json or global ~/.cursor/mcp.json.
{
  "mcpServers": {
    "dataloader": {
      "url": "https://market-data-loader-production.up.railway.app/mcp/dataloader"
    },
    "fama-french-replicate": {
      "url": "https://fama-french-factors-production.up.railway.app/mcp/fama_french_replicate"
    },
    "statistical-factor-models": {
      "url": "https://backend-production-c775c.up.railway.app/mcp/statistical-factor-models"
    },
    "jump-models": {
      "url": "https://mcp-production-11da.up.railway.app/mcp/jump-models"
    },
    "wavelet-mean-reversion": {
      "url": "https://wavelet-mean-reversion-production.up.railway.app/mcp/waveletmeanreversion"
    },
    "parallax-extreme-hurst": {
      "url": "coming soon"
    },
    "ep-ratio-screener": {
      "url": "https://ep-ratio-screener-production.up.railway.app/mcp/epratioscreener"
    },
    "volatility-scaling-lab": {
      "url": "https://volatility-scaling-lab-production.up.railway.app/mcp/qca-open-loop-volatility"
    }
  }
}
If a server is authless, omit the headers block for that entry.

Claude Desktop

Claude Desktop uses remote connectors for remote MCP servers.
  1. Open Settings > Connectors.
  2. Choose Add custom connector.
  3. Enter a connector name and the remote MCP URL.
  4. Connect and enable the tools you want.
Claude remote connectors support authless and OAuth-based remote MCP servers. They are not a good fit for static bearer-header-only auth configured manually in local JSON. For protected endpoints, use an OAuth-capable gateway, a trusted network path, or an authless connector-facing endpoint with a limited tool surface and rate limiting.

Generic HTTP / Streamable MCP Clients

Health Check

curl -fsS https://volatility-scaling-lab-production.up.railway.app/health

List Tools With Session Handshake

tmp_headers=$(mktemp)
tmp_body=$(mktemp)

curl -sS -D "$tmp_headers" -o "$tmp_body" \
  -X POST https://volatility-scaling-lab-production.up.railway.app/mcp/qca-open-loop-volatility \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer <volscale_token>" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0.1"}}}'

SESSION_ID=$(awk 'tolower($1)=="mcp-session-id:" {gsub("\r","",$2); print $2}' "$tmp_headers")

curl -sS -o /dev/null \
  -X POST https://volatility-scaling-lab-production.up.railway.app/mcp/qca-open-loop-volatility \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer <volscale_token>" \
  -H "MCP-Session-Id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

curl -sS \
  -X POST https://volatility-scaling-lab-production.up.railway.app/mcp/qca-open-loop-volatility \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "Authorization: Bearer <volscale_token>" \
  -H "MCP-Session-Id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

rm -f "$tmp_headers" "$tmp_body"

Python FastMCP Client

import asyncio
from fastmcp import Client

async def main() -> None:
    async with Client("https://volatility-scaling-lab-production.up.railway.app/mcp/qca-open-loop-volatility") as client:
        result = await client.call_tool(
            "compute-ewma-volatility-series",
            {"request": {"ticker": "SPY", "start_date": "2020-01-01", "halflife": 252, "annualize": True}},
        )
        print(result)

asyncio.run(main())

Verification Checklist

  • /health responds successfully.
  • tools/list returns the expected server-specific tools.
  • Auth behavior matches the selected client.
  • One small deterministic tool call succeeds before the server is used in a longer workflow.