Athena Agent
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Athena AgentShow me recent earthquakes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Athena Agent — live earthquake feed
An Athena AI agent backed by an MCP server. It pulls real seismic readings from the USGS public feed and renders them in an interactive widget inside the chat.
Run it
npm install
npm start # http://localhost:8787/mcpVerify before touching Athena:
npx @modelcontextprotocol/inspector@latest --server-url http://localhost:8787/mcp --transport httpYou should see one tool, get_recent_earthquakes, and one resource,
ui://widget/quakes.html, with mimeType text/html+skybridge.
Related MCP server: usgs-earthquakes
Expose over HTTPS
Athena requires HTTPS. For development:
ngrok http 8787Register the agent at https://athenachat.bot/chatbot/mybots/create and set the MCP
URL to https://<your-subdomain>.ngrok.app/mcp — the /mcp path is required.
For a URL that survives past the demo, push this repo and deploy to Render or
Railway. Build command npm install, start command npm start. Both inject PORT,
which the server reads.
Prompts that trigger the tool
"Show me recent earthquakes"
"Has there been any seismic activity today?"
"Any big quakes in the past week?"
What makes the widget interactive
Control | Behaviour |
Magnitude slider | Filters instantly in the browser, no server call |
Row click | Expands depth, coordinates, tsunami flag |
Time window buttons | Calls |
State survives re-render through window.openai.setWidgetState.
Adapting this to another data source
Two places change, both marked in the code.
server.js— thefetchDatafunction. Return{ items: [...], meta: {...} }. Also update the tool name, description, andinputSchemato match the new domain.public/widget.html— therenderfunction, and the two control handlers.
Everything else (transport, resource registration, CORS, metadata) is domain-agnostic.
Things that will waste your time
window.openaiis undefined → the resource mimeType is not exactlytext/html+skybridge.callTooldoes nothing → the tool is missing_meta["openai/widgetAccessible"]: true.Widget can't fetch an API directly → the iframe CSP blocks it. Fetch server-side.
Athena still shows old tools → Settings → Connectors → Refresh.
Athena's docs import
@modelcontextprotocol/sdk/server/streamable-http.js. That path does not exist. It isstreamableHttp.js.
This server cannot be deployed
Maintenance
Related MCP Connectors
Real-time earthquake events from the US Geological Survey
Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts.
Live USGS earthquake alerts: M2.5+ 24h, mag, depth. Register in-session — free testnet funds.
Our Earthquake Monitor harnesses the USGS earthquake feed to provide you with up-to-the-minute
Related MCP Servers
- AlicenseAqualityCmaintenanceProvides access to the USGS Quakes API within Claude Desktop, enabling users to retrieve earthquake data and details through natural language queries.38 npm1MIT
- AlicenseNot gradedqualityCmaintenanceProvides access to the USGS Earthquake Catalog for querying earthquake events via the FDSNWS API, enabling natural language questions about earthquake data.3 npmMIT
- AlicenseAqualityCmaintenanceMCP server wrapping the USGS Earthquake Hazards API, enabling AI assistants to search the global earthquake catalog, look up event details, count quakes, find 'Did You Feel It' reports, and read realtime feeds.5MIT
- AlicenseAqualityDmaintenanceReal-time earthquake data and seismic monitoring for AI agents via the USGS Earthquake Catalog API.8MIT