Din Sveriges Radio MCP Server har nu fullt fungerande Bearer token-autentisering.
Ditt säkra token har genererats och finns i .env:
MCP_AUTH_TOKEN=NToDYQZVPx6u7KGfvNwF4abbZAQqefoxgZkPjKLysFg
.envär i.gitignoreoch pushas INTE till GitHub- Dela ALDRIG ditt token publikt
- För production: Använd environment variables i Render
Starta servern:
npm run start:streamableTesta health check (ingen auth):
curl http://localhost:3000/healthAnslut med Bearer token:
curl -H "Authorization: Bearer NToDYQZVPx6u7KGfvNwF4abbZAQqefoxgZkPjKLysFg" \
http://localhost:3000/sseKonfigurera i Lovable:
{
"url": "http://localhost:3000/sse",
"headers": {
"Authorization": "Bearer NToDYQZVPx6u7KGfvNwF4abbZAQqefoxgZkPjKLysFg"
}
}Lägg till i Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"sverigesradio": {
"url": "http://localhost:3000/sse",
"headers": {
"Authorization": "Bearer NToDYQZVPx6u7KGfvNwF4abbZAQqefoxgZkPjKLysFg"
}
}
}
}Steg 1: Gå till Render Dashboard → Environment
Steg 2: Lägg till environment variable:
MCP_AUTH_TOKEN=NToDYQZVPx6u7KGfvNwF4abbZAQqefoxgZkPjKLysFg
Steg 3: Använd din production URL:
https://sverigesradio-mcp.onrender.com/sse
Autentiseringen är verifierad och fungerar:
✅ Health check (no auth): HTTP 200 OK
✅ MCP utan token: HTTP 401 Unauthorized
✅ MCP med fel token: HTTP 401 Unauthorized
✅ MCP med rätt token: HTTP 200 OK (SSE stream)
- ✅
/sseendpoint (MCP connection) - ✅
/mcpendpoint (MCP connection)
/health- Health check (visar inte känslig info)
- Rotera token regelbundet (generera nytt med:
node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))") - Använd HTTPS i production (Render gör detta automatiskt)
- Olika tokens för dev/prod (skapa
.env.productionför Render)
Om du behöver nytt token:
# Generera nytt token
node -e "console.log('MCP_AUTH_TOKEN=' + require('crypto').randomBytes(32).toString('base64url'))"
# Uppdatera .env med nya värdet
# Starta om servern
npm run start:streamablePackage: dotenv (installerad)
Fil: src/streamable-http-server.ts
Metod: Bearer token via Authorization header
import 'dotenv/config'; // Laddar .env automatiskt
const AUTH_TOKEN = process.env.MCP_AUTH_TOKEN;
function authenticate(req: http.IncomingMessage): boolean {
if (!AUTH_TOKEN) return true; // Public om ingen token
const authHeader = req.headers['authorization'];
const token = authHeader?.startsWith('Bearer ')
? authHeader.substring(7)
: authHeader;
return token === AUTH_TOKEN;
}Lösning: .env laddas inte. Kontrollera att:
.envfinns i root-mappendotenvär installerat (npm install dotenv)import 'dotenv/config'finns istreamable-http-server.ts
Lösning: Kontrollera:
- Token matchar exakt (inga mellanslag)
- Header format:
Authorization: Bearer TOKEN - Servern har startats om efter
.envändrades
Svar: Detta är normalt! SSE är ett streaming-protokoll. Använd MCP-klient istället för curl för att behålla connection.
- Token genererat
-
.envskapad (gitignored) - dotenv installerat
- Import i streamable-http-server.ts
- Autentisering testad lokalt
- Kommit och pushat till GitHub
- Render environment variables konfigurerade
- Production endpoint testad
🎉 Grattis! Din MCP Server är nu säker och redo för deployment!
Nästa steg: Deploy till Render och uppdatera README med production URL.