使用说明
项目简介
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 项目中。
-
初始化 Node.js 项目 (如果尚未存在):
mkdir my-mcp-server cd my-mcp-server npm init -y -
安装 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 生成。
-
创建服务器代码: 在你的项目中创建一个文件 (例如 '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 部署。
基本使用方法
- 编写服务器代码: 使用 'ServerBuilder' 添加工具、资源和 Prompt,并构建服务器实例。
- 启动服务器: 运行你的服务器代码 (例如 'node server.js'),启动 MCP 服务器。
- 配置 MCP 客户端: 在 MCP 客户端中配置服务器连接信息 (如上述 JSON 示例),指向你的 MCP 服务器地址。
- 客户端与服务器交互: 客户端可以通过 MCP 协议与服务器通信,例如列出工具、调用工具、获取 Prompt 等,从而利用服务器提供的上下文信息和功能。
示例代码说明:
- 上述 'server.ts' 示例代码演示了如何使用 'ServerBuilder' 创建一个简单的 MCP 服务器,该服务器包含一个 'search' 工具和一个 'hello' Prompt。
- 'searchTool' 工具使用 DuckDuckGo API 执行网络搜索。
- 'helloPrompt' 提供一个简单的问候语。
- 代码使用 'WebSocketServer' 启动 WebSocket 服务器,监听 8080 端口。
总结
Smithery MCP Server Framework 提供了一个灵活且易于使用的框架,用于构建功能丰富的 MCP 服务器。通过 'ServerBuilder',开发者可以高效地管理工具、资源和 Prompt,并快速搭建起符合 MCP 标准的上下文服务后端。
信息
分类
开发者工具