---
title: "MCP server-sent-events stream"
method: GET
path: "/mcp/sse"
tags: ["MCP"]
---

# MCP server-sent-events stream

`GET /mcp/sse`

## Request

- Base URL: `https://api.johnsessentials.com`
- URL: `https://api.johnsessentials.com/mcp/sse`
- Auth: HTTP bearer

Long-lived `text/event-stream` connection. The server pushes
JSON-RPC responses + asynchronous notifications down this stream;
the client posts requests on `/mcp/messages`. Sessions live in
Redis with a 15-minute TTL, refreshed on every touch.

Auth: `Authorization: Bearer je_live_sk_…`. Session ID is issued
on the `initialize` handshake and echoed back in the
`Mcp-Session-Id` response header — include it on every subsequent
`/mcp/messages` POST.

Keep-alive ping every 30 seconds. Reconnect on disconnect; the
client resumes by re-sending `initialize`.

**⚠ "Try it" caveat:** This is an SSE endpoint. Scalar's in-page
request runner is built for one-shot request/response cycles,
not long-lived streams — clicking Try it will either hang or
dump raw event bytes. Test against this surface with an actual
MCP client (Claude Desktop, Cursor, the `@modelcontextprotocol/inspector`
CLI), or follow [recipe #5: Connect Claude Desktop](/docs/recipes#mcp-claude-desktop).

## Response `200`

SSE stream opened.

## Other responses

- `401`: Auth failed (missing/malformed/invalid/expired/inactive key).

---

[API](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api.md) · [All operations](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api/llms.txt) · [OpenAPI document](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api/revisions/56586ff78e6d?raw)
