Environment
Problem
When configuring the Render MCP server in Claude Code, authentication fails in two different scenarios:
Scenario 1: With API Key Header
Config:
{
"render": {
"type": "http",
"url": "https://mcp.render.com/mcp",
"headers": {
"Authorization": "Bearer <VALID_API_KEY>"
}
}
}
- Claude Code shows:
Auth: ✗ not authenticated
- MCP tools like
list_services return unauthorized
- However,
select_workspace and get_selected_workspace work correctly
- The same API key works perfectly with the REST API (
api.render.com/v1/services)
Scenario 2: Without API Key (OAuth flow)
When removing the Authorization header and clicking "Authenticate" in Claude Code:
Error: HTTP 404: Invalid OAuth error response: SyntaxError: JSON Parse error: Unable to parse JSON string. Raw body: 404 page not found
The OAuth endpoint appears to return a 404.
Expected Behavior
Either:
- API key authentication should work as documented
- OAuth flow should open browser and complete authentication
Steps to Reproduce
- Add Render MCP server to Claude Code:
claude mcp add --transport http render https://mcp.render.com/mcp --header "Authorization: Bearer <API_KEY>"
- Run
/mcp in Claude Code
- Observe "Auth: ✗ not authenticated"
- Try using any tool like
list_services → returns "unauthorized"
- Alternatively, remove the header and click "Authenticate" → 404 error
Workaround
Using the REST API directly works fine with the same API key.
Environment
Problem
When configuring the Render MCP server in Claude Code, authentication fails in two different scenarios:
Scenario 1: With API Key Header
Config:
{ "render": { "type": "http", "url": "https://mcp.render.com/mcp", "headers": { "Authorization": "Bearer <VALID_API_KEY>" } } }Auth: ✗ not authenticatedlist_servicesreturnunauthorizedselect_workspaceandget_selected_workspacework correctlyapi.render.com/v1/services)Scenario 2: Without API Key (OAuth flow)
When removing the Authorization header and clicking "Authenticate" in Claude Code:
The OAuth endpoint appears to return a 404.
Expected Behavior
Either:
Steps to Reproduce
claude mcp add --transport http render https://mcp.render.com/mcp --header "Authorization: Bearer <API_KEY>"/mcpin Claude Codelist_services→ returns "unauthorized"Workaround
Using the REST API directly works fine with the same API key.