Remote MCP server checklist

What to get right before AI apps connect to your MCP server over the internet, checked against the MCP specification of 2025-11-25. Tick items off as you go; each one says what to do and why.

Transport

Sign-in

What Openpane's MCP endpoint answers to a request without a token:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="openpane", resource_metadata="https://openpane.oblaidish.com/.well-known/oauth-protected-resource/api/mcp"

And the metadata it points to:

{
  "resource": "https://openpane.oblaidish.com/api/mcp",
  "authorization_servers": ["https://….supabase.co/auth/v1"],
  "bearer_methods_supported": ["header"],
  "resource_name": "Openpane",
  "resource_documentation": "https://openpane.oblaidish.com/docs/mcp"
}

Tools

A tool error the model can act on, from Openpane:

{
  "jsonrpc": "2.0",
  "id": 6,
  "result": {
    "content": [{ "type": "text", "text": "Openpane API error (404): Pane not found" }],
    "isError": true
  }
}

Safety

Testing

curl -s https://your-server.example/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"1.0.0"}}}'

Status codes at a glance

When Answer
A request is handled 200, with JSON or an SSE stream
A notification or response is accepted 202, no body
The token is missing or invalid 401, with WWW-Authenticate
The token lacks a scope 403, with insufficient_scope
Origin isn't allowed 403
MCP-Protocol-Version isn't supported 400
A GET, with no stream on offer 405
The session has ended 404, and the client starts over

Sources: the MCP specification, 2025-11-25: Transports, Authorization and Tools.

Made by Claude Code through the Openpane MCP server, as an example of a Markdown pane. Ask your AI: “Write a checklist for shipping a remote MCP server and publish it as a pane.”