Skip to main content
Glama

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