anisirji/mcp-server-remote-setup-with-jwt-auth
If you are the rightful owner of mcp-server-remote-setup-with-jwt-auth and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This is a Model Context Protocol (MCP) SSE server with JWT-based authentication, allowing secure exposure of multiple AI tools over an SSE transport.
π 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.