SSE MCP Server with JWT Authentication

by anisirji
Verified

Integrations

  • Manages environment variables for server configuration, including JWT secrets.

  • Serves as the web framework for the MCP server, handling HTTP requests and SSE connections for AI tool communication.

  • Used for version control and project setup via cloning.

Servidor SSE MCP con autenticación JWT

Este es un servidor SSE de Protocolo de Contexto de Modelo (MCP) con autenticación basada en JWT.
Le permite exponer múltiples herramientas de IA a través de un transporte SSE, protegido a través de un flujo seguro de token portador.

Construido con:

  • 🚀 Node.js + Express
  • 🧩 @modelcontextprotocol/sdk
  • 🔒 Tokens web JSON (JWT) para autenticación
  • ⚙️ Zod para validación de entrada

✅ Completamente probado con @modelcontextprotocol/inspector

📂 Estructura del proyecto

server/ ├── index.ts # Main Express + MCP server ├── .env # Environment variables ├── package.json # Project metadata & scripts ├── tsconfig.json # TypeScript config └── README.md # You are here!

✨ Características

  • ✅ Conexión SSE segura mediante token JWT de portador
  • ✅ Registro dinámico de herramientas (eco, tiempo, número aleatorio, etc.)
  • ✅ Probado con MCP Inspector
  • ✅ Registra todos los eventos del ciclo de vida de la solicitud
  • ✅ Gestión de sesiones para el punto final /message
  • 🚀 Listo para extenderse para uso en producción

⚙️ Configuración

1. Clonar el repositorio

git clone https://github.com/anisirji/mcp-server-remote-setup-with-jwt-auth.git cd mcp-server-remote-setup-with-jwt-auth

2. Instalar dependencias

npm install

3. Crear archivo .env

echo "JWT_SECRET=your-secret-key" > .env

4. Ejecute el servidor

npm run dev

✅ El servidor se ejecutará en:

http://localhost:3001/sse

🧪 Probando el servidor con MCP Inspector

Paso 1: Instalar MCP Inspector

📖 Documentos oficiales: Inspector MCP

npx @modelcontextprotocol/inspector

Paso 2: Generar un token

Utilice cURL para obtener su token JWT:

curl "http://localhost:3001/auth/token?username=aniket&scope=mcp:access"

✅ Ejemplo de respuesta:

{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }

Paso 3: Conectar MCP Inspector

  1. Abrir la interfaz de usuario del Inspector
  2. Establecer tipo de transporte: SSE
  3. URL:
    http://localhost:3001/sse
  4. Agregar encabezado de autorización:
    Authorization: Bearer <your-token>
  5. Haga clic en Conectar

¡Éxito! Tu servidor ya está conectado.

Paso 4: Herramientas de prueba

Vaya a la pestaña Herramientas en el Inspector y haga clic en Herramientas de lista .

Verás:

  • test
  • echo
  • get-time
  • random-number

¡Pruébalos y disfrútalos!

Referencia de API

🔑 Generar token

GET /auth/token?username=<username>&scope=mcp:access

Punto final SSE (requiere token)

GET /sse Authorization: Bearer <token>

📩 Enviar mensaje a sesión activa

POST /message?sessionId=<sessionId> Authorization: Bearer <token>

🧩 Referencia de herramientas

Nombre de la herramientaDescripción
testConexión de prueba (comprobación de seguridad)
echoEcho de vuelta el mensaje proporcionado
get-timeDevuelve la hora actual del servidor
random-numberDevuelve un número aleatorio (mín./máx.)

🗓️ Próximos cambios

  • [ ] Lista de revocación de tokens (lista negra)
  • [ ] Acceso a herramientas basado en roles (verificaciones de alcance)
  • [ ] Latido de la sesión / mantener activa
  • [ ] Limitación de velocidad y registro
  • [ ] Dockerización para implementación

📚 Recursos útiles

👨‍💻 Mantenedor

Aniket

📄 Licencia

Este proyecto es de código abierto y de uso gratuito.

🚀 Construir. Asegurar. Empodera.

ID: miwcfrgnmg