使用说明
项目简介
本项目是一个基于Model Context Protocol (MCP) 的SSE服务器实现,采用JWT进行身份验证,用于安全地向LLM客户端提供上下文服务和工具能力。它使用Node.js和Express框架搭建,集成了MCP SDK,并提供了包括身份验证、工具注册、会话管理等核心功能。
主要功能点
- 安全的SSE连接:通过SSE(Server-Sent Events)协议与客户端通信,提供实时的上下文数据推送。
- JWT身份验证:采用JSON Web Tokens (JWT) 进行用户身份验证,保障服务器安全。
- 动态工具注册:允许服务器动态注册和管理各种工具,扩展LLM的功能。
- 会话管理:支持会话管理,跟踪和维护客户端连接状态。
- 请求日志:记录所有请求生命周期事件,方便调试和监控。
- 预置示例工具:内置了 'test', 'echo', 'get-time', 'random-number' 等示例工具,方便快速上手和测试。
安装步骤
-
克隆仓库
git clone https://github.com/anisirji/mcp-server-remote-setup-with-jwt-auth.git cd mcp-server-remote-setup-with-jwt-auth -
安装依赖
npm install -
配置环境变量 在项目根目录下创建 '.env' 文件,并设置 'JWT_SECRET' 环境变量,用于JWT签名。
echo "JWT_SECRET=your-secret-key" > .env⚠️ 请务必替换 'your-secret-key' 为更安全的密钥,尤其是在生产环境中。
-
启动服务器
npm run dev服务器默认运行在 'http://localhost:3001/sse'。
服务器配置(MCP客户端)
以下为 MCP 客户端连接本 MCP 服务器的配置信息,请根据实际情况进行配置。
{ "serverName": "jwt-sse-mcp-server", "command": "node", "args": ["server/index.ts"], "transport": "sse", "url": "http://localhost:3001/sse", "authorizationHeader": "Authorization: Bearer <令牌>" }
参数说明:
- 'serverName': 服务器名称,可自定义。
- 'command': 运行服务器的命令,这里使用 'node'。
- 'args': 启动服务器的参数,指向 'server/index.ts'。
- 'transport': 传输协议,设置为 'sse'。
- 'url': SSE端点URL,默认为 'http://localhost:3001/sse'。
- 'authorizationHeader': 认证Header,用于传递JWT令牌,'<令牌>' 需要替换为实际生成的令牌。
基本使用方法
-
获取JWT令牌: 客户端需要先访问 '/auth/token' 端点获取JWT令牌才能连接SSE服务。 使用 GET 请求访问 'http://localhost:3001/auth/token?username=<用户名>&scope=mcp:access',替换 '<用户名>' 为自定义用户名,即可获取令牌。 例如:
curl "http://localhost:3001/auth/token?username=testuser&scope=mcp:access"响应示例:
{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." } -
建立SSE连接: 在 MCP 客户端中配置服务器信息,将 'transport' 设置为 'sse','url' 设置为 'http://localhost:3001/sse',并在 'authorizationHeader' 中填入步骤1中获取的JWT令牌。
-
测试工具: 连接成功后,客户端可以调用服务器提供的工具。例如,可以使用 'echo' 工具测试消息回显,或使用 'get-time' 工具获取服务器时间。
扩展工具
开发者可以根据需要在 'server/index.ts' 文件中添加和注册更多工具,并根据MCP协议规范定义工具的输入参数和输出结果。
信息
分类
开发者工具