项目简介

此仓库包含一个示例应用,用于演示如何使用 Logto 实现基于角色的访问控制 (RBAC),以及如何通过 Model Context Protocol (MCP) 安全地连接 AI 工具到现有服务。项目分为三个主要部分:一个 Node.js 后端 API 服务器(包含 RBAC)、一个 React 前端应用以及一个专门用于 Model Context Protocol (MCP) 的 Node.js 程序。本说明主要关注其中的 MCP 服务器部分。

主要功能点

该 MCP 服务器是示例应用的一部分,其核心功能是作为一个适配器,让支持 MCP 协议的 AI 客户端(如某些 LLM 桌面应用)能够安全地访问和调用示例内容管理系统 (CMS) 后端的特定功能。

具体而言,此 MCP 服务器示例:

  • 实现了 MCP 协议的服务器端逻辑。
  • 注册了一个名为 'get-available-article-count' 的工具,允许 AI 客户端调用以获取 CMS 系统中的文章总数。
  • 演示了如何使用 Personal Access Token (PAT) 与认证服务(Logto)交换临时的 Access Token,并使用此 Access Token 安全地调用受 RBAC 保护的后端 API。
  • 通过标准输入/输出 (Stdio) 传输协议与 AI 客户端通信。

它展示了如何将现有的、受访问控制保护的服务能力暴露给 AI,同时保留原有的安全策略。

安装步骤

要运行此 MCP 服务器示例,您需要首先设置整个示例项目。

  1. 克隆仓库: 将 GitHub 仓库克隆到本地。
  2. 设置后端: 进入 'backend/' 目录,安装依赖 ('npm install'),复制 '.env.example' 为 '.env' 并根据您的 Logto 配置更新环境变量。
  3. 设置前端 (可选,但推荐用于理解整个流程): 进入 'frontend/' 目录,安装依赖 ('npm install'),复制 '.env.example' 为 '.env' 并更新环境变量。
  4. 设置 MCP 服务器: 进入 'mcp-server/' 目录。 安装依赖:'npm install' 编译 TypeScript 代码:通常需要运行构建命令,例如 'npm run build' 或 'tsc'(具体命令请参考项目内的 'package.json' 或相关构建文档,示例代码结构通常会将输出放在 'dist/' 目录)。 复制 '.env.example' 为 '.env'(如果在 'mcp-server' 目录下存在此文件,否则请参考 'mcp-server/src/config.ts' 了解需要设置哪些环境变量)并更新以下关键环境变量,这些信息通常从您的 Logto 配置和后端 API 地址获取:
    • 'TOKEN_ENDPOINT': Logto 的 Token Exchange Endpoint 地址。
    • 'CMS_API_BASE': 您的 CMS 后端 API 的基础 URL (例如 'http://localhost:3000')。
    • 'CMS_CLIENT_ID': 用于 Token Exchange 的 Logto 客户端 ID。
    • 'CMS_API_RESOURCE': 您的 CMS 后端 API 在 Logto 中注册的资源标识符。
    • 'PERSONAL_ACCESS_TOKEN': 一个具有足够权限(例如可以列出文章的 Scope)的 Logto Personal Access Token。
  5. 启动后端和 MCP 服务器: 先启动后端服务器,通常在 'backend/' 目录下运行 'npm start' 或 'npm run dev'。 然后启动 MCP 服务器。根据您的构建设置,通常在 'mcp-server/' 目录外或内部,运行类似 'node mcp-server/dist/index.js' 或 'npm start'(如果 'package.json' 中配置了启动脚本)的命令来运行编译后的 JavaScript 文件。请确保运行命令时,相关的环境变量已正确加载。

服务器配置(用于 MCP 客户端)

要让 MCP 客户端(如 Claude Desktop)连接到此 MCP 服务器,您需要在客户端中添加一个 MCP 服务器配置。配置信息通常是一个 JSON 对象,至少需要包含服务器的名称和启动服务器进程的命令及其参数。

对于此示例 MCP 服务器,典型的配置信息结构如下(具体的值请根据您的实际文件路径和运行方式调整):

  • 'serverName': 此服务器的标识名称,硬编码为 '"cms-mcp-server"'。
  • 'command': 启动服务器进程的可执行命令。对于 Node.js 应用,通常是 'node'。
  • 'args': 传递给 'command' 的参数列表。对于此项目编译后的输出,通常是编译后主入口文件的路径,例如 '["mcp-server/dist/index.js"]'。请确保路径相对于您运行 'command' 的工作目录是正确的。

请在您的 MCP 客户端中添加一个新的服务器配置,并填写相应的服务器名称、命令和参数。

基本使用方法

在成功启动后端服务器和 MCP 服务器,并在 MCP 客户端中配置好服务器连接后,您就可以通过 MCP 客户端与您的 LLM 交互,利用此 MCP 服务器提供的能力。

您可以尝试向 LLM 提出一个需要获取文章数量的问题,例如“CMS 系统里有多少篇文章?”。如果一切设置正确,LLM 客户端应该会识别出这是一个可以由注册的 'get-available-article-count' 工具处理的请求,并通过 MCP 协议调用您的 MCP 服务器。服务器将执行相应的后端 API 调用,并将结果(文章数量)返回给客户端,最终呈现给 LLM。

信息

分类

商业系统