Problem
When using mcp-remote to connect to VoiceMode Connect (https://voicemode.dev/mcp), the OAuth authorization flow fails with:
Invalid Authorization Request
Error: Invalid redirect URI
The redirect URI generated by mcp-remote is http://localhost:5450/oauth/callback, which voicemode.dev's OAuth server rejects.
Steps to Reproduce
- Add to
.mcp.json:
{"mcpServers": {"voicemode-dev": {"command": "npx", "args": ["-y", "mcp-remote", "https://voicemode.dev/mcp"]}}}
- Run
/mcp in Claude Code → select voicemode-dev → Reconnect
- OAuth URL generated includes
redirect_uri=http://localhost:5450/oauth/callback
- voicemode.dev returns 'Invalid redirect URI'
Environment
- Claude Code 2.1.85 on Ubuntu 24.04
- mcp-remote 0.1.37
- VoiceMode plugin voicemode@voicemode (connected, working for local voice)
connect_status MCP tool works — agent registers as online
- But
converse fails because local TTS/STT is broken (hardware mic issue)
- Need Connect for remote voice via phone
Expected
voicemode.dev should accept the localhost callback from mcp-remote, or provide an alternative auth flow for CLI agents.
Workaround Attempted
connect_status(set_presence='available') → returns 'away' (needs TeamCreate)
- Phone web client at app.voicemode.dev shows agent but converse button is greyed out
Problem
When using
mcp-remoteto connect to VoiceMode Connect (https://voicemode.dev/mcp), the OAuth authorization flow fails with:The redirect URI generated by mcp-remote is
http://localhost:5450/oauth/callback, which voicemode.dev's OAuth server rejects.Steps to Reproduce
.mcp.json:{"mcpServers": {"voicemode-dev": {"command": "npx", "args": ["-y", "mcp-remote", "https://voicemode.dev/mcp"]}}}/mcpin Claude Code → select voicemode-dev → Reconnectredirect_uri=http://localhost:5450/oauth/callbackEnvironment
connect_statusMCP tool works — agent registers as onlineconversefails because local TTS/STT is broken (hardware mic issue)Expected
voicemode.dev should accept the localhost callback from mcp-remote, or provide an alternative auth flow for CLI agents.
Workaround Attempted
connect_status(set_presence='available')→ returns 'away' (needs TeamCreate)