使用说明

项目简介

Model Context Protocol TypeScript SDK (typescript-sdk) 是一个用于构建 Model Context Protocol (MCP) 应用的软件开发工具包。它旨在帮助开发者使用 TypeScript 语言快速构建 MCP 客户端和服务器,简化 LLM 应用的上下文管理和功能扩展。该 SDK 实现了完整的 MCP 协议规范,并提供了易于使用的 API 和工具,方便开发者专注于业务逻辑的实现。

主要功能点

  • MCP 服务器构建: 提供 'McpServer' 类,简化 MCP 服务器的创建和配置,支持资源 (Resources)、工具 (Tools) 和 Prompt 模板 (Prompts) 的注册和管理。
  • 多种传输协议支持: 内置 'StdioServerTransport' 和 'SSEServerTransport',分别支持通过标准输入输出 (stdio) 和 HTTP Server-Sent Events (SSE) 协议与 MCP 客户端通信。
  • 资源 (Resources) 管理: 允许服务器托管和管理各种类型的数据资源,并提供标准化的数据访问接口,方便 LLM 获取上下文信息。
  • 工具 (Tools) 注册与执行: 支持在 MCP 服务器上注册和管理外部工具,允许 LLM 客户端通过 MCP 协议调用这些工具,扩展 LLM 的功能。
  • Prompt 模板 (Prompts) 定义: 支持定义和管理 Prompt 模板,实现可定制的 LLM 交互模式,提高 LLM 应用的灵活性和可复用性。
  • 客户端 SDK: 提供 'Client' 类和多种客户端传输实现,方便开发者构建 MCP 客户端应用,与任何 MCP 服务器进行交互。
  • 完整的 MCP 协议实现: SDK 实现了完整的 MCP 协议规范,包括消息处理、会话管理、能力声明等,确保应用符合 MCP 标准。

安装步骤

  1. 确保已安装 Node.js 和 npm。

  2. 在项目目录下,运行以下命令安装 SDK:

    npm install @modelcontextprotocol/sdk

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令和参数才能建立连接。以下是一个示例 JSON 配置,用于连接通过 stdio 传输协议启动的 MCP 服务器。

{
  "serverName": "my-mcp-server",
  "serverCommand": "node",  // MCP 服务器启动命令,例如 node
  "serverArgs": ["server.js"] // 启动命令参数,例如服务器脚本 server.js
}

配置说明:

  • 'serverName': MCP 服务器的名称,用于标识服务器 (可选)。
  • 'serverCommand': 启动 MCP 服务器的可执行命令。通常为 'node' 或其他可执行文件的路径。
  • 'serverArgs': 传递给启动命令的参数数组,例如服务器脚本的文件名或启动参数。

注意: 实际配置可能需要根据您的 MCP 服务器实现和部署方式进行调整。上述配置仅为示例,用于说明 MCP 客户端如何配置连接信息。 MCP 客户端通常需要根据实际使用的传输协议 (例如 stdio, SSE, WebSocket) 进行相应的配置,但核心配置信息通常包括服务器的启动方式 (command 和 args)。

基本使用方法

以下代码示例展示了如何使用 SDK 创建一个简单的 MCP 服务器,并注册一个工具和一个资源:

import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

// 创建 MCP 服务器实例
const server = new McpServer({
  name: "Demo",
  version: "1.0.0"
});

// 注册一个加法工具
server.tool("add",
  { a: z.number(), b: z.number() },
  async ({ a, b }) => ({
    content: [{ type: "text", text: String(a + b) }]
  })
);

// 注册一个动态 greeting 资源
server.resource(
  "greeting",
  new ResourceTemplate("greeting://{name}", { list: undefined }),
  async (uri, { name }) => ({
    contents: [{
      uri: uri.href,
      text: 'Hello, ${name}!'
    }]
  })
);

// 使用 Stdio 传输协议连接服务器
const transport = new StdioServerTransport();
await server.connect(transport);

这段代码创建了一个名为 "Demo" 的 MCP 服务器,并注册了一个名为 "add" 的工具和一个名为 "greeting" 的资源。服务器通过 'StdioServerTransport' 监听标准输入输出流,等待客户端连接和请求。

更多详细用法和高级功能,请参考仓库 README.md 文件和示例代码。

信息

分类

开发者工具