使用说明

项目简介

本项目是一个演示性质的 MCP (Model Context Protocol) 服务器,构建于 ArcBlock 平台之上。它展示了如何创建一个 MCP 服务器,向 LLM 客户端提供资源访问、工具调用和 Prompt 模板渲染等核心功能,从而帮助开发者构建更强大的 LLM 应用。

主要功能点

  • 资源管理: 通过统一的 URI 格式 (例如 'document://getting-started') 提供对文档等资源的访问能力。客户端可以请求服务器获取资源内容,作为 LLM 的上下文信息。
  • 工具注册与执行: 内置了多种实用工具,例如:
    • 'calculator': 执行基本的算术运算。
    • 'text-transform': 进行文本转换,如大小写转换、反转等。
    • 'db-query': 模拟数据库查询,返回预设的模拟数据。
    • 'datetime': 提供日期和时间操作,如获取当前时间、格式化日期等。
    • 'storytelling': 根据主题生成故事,利用外部AI Agent (Claude模型)。 这些工具可以被 LLM 客户端调用,扩展 LLM 的能力边界。
  • Prompt 模板: 虽然示例代码中 Prompt 模板主要在 'echo.ts' 中体现,但项目整体架构支持 Prompt 模板的定义和使用,允许开发者定制与 LLM 的交互模式。(本仓库的 'echo.ts' 提供了 Prompt 模板的示例,可以参考理解 MCP 服务器的 Prompt 功能。)
  • SSE 传输: 使用 Server-Sent Events (SSE) 协议与 MCP 客户端进行实时通信,推送服务器端事件和响应客户端请求。
  • 简单的权限控制: 部分工具(如 'db-query' 和 'storytelling')演示了基于用户角色 (role) 的简单权限控制,可以限制特定用户对工具的访问。

安装步骤

  1. 环境准备: 确保已安装 Node.js (版本 >= 20.14.0) 和 Server (版本 >= 1.16.28),具体版本要求请参考仓库 README。
  2. 克隆仓库: 将 GitHub 仓库 'mcp-server-demo' 克隆到本地。
  3. 进入 api 目录: 在终端中导航到项目根目录下的 'api' 文件夹:'cd api'。
  4. 安装依赖: 运行命令 'npm install' 安装项目所需的依赖包。
  5. 配置环境变量 (可选): 如果需要使用 'storytelling' 工具,请配置 'ANTHROPIC_API_KEY' 环境变量,用于 Claude 模型的 API 密钥。
  6. 启动服务器: 运行 'npm run dev' (开发模式) 或 'npm run start' (生产模式) 启动 MCP 服务器。服务器默认监听 'BLOCKLET_PORT' 环境变量指定的端口。

服务器配置

MCP 客户端需要配置以下 JSON 格式信息以连接到此 MCP 服务器:

{
  "serverName": "示例MCP服务器",
  "command": "node",
  "args": ["api/dist/index.js"]
}
  • 'serverName': MCP 服务器的名称,可以自定义,用于客户端识别。
  • 'command': 启动服务器的命令,这里是 'node',表示使用 Node.js 运行时。
  • 'args': 启动命令的参数数组,'["api/dist/index.js"]' 指向服务器的入口文件。

注意: 实际部署时,'args' 中的路径可能需要根据打包后的文件结构进行调整。开发模式下,可以使用 '["api/src/index.ts"]' 并配合 'ts-node' 等工具运行。

基本使用方法

  1. 启动 MCP 服务器: 按照安装步骤启动服务器。
  2. 配置 MCP 客户端: 在 MCP 客户端中,配置上述服务器配置信息,并设置连接方式为 SSE,连接地址为 '<服务器地址>/mcp/sse'。
  3. 客户端与服务器交互: MCP 客户端启动后,会自动与服务器建立 SSE 连接。客户端可以发送 JSON-RPC 请求,例如:
    • 获取服务器能力声明 (Server Capabilities)。
    • 请求资源,例如 'mcp.getResource({ uri: 'document://getting-started' })'。
    • 调用工具,例如 'mcp.executeTool({ toolName: 'calculator', parameters: { operation: 'add', a: 1, b: 2 } })'。
    • 获取 Prompt 模板 (参考 'echo.ts' 示例)。
  4. 查看服务器日志: 服务器的运行日志会在终端输出,可以用于调试和监控服务器状态。

请参考 '@blocklet/mcp' 官方文档和 MCP 协议规范,了解更详细的客户端开发和服务器交互方法。

信息

分类

开发者工具