使用说明

项目简介

本项目是一个基于Model Context Protocol (MCP) 的简单服务器实现,旨在演示如何构建一个MCP后端应用。它展示了MCP服务器的核心功能,包括:

  • 资源 (Resources) 管理: 定义和提供动态资源,例如根据请求参数生成问候语。
  • 工具 (Tools) 注册与执行: 注册可被LLM客户端调用的外部功能,例如简单的加法计算器。
  • Prompt 模板 (Prompts) 定义: 创建可定制的Prompt模板,用于与LLM进行交互,例如代码审查Prompt。
  • 多种传输协议支持: 支持标准输入输出 (Stdio) 和服务器发送事件 (SSE) 两种传输协议,方便与不同类型的MCP客户端集成。

主要功能点

  • 资源管理: 提供动态问候语资源,通过URI参数定制内容。
  • 工具执行: 实现加法工具,接收两个数字参数并返回它们的和。
  • Prompt模板: 提供代码审查Prompt模板,允许客户端发送代码并获取审查请求。
  • Stdio传输: 通过标准输入输出进行MCP协议通信。
  • SSE传输: 通过服务器发送事件 (SSE) 和 HTTP POST 请求进行MCP协议通信。

安装步骤

  1. 安装 Bun: 确保已安装 Bun JavaScript 运行时环境(版本 >= 1.2.4,根据 'README.md')。您可以访问 Bun官网 获取安装指南。
  2. 安装依赖: 克隆仓库到本地后,在项目根目录下运行以下命令安装项目依赖:
    bun install

服务器配置

1. Stdio 服务器配置

以下 JSON 配置信息用于 MCP 客户端连接 Stdio 服务器。客户端需要配置 'command' 和 'args' 来启动服务器进程。

{
  "serverName": "My server",
  "transport": "stdio",
  "command": "bun",
  "args": ["run", "index.ts"]
}

配置参数说明:

  • 'serverName': 服务器名称,对应 'src/index.ts' 中 'McpServer' 构造函数的 'name' 属性。
  • 'transport': 传输协议类型,设置为 'stdio' 表示使用标准输入输出。
  • 'command': 启动服务器进程的命令,这里使用 'bun' 运行器。
  • 'args': 传递给 'bun' 命令的参数,'run index.ts' 表示执行 'index.ts' 文件。

2. SSE 服务器配置

以下 JSON 配置信息用于 MCP 客户端连接 SSE 服务器。客户端需要配置服务器的 HTTP 端点信息。

{
  "serverName": "example-server",
  "transport": "sse",
  "httpEndpoint": "http://localhost:3000/sse",
  "postEndpoint": "http://localhost:3000/messages"
}

配置参数说明:

  • 'serverName': 服务器名称,对应 'src/server.ts' 中 'McpServer' 构造函数的 'name' 属性。
  • 'transport': 传输协议类型,设置为 'sse' 表示使用服务器发送事件。
  • 'httpEndpoint': SSE 连接的 HTTP 端点,客户端需要监听此端点接收服务器发送的事件。
  • 'postEndpoint': 用于客户端向服务器发送消息的 HTTP POST 端点。

基本使用方法

1. 启动服务器

  • Stdio 服务器: 在项目根目录下运行 'bun run index.ts' 即可启动 Stdio 服务器。
  • SSE 服务器: 在项目根目录下运行 'bun run server.ts' 即可启动 SSE 服务器。SSE 服务器默认监听 3000 端口,您可以通过访问 'http://localhost:3000' 验证服务器是否运行。

2. 使用 MCP 客户端连接服务器

根据您选择的传输协议 (Stdio 或 SSE),配置 MCP 客户端连接到相应的服务器。客户端可以使用配置信息中提供的命令或端点信息与服务器建立连接,并调用服务器提供的资源、工具和Prompt模板。

示例操作:

  • 调用 'add' 工具 (假设客户端已连接到服务器): 客户端可以发送 JSON-RPC 请求调用 'add' 工具,并传入 'a' 和 'b' 参数,服务器将返回计算结果。
  • 访问 'greeting' 资源 (假设客户端已连接到服务器): 客户端可以请求 'greeting://John' 资源,服务器将返回包含 "Hello, John!" 内容的资源。
  • 使用 'review-code' Prompt (假设客户端已连接到 SSE 服务器): 客户端可以发送 JSON-RPC 请求使用 'review-code' Prompt,并传入 'code' 参数,服务器将返回包含代码审查请求的消息结构。

请参考 Model Context Protocol (MCP) 规范@modelcontextprotocol/sdk 了解更多关于 MCP 协议和 SDK 的信息,以便更深入地使用和扩展此示例服务器。

信息

分类

AI与计算