使用说明

项目简介

Smithery MCP Server Framework 是一个基于 Typescript 开发的框架,旨在帮助开发者快速搭建符合 Model Context Protocol (MCP) 规范的服务器。它提供了一套工具,用于定义和管理 MCP 服务器中的核心元素,如工具 (Tools)、资源 (Resources) 和 Prompt 模板 (Prompts)。虽然仓库的主要部分是客户端 SDK,但框架也包含了构建 MCP 服务器的功能。

主要功能点

  • 工具 (Tools) 管理: 允许注册和管理服务器提供的工具,这些工具可以被 LLM 客户端调用以执行外部功能。框架支持定义工具的名称、描述和输入参数。
  • 资源 (Resources) 管理: 支持托管和管理各种类型的资源,例如文档、数据文件等。资源可以通过 URI 进行访问,并支持定义资源的名称、描述和 MIME 类型。
  • Prompt 模板 (Prompts) 管理: 提供定义和管理 Prompt 模板的功能,允许根据客户端请求动态生成 Prompt,以实现定制化的 LLM 交互模式。
  • 灵活的服务器构建: 通过 'ServerBuilder' 类,开发者可以轻松地组合工具、资源和 Prompt,构建自定义的 MCP 服务器。
  • 基于标准 MCP 协议: 框架基于 Model Context Protocol 标准构建,确保与任何兼容 MCP 协议的客户端进行无缝通信。

安装步骤

由于此仓库主要提供的是一个框架,你需要先将其作为依赖添加到你的 Typescript 项目中。

  1. 初始化 Node.js 项目 (如果尚未存在):

    mkdir my-mcp-server
    cd my-mcp-server
    npm init -y
  2. 安装 Smithery SDK 和 MCP SDK 客户端库:

    npm install @smithery/sdk @modelcontextprotocol/sdk zod zod-to-json-schema
    • '@smithery/sdk': Smithery MCP Server Framework 库。
    • '@modelcontextprotocol/sdk': Model Context Protocol 官方 SDK,Smithery 框架基于此构建。
    • 'zod', 'zod-to-json-schema': 用于数据验证和 JSON Schema 生成。
  3. 创建服务器代码: 在你的项目中创建一个文件 (例如 'server.ts'),并使用 'ServerBuilder' 构建 MCP 服务器。

    import { ServerBuilder } from "@smithery/sdk/server/builder.js";
    import { z } from "zod";
    
    // 定义一个工具
    const searchTool = {
        name: "search",
        description: "使用 DuckDuckGo 搜索网络",
        parameters: z.object({
            query: z.string().describe("搜索关键词"),
        }),
        execute: async (args: { query: string }) => {
            const query = encodeURIComponent(args.query);
            const res = await fetch('https://api.duckduckgo.com/?q=${query}&format=json&pretty=1');
            const data = await res.json();
            return data.AbstractText || "未找到相关信息";
        },
    };
    
    // 定义一个 Prompt
    const helloPrompt = {
        name: "hello",
        description: "简单的问候 Prompt",
        load: async () => {
            return "你好!有什么我可以帮你的吗?";
        },
    };
    
    // 创建 ServerBuilder 实例
    const builder = new ServerBuilder("my-server", "1.0.0");
    
    // 添加工具和 Prompt
    builder.addTool(searchTool).addPrompt(helloPrompt);
    
    // 构建服务器
    const server = builder.build();
    
    // 启动服务器 (例如,使用 WebSocket 传输)
    import { WebSocketServer } from '@modelcontextprotocol/sdk/server/websocket.js';
    const transport = new WebSocketServer({ port: 8080 });
    server.connect(transport);
    
    console.log("MCP Server started on ws://localhost:8080/ws");

服务器配置

MCP 服务器是为 MCP 客户端设计的后端服务,客户端需要配置连接信息才能与之通信。以下是 MCP 客户端可能的配置信息示例(JSON 格式),用于连接到使用 Smithery 框架构建的 MCP 服务器。

{
  "serverName": "my-mcp-server",
  "command": "node",
  "args": ["server.js"],
  "transport": {
    "type": "websocket",
    "url": "ws://localhost:8080/ws"
  }
}

配置参数说明:

  • 'serverName': 服务器的名称,客户端用于标识连接。
  • 'command': 启动服务器的命令,例如 'node' (用于 Node.js)。
  • 'args': 启动命令的参数,例如 '["server.js"]' 指定服务器入口文件。
  • 'transport': 定义客户端与服务器通信的传输协议。
    • 'type': 传输协议类型,例如 '"websocket"'。
    • 'url': WebSocket 服务器的 URL,例如 '"ws://localhost:8080/ws"'。 请根据你的服务器实际部署地址和端口进行修改。

注意: 实际的客户端配置可能因客户端实现而异,但通常会包含服务器地址、端口和传输协议类型等信息。 上述 'command' 和 'args' 配置主要用于本地开发和演示,实际部署时可能需要调整为更适合生产环境的配置方式,例如使用 Docker 部署。

基本使用方法

  1. 编写服务器代码: 使用 'ServerBuilder' 添加工具、资源和 Prompt,并构建服务器实例。
  2. 启动服务器: 运行你的服务器代码 (例如 'node server.js'),启动 MCP 服务器。
  3. 配置 MCP 客户端: 在 MCP 客户端中配置服务器连接信息 (如上述 JSON 示例),指向你的 MCP 服务器地址。
  4. 客户端与服务器交互: 客户端可以通过 MCP 协议与服务器通信,例如列出工具、调用工具、获取 Prompt 等,从而利用服务器提供的上下文信息和功能。

示例代码说明:

  • 上述 'server.ts' 示例代码演示了如何使用 'ServerBuilder' 创建一个简单的 MCP 服务器,该服务器包含一个 'search' 工具和一个 'hello' Prompt。
  • 'searchTool' 工具使用 DuckDuckGo API 执行网络搜索。
  • 'helloPrompt' 提供一个简单的问候语。
  • 代码使用 'WebSocketServer' 启动 WebSocket 服务器,监听 8080 端口。

总结

Smithery MCP Server Framework 提供了一个灵活且易于使用的框架,用于构建功能丰富的 MCP 服务器。通过 'ServerBuilder',开发者可以高效地管理工具、资源和 Prompt,并快速搭建起符合 MCP 标准的上下文服务后端。

信息

分类

开发者工具