项目简介

本项目是一个基于 Model Context Protocol (MCP) 的服务器端实现,采用了 Streamable HTTP 传输协议,并使用 TypeScript 语言开发。它旨在为大型语言模型(LLM)客户端提供一个标准化的上下文服务后端,支持资源管理、工具调用和 Prompt 模板等核心 MCP 功能。此项目提供了一个快速搭建可扩展、安全的 MCP 服务器的起点。

主要功能点

  • MCP 协议支持: 实现了 MCP 协议的核心服务端功能,包括处理客户端请求、返回 JSON-RPC 响应以及发送服务器通知。
  • Streamable HTTP 传输: 采用 Streamable HTTP 协议进行数据传输,支持高效的双向通信。
  • 资源管理: 虽然示例代码中没有直接体现资源管理,但项目结构和 MCP 定义表明具备扩展资源管理能力的基础。
  • 工具注册与调用: 支持注册和执行外部工具,示例中提供了 'greet' 和 'multi-greet' 两个工具,演示了工具调用的基本流程和通知机制。
  • Prompt 模板: 项目具备定义和渲染 Prompt 模板的潜力,但示例代码中未直接展示 Prompt 模板功能,需要进一步扩展。
  • 会话管理: 完整版 'index.ts' 实现了基于 'mcp-session-id' 的会话管理,允许客户端保持会话状态,'index-no-session.ts' 则是不支持会话管理的版本。
  • 能力声明: 服务器启动时声明自身 capabilities,例如 logging 和 tools 功能。
  • 可扩展性: 项目基于 Express 框架搭建,易于扩展和集成其他中间件,满足更复杂的需求。

安装步骤

  1. 克隆仓库: 将 GitHub 仓库 'https://github.com/ferrants/mcp-streamable-http-typescript-server' 克隆到本地。

  2. 安装依赖: 在项目根目录下运行命令 'npm install' 安装项目依赖。

  3. 构建项目: 运行命令 'npm run build' 使用 TypeScript 编译器构建项目。

  4. 启动服务器: 运行命令 'node build/index.js' 启动 MCP 服务器。默认端口为 '3000'。

    • 可选:通过设置环境变量 'PORT' 自定义端口,例如 'PORT=3002 node build/index.js'。

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

MCP 客户端需要配置连接到此 MCP 服务器的信息。以下是一个 'mcp-config.json' 示例,客户端应根据实际情况进行配置:

{
  "mcpServers": {
    "streamable-mcp-server": {  // 服务器名称,客户端用于标识
      "type": "streamable-http", // 连接类型,必须设置为 "streamable-http"
      "url": "http://localhost:3000" // MCP 服务器的 URL 地址,根据服务器实际运行地址和端口修改
    }
  }
}

配置参数说明:

  • 'mcpServers': 配置 MCP 服务器列表。
  • '"streamable-mcp-server"': 自定义的服务器名称,客户端在引用该服务器时使用。
  • 'type': 连接类型,对于此 Streamable HTTP 服务器,必须设置为 '"streamable-http"'。
  • 'url': MCP 服务器的 URL 地址。
    • 如果服务器运行在本地,且端口为默认的 '3000',则使用 'http://localhost:3000'。
    • 如果服务器运行在远程服务器或使用了不同的端口,请将 'localhost' 替换为服务器的 IP 地址或域名,并将 '3000' 替换为实际端口号。

基本使用方法

  1. 启动 MCP 服务器: 按照 "安装步骤" 中的说明启动服务器。

  2. 配置 MCP 客户端: 根据 "服务器配置" 中的示例,配置 MCP 客户端的 'mcp-config.json' 文件,确保 'url' 指向正在运行的 MCP 服务器地址。

  3. 客户端发起 MCP 请求: 使用 MCP 客户端 SDK,根据 MCP 协议规范,向配置的 MCP 服务器发送请求,例如调用已注册的工具。服务器会处理请求并返回响应或发送通知。

    • 示例代码中提供了 'greet' 和 'multi-greet' 两个工具,客户端可以尝试调用这些工具进行测试。
    • 可以通过查看服务器控制台输出来监控请求和响应信息。

信息

分类

AI与计算