SSE MCP Server with JWT Authentication
by anisirji
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.
Last updated: N/A
๐ 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!
โจ 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
- Open Inspector UI
- Set Transport Type: SSE
- URL:
http://localhost:3001/sse
- Add Authorization Header:
Authorization: Bearer <your-token>
- 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.