Replace your existing token-based config:
{
"Dev1-TailOpsMCP": {
"type": "sse",
"url": "https://dev1.tailf9480.ts.net:8080/sse"
}
}That's it! No more tokens to manage.
ssh dev1.tailf9480.ts.net
cd /opt/systemmanager
# Stop old server
sudo pkill -f "python -m src.mcp_server"
# Start with OAuth
export SYSTEMMANAGER_AUTH_MODE=oauth
export SYSTEMMANAGER_AUTH_SERVER=https://tsidp.tailf9480.ts.net
./venv/bin/python -m src.mcp_server- Server starts and discovers your TSIDP endpoints
- Auto-registers as an OAuth client (one-time)
- Client connects and is redirected to TSIDP for auth
- You authenticate via Tailscale (browser opens)
- Token is issued and automatically refreshed
- MCP calls work with your Tailscale identity
✅ No manual token generation ✅ Automatic token refresh ✅ Real user identity tracking ✅ Centralized access control via TSIDP ✅ Standard OAuth 2.1 flow ✅ Works with any OAuth-aware MCP client
curl https://tsidp.tailf9480.ts.net/.well-known/openid-configurationShould return TSIDP metadata with endpoints.
tail -f /opt/systemmanager/logs/mcp_server.logLook for:
- "Using TSIDP OAuth 2.1 authentication"
- "Dynamic Client Registration successful"
- "Client ID: ..."
# Remove cached client credentials
rm ~/.systemmanager/oauth-client.json
# Restart server (will re-register)
./venv/bin/python -m src.mcp_server