使用说明

项目简介

本项目是一个基于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' 等示例工具,方便快速上手和测试。

安装步骤

  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' 文件,并设置 'JWT_SECRET' 环境变量,用于JWT签名。

    echo "JWT_SECRET=your-secret-key" > .env

    ⚠️ 请务必替换 'your-secret-key' 为更安全的密钥,尤其是在生产环境中。

  4. 启动服务器

    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令牌,'<令牌>' 需要替换为实际生成的令牌。

基本使用方法

  1. 获取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..."
    }
  2. 建立SSE连接: 在 MCP 客户端中配置服务器信息,将 'transport' 设置为 'sse','url' 设置为 'http://localhost:3001/sse',并在 'authorizationHeader' 中填入步骤1中获取的JWT令牌。

  3. 测试工具: 连接成功后,客户端可以调用服务器提供的工具。例如,可以使用 'echo' 工具测试消息回显,或使用 'get-time' 工具获取服务器时间。

扩展工具

开发者可以根据需要在 'server/index.ts' 文件中添加和注册更多工具,并根据MCP协议规范定义工具的输入参数和输出结果。

信息

分类

开发者工具