article
README
🚀 基于JWT认证的SSE MCP服务器
这是一个支持JWT身份验证的模型上下文协议(MCP)SSE服务器,它允许通过安全的Bearer令牌流公开多个AI工具,为用户提供安全、便捷的AI工具访问方式。
🚀 快速开始
本服务器使用了以下技术搭建:
- 🚀 Node.js + Express
- 🧩 @modelcontextprotocol/sdk
- 🔒 JSON Web Tokens (JWT) 进行认证
- ⚙️ Zod 用于输入验证
✅ 已经通过
@modelcontextprotocol/inspector进行全面测试
📂 项目结构
server/
├── index.ts # 主Express + MCP服务器
├── .env # 环境变量文件
├── package.json # 项目元数据及脚本
├── tsconfig.json # TypeScript配置
└── README.md # 您在此处!
✨ 主要特性
- ✅ 使用Bearer JWT令牌的SSE安全连接,保障数据传输安全。
- ✅ 动态工具注册(回声、时间、随机数等),方便用户灵活使用。
- ✅ 已通过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 — 生成令牌
使用cURL获取您的JWT令牌:
curl "http://localhost:3001/auth/token?username=aniket&scope=mcp:access"
✅ 示例响应:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
步骤3 — 连接MCP Inspector
- 打开Inspector UI
- 设置SSE连接
- 添加以下头信息:
- Authorization: Bearer 令牌值
- 点击"Connect"
这样,您就可以开始测试各种工具了!
工具示例
基础用法
回声工具(Echo Tool)
app.use('/echo', (req, res) => {
res.send({ echo: req.query.text });
});
时间工具(Time Tool)
app.use('/time', (req, res) => {
res.send({ time: new Date().toISOString() });
});
📚 详细文档
API参考
生成令牌
- 请求方式:GET
- 路径:
/auth/token - 参数:
username: 用户名scope: 权限范围(例如:mcp:access)
- 响应:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
SSE连接
- 请求方式:GET
- 路径:
/sse
发送消息到会话
- 请求方式:POST
- 路径:
/message/{sessionId} - 正文内容:
{
"text": "消息文本"
}
🔧 技术细节
未来计划
- Token revoke列表:支持令牌撤销功能,进一步增强系统安全性。
- 基于角色的访问控制(RBAC):增强安全性,实现更精细的权限管理。
- 工具发现机制:自动发现可用工具,提升用户使用体验。
- 日志记录与监控:添加日志和性能监控,便于系统运维和性能优化。
这个项目为构建一个安全且可扩展的AI工具平台提供了坚实的基础。尽管目前可能还需要一些额外的功能来完善,但现有的结构和文档已经非常清晰了。
Scan to join WeChat group