关于 🔐 SSE MCP Server with JWT Authentication
这是一个基于 Node.js 和 Express 的 MCP 服务,通过 SSE 提供工具,并要求 JWT Bearer 身份验证。适用于需要受认证保护的工具访问场景,支持动态注册、请求生命周期日志和会话处理。
主要功能
- 01通过 SSE 和 JWT Bearer 认证
- 02动态注册工具
- 03使用 Zod 验证输入
- 04记录请求生命周期事件
- 05管理消息端点会话
- 06提供回显、时间和随机数工具
适用场景
- 01通过受认证的 SSE 端点提供工具
- 02使用 Bearer 令牌连接 MCP 客户端
- 03用 MCP Inspector 测试工具
MCP 相关
该服务通过 SSE 向 MCP 客户端提供工具,并使用 JWT Bearer 令牌保护连接和消息端点。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
🔐 带 JWT 身份验证的 SSE MCP 服务
这是一个采用基于 JWT 的身份验证的 Model Context Protocol (MCP) SSE 服务。
它允许你通过 SSE 传输公开多个 AI 工具,并使用安全的 Bearer Token 流程进行保护。
使用以下技术构建:
- 🚀 Node.js + Express
- 🧩 @modelcontextprotocol/sdk
- 🔒 使用 JSON Web Tokens (JWT) 进行身份验证
- ⚙️ 使用 Zod 进行输入验证
✅ 已使用
@modelcontextprotocol/inspector完成全面测试
📂 项目结构
server/
├── index.ts # Main Express + MCP server
├── .env # Environment variables
├── package.json # Project metadata & scripts
├── tsconfig.json # TypeScript config
└── README.md # You are here!
✨ 功能
- ✅ 使用 Bearer JWT token 建立安全的 SSE 连接
- ✅ 动态注册工具(echo、时间、随机数等)
- ✅ 已通过 MCP Inspector 测试
- ✅ 记录所有请求生命周期事件
- ✅ 管理 /message 端点的会话
- 🚀 可扩展,适用于生产环境
⚙️ 设置
1. 克隆代码库
git clone https://github.com/anisirji/mcp-server-remote-setup-with-jwt-auth.git
cd mcp-server-remote-setup-with-jwt-auth
2. 安装依赖项
npm install
3. 创建 .env 文件
echo "JWT_SECRET=your-secret-key" > .env
4. 运行服务
npm run dev
✅ 服务将在以下地址运行:
http://localhost:3001/sse
🧪 使用 MCP Inspector 测试服务
步骤 1 — 安装 MCP Inspector
📖 官方文档:MCP Inspector
npx @modelcontextprotocol/inspector
步骤 2 — 生成 token
使用 cURL 获取 JWT token:
curl "http://localhost:3001/auth/token?username=aniket&scope=mcp:access"
✅ 示例响应:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
步骤 3 — 连接 MCP Inspector
- 打开 Inspector UI
- 设置传输类型:SSE
- URL:
http://localhost:3001/sse - 添加 Authorization Header:
Authorization: Bearer <your-token> - 点击 Connect
🎉 成功!你的服务现已连接。
步骤 4 — 测试工具
前往 Inspector 中的 Tools 标签页,然后点击 List Tools。
你将看到:
- ✅
test - ✅
echo - ✅
get-time - ✅
random-number
试用这些工具,尽情体验!
📖 API 参考
🔑 生成 Token
GET /auth/token?username=<username>&scope=mcp:access
🔌 SSE 端点(需要 token)
GET /sse
Authorization: Bearer <token>
📩 向活动会话发送消息
POST /message?sessionId=<sessionId>
Authorization: Bearer <token>
🧩 工具参考
| 工具名称 | 描述 |
|---|---|
test | 测试连接(安全检查) |
echo | 回显提供的消息 |
get-time | 返回当前服务时间 |
random-number | 返回随机数(最小值/最大值) |
🗓️ 即将推出的变更
- Token 撤销列表(黑名单)
- 基于角色的工具访问控制(范围检查)
- 会话心跳 / 保持活动
- 速率限制与日志记录
- 使用 Docker 部署
📚 有用的资源
👨💻 维护者
Aniket
📄 许可证
此项目为开源项目,可免费使用。
🚀 构建。保护。赋能。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
