使用说明

项目简介

Muppet 是一个开源工具包,用于简化和标准化 MCP 服务器的构建过程。它基于 Hono.js 框架,提供了一套工具和库,帮助开发者快速搭建符合 MCP 协议规范的服务器,以便为大型语言模型(LLM)应用提供上下文信息、工具调用和 Prompt 管理等核心功能。

主要功能点

  • 资源管理 (Resources): 允许服务器托管和管理各种类型的数据资源,并提供标准的 URI 访问方式。客户端可以通过 URI 请求访问这些资源,为 LLM 提供上下文数据。
  • 工具注册与执行 (Tools): 支持注册外部功能为工具,并暴露给 LLM 客户端调用。开发者可以定义工具的名称、描述、输入参数等,LLM 客户端可以请求服务器执行这些工具,扩展 LLM 的能力。
  • Prompt 模板 (Prompts): 支持定义和管理 Prompt 模板,允许客户端通过名称获取预定义的 Prompt 消息列表。这有助于实现可定制的 LLM 交互模式,并简化 Prompt 的管理和复用。
  • 传输协议支持: 内置支持 Stdio 和 SSE (Server-Sent Events) 传输协议,方便与不同类型的 MCP 客户端集成。可以通过选择合适的传输协议来满足不同的应用场景需求。
  • JSON-RPC 通信: 遵循 MCP 协议,使用 JSON-RPC 协议与客户端进行通信,确保了服务器的标准化和互操作性。
  • 能力声明: 服务器能够声明自身提供的工具、Prompt 和资源等能力,客户端可以通过初始化握手了解服务器的功能。

安装步骤

  1. 安装 Node.js 和 pnpm: 确保你的开发环境已安装 Node.js 和 pnpm 包管理器。你可以从 Node.js 官网 下载安装 Node.js,然后使用 npm 安装 pnpm:

    npm install -g pnpm
  2. 克隆仓库: 使用 Git 克隆 Muppet 仓库到本地:

    git clone https://github.com/muppet-dev/muppet.git
    cd muppet
  3. 安装依赖: 在仓库根目录下,使用 pnpm 安装项目依赖:

    pnpm install
  4. 构建项目: 构建项目,生成可执行的服务器代码:

    pnpm build

    构建产物通常会输出到 'dist' 目录。

服务器配置

MCP 客户端需要配置以下信息以连接到 Muppet 服务器。以下是一个 JSON 格式的配置示例,你需要根据实际情况进行调整:

{
  "serverName": "MyMuppetServer",
  "command": "node",
  "args": [
    "examples/mcp-sdk/dist/index.js"
  ],
  "transport": "sse",
  "transportOptions": {
    "url": "http://localhost:3001"
  }
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,可以自定义,用于在客户端标识服务器。
  • 'command': 启动服务器的命令。对于 Node.js 项目,通常为 'node'。
  • 'args': 启动命令的参数列表。
    • '"examples/mcp-sdk/dist/index.js"': 指向 Muppet 服务器入口文件路径。请根据你的实际构建输出路径进行调整。 如果你直接运行 'examples/mcp-sdk/src/index.ts',则应修改为 '"examples/mcp-sdk/src/index.ts"' 并确保安装了 'ts-node' 或使用 'tsx' 等工具直接运行 TypeScript 文件。
  • 'transport': 使用的传输协议,可选值为 '"stdio"' 或 '"sse"'。 示例配置中使用了 '"sse"' (Server-Sent Events)。
  • 'transportOptions': 传输协议相关的配置选项。
    • 'url': 当 'transport' 为 '"sse"' 时,需要配置服务器的 URL 地址。示例中为 'http://localhost:3001',对应 'examples/mcp-sdk/src/index.ts' 中 Express 服务器监听的端口。

注意: 如果你希望使用 Stdio 传输协议,可以将 '"transport"' 修改为 '"stdio"',并移除 '"transportOptions"' 字段。同时,你需要取消 'examples/mcp-sdk/src/index.ts' 中 Stdio transport 相关的注释代码。

基本使用方法

  1. 启动服务器: 根据你选择的传输协议和配置,启动 Muppet 服务器。

    • SSE 传输: 如果使用 SSE 传输,需要先启动 'examples/mcp-sdk/src/index.ts' 中定义的 Express 服务器。在仓库根目录下执行:

      pnpm examples:mcp-sdk

      或者如果你已经构建了项目,可以直接运行构建后的 JavaScript 文件:

      node examples/mcp-sdk/dist/index.js

      服务器默认监听 3001 端口。

    • Stdio 传输: 如果使用 Stdio 传输,需要在 MCP 客户端配置中直接运行服务器进程。客户端通常会通过标准输入 (stdin) 发送请求,并通过标准输出 (stdout) 接收响应。 你可以参考 'docs/content/docs/concepts/transport-stdio.ts' 中的示例进行配置和运行。

  2. 配置 MCP 客户端: 在你的 MCP 客户端应用中,根据上述 服务器配置 部分的说明,配置连接到 Muppet 服务器所需的信息。

  3. 与服务器交互: 客户端启动后,将自动与 Muppet 服务器建立连接并进行初始化握手。之后,客户端可以发送 JSON-RPC 请求到服务器,例如:

    • 请求工具列表: '{"jsonrpc": "2.0", "method": "tools/list", "params": null, "id": 1}'
    • 调用工具: '{"jsonrpc": "2.0", "method": "tools/call", "params": {"name": "Hello World", "arguments": {"name": "User"}}, "id": 2}'
    • 获取 Prompt: '{"jsonrpc": "2.0", "method": "prompts/get", "params": {"name": "Simple Prompt", "arguments": {"name": "World"}}, "id": 3}'
    • 读取资源列表: '{"jsonrpc": "2.0", "method": "resources/list", "params": null, "id": 4}'
    • 读取资源内容: '{"jsonrpc": "2.0", "method": "resources/read", "params": {"uri": "task1"}, "id": 5}'

    服务器将根据请求类型进行处理,并返回 JSON-RPC 响应。具体请求和响应格式请参考 Model Context Protocol 规范文档。

查看文档

更详细的文档和更多示例请访问 muppet.dev

信息

分类

开发者工具