使用说明
项目简介
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 和资源等能力,客户端可以通过初始化握手了解服务器的功能。
安装步骤
-
安装 Node.js 和 pnpm: 确保你的开发环境已安装 Node.js 和 pnpm 包管理器。你可以从 Node.js 官网 下载安装 Node.js,然后使用 npm 安装 pnpm:
npm install -g pnpm -
克隆仓库: 使用 Git 克隆 Muppet 仓库到本地:
git clone https://github.com/muppet-dev/muppet.git cd muppet -
安装依赖: 在仓库根目录下,使用 pnpm 安装项目依赖:
pnpm install -
构建项目: 构建项目,生成可执行的服务器代码:
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 相关的注释代码。
基本使用方法
-
启动服务器: 根据你选择的传输协议和配置,启动 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' 中的示例进行配置和运行。
-
-
配置 MCP 客户端: 在你的 MCP 客户端应用中,根据上述 服务器配置 部分的说明,配置连接到 Muppet 服务器所需的信息。
-
与服务器交互: 客户端启动后,将自动与 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。
信息
分类
开发者工具