Skip to main content
Glama
anisirji

SSE MCP Server with JWT Authentication

πŸ” SSE MCP Server with JWT Authentication

This is a Model Context Protocol (MCP) SSE server with JWT-based authentication.
It allows you to expose multiple AI tools over an SSE transport, protected via secure Bearer Token flow.

Built with:

  • πŸš€ Node.js + Express

  • 🧩 @modelcontextprotocol/sdk

  • πŸ”’ JSON Web Tokens (JWT) for authentication

  • βš™οΈ Zod for input validation

βœ… Fully tested with @modelcontextprotocol/inspector

πŸ“‚ Project Structure

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

Related MCP server: MCP Toolkit

✨ Features

  • βœ… Secure SSE connection using Bearer JWT token

  • βœ… Dynamic Tool registration (echo, time, random number, etc.)

  • βœ… Tested with MCP Inspector

  • βœ… Logs all request lifecycle events

  • βœ… Session management for /message endpoint

  • πŸš€ Ready to extend for production use

βš™οΈ Setup

1. Clone the repository

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

2. Install dependencies

npm install

3. Create .env file

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

4. Run the server

npm run dev

βœ… Server will run on:

http://localhost:3001/sse

πŸ§ͺ Testing the server with MCP Inspector

Step 1 β€” Install MCP Inspector

πŸ“– Official Docs: MCP Inspector

npx @modelcontextprotocol/inspector

Step 2 β€” Generate a token

Use cURL to get your JWT token:

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

βœ… Example response:

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

Step 3 β€” Connect MCP Inspector

  1. Open Inspector UI

  2. Set Transport Type: SSE

  3. URL:

    http://localhost:3001/sse
  4. Add Authorization Header:

    Authorization: Bearer <your-token>
  5. Click Connect

πŸŽ‰ Success! Your server is now connected.

Step 4 β€” Test tools

Go to Tools tab in Inspector and click List Tools.

You will see:

  • βœ… test

  • βœ… echo

  • βœ… get-time

  • βœ… random-number

Test them and enjoy!

πŸ“– API Reference

πŸ”‘ Generate Token

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

πŸ”Œ SSE Endpoint (requires token)

GET /sse Authorization: Bearer <token>

πŸ“© Send Message to active session

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

🧩 Tools Reference

Tool Name

Description

test

Test connection (security check)

echo

Echo back provided message

get-time

Returns current server time

random-number

Returns random number (min/max)

πŸ—“οΈ Upcoming Changes

  • Token revocation list (blacklist)

  • Role-based tool access (scope checks)

  • Session heartbeat / keep-alive

  • Rate limiting & logging

  • Dockerization for deployment

πŸ“š Useful Resources

πŸ‘¨β€πŸ’» Maintainer

Aniket

πŸ“„ License

This project is open-source and free to use.

πŸš€ Build. Secure. Empower.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/anisirji/mcp-server-remote-setup-with-jwt-auth'

If you have feedback or need assistance with the MCP directory API, please join our Discord server