DEV Community

Prismix
Prismix

Posted on

We built a free MCP server so Claude can answer 'Is OpenAI down?' — here's how

You're deep in a coding session. Something breaks. The model call returns nothing. Your first instinct is to open a new tab, navigate to the vendor's status page, wait for it to load, and try to figure out if "Degraded Performance" means your specific API call is affected or not.

That context switch costs maybe 90 seconds. It feels longer.

At Prismix we track live status for 77 AI services — OpenAI, Anthropic, Cursor, Mistral, Perplexity, GitHub Copilot, and dozens more — at prismix.dev. We already had the data. The obvious next step was surfacing it where developers actually are: inside their AI assistant.

So we built an MCP server.


The setup takes 30 seconds

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "prismix-status": {
      "url": "https://prismix.dev/api/v1/mcp"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Restart Claude Desktop. That's it. No API key. No account. No npm package to install or keep updated.


What you can ask Claude now

Once connected, Claude has live access to our status data:

  • "Is OpenAI down right now?"
  • "Which AI services are currently having incidents?"
  • "What's the status of Anthropic's API?"
  • "Has Cursor been having issues today?"
  • "Show me all services with degraded performance"
  • "Is it just me or is GitHub Copilot acting up?"

Claude reads the current status, the active incident description, and the affected components — and answers in plain language without you switching context.


How the MCP endpoint works on Cloudflare Workers

The interesting engineering problem was making MCP work on Cloudflare Workers.

Workers are edge functions — stateless, no persistent connections, maximum execution time measured in seconds. The MCP spec was originally designed with stdio transports and long-lived sessions in mind. Those assumptions don't hold at the edge.

The solution was Streamable HTTP transport — the newer MCP transport that works as a standard POST/GET HTTP exchange. Each request is fully self-contained: client sends a JSON-RPC message, server responds, connection closes.

In Astro, the endpoint handles two methods:

  • GET — returns the server manifest (name, version, available tools)
  • POST — receives a tool call, fetches fresh status data from KV, returns the result
export const POST: APIRoute = async ({ request }) => {
  const body = await request.json();
  if (body.method === "tools/list") return json({ tools: TOOL_DEFINITIONS });
  if (body.method === "tools/call") {
    const status = await fetchCurrentStatus(); // reads from Cloudflare KV
    return json(formatToolResponse(body.params.name, status));
  }
};
Enter fullscreen mode Exit fullscreen mode

The edge constraint turned out to be an advantage. Because every request is stateless, there's nothing to go wrong between calls. No session to expire, no WebSocket to drop, no daemon to restart. The one tradeoff: MCP sessions that rely on server-sent state across calls need to re-fetch each time. For status data that's fine — we want fresh data anyway.


What people actually ask about

Something we noticed after launching: through the MCP endpoint, Cursor and GitHub Copilot get queried constantly — roughly on par with OpenAI. On the website it's mainly OpenAI and Anthropic.

That makes sense in retrospect. Cursor and Copilot are editor-native tools. When they break, you're already in your editor. Asking Claude via MCP is the natural move — you're already mid-conversation with it.

The right interface for developer tooling status is wherever the developer already is, not a page they navigate to.


Try it

{
  "mcpServers": {
    "prismix-status": {
      "url": "https://prismix.dev/api/v1/mcp"
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Full setup guide: prismix.dev/mcp-server

Prismix is a free AI infrastructure status hub tracking 77 services. The dashboard, REST API, and MCP server are all free, no login required.

Top comments (1)

Collapse
 
frank_signorini profile image
Frank

How did you handle errors and timeouts in the MCP server implementation, especially when interacting with the OpenAI model? I'm following your work for more insights on reliable AI integrations, would love to hear more about your approach.