使用说明
项目简介
fastify-mcp 插件旨在帮助开发者在 Fastify 框架中轻松搭建 MCP 服务器。它基于官方 MCP TypeScript SDK,提供了 Server-Sent Events (SSE) 传输协议的实现,并处理了会话管理等底层细节,让开发者可以专注于 MCP 服务器的核心业务逻辑,如资源、工具和 Prompt 模板的定义。
主要功能点
- MCP 服务器集成: 提供 Fastify 插件,无缝集成 MCP 服务器功能。
- SSE 传输支持: 基于 Server-Sent Events 实现 MCP 协议的实时通信。
- 会话管理: 自动管理客户端 SSE 连接会话,处理会话的创建和关闭。
- 简化开发: 开发者无需关注底层的 SSE 和会话管理细节,专注于 MCP 核心功能的实现。
- 示例代码: 提供简单的示例,展示如何快速创建一个基本的 MCP 服务器。
安装步骤
- 确保已安装 Node.js 和 npm 或 yarn。
- 在你的 Fastify 项目中,通过 npm 或 yarn 安装 'fastify-mcp' 插件:
# npm npm install fastify-mcp # yarn yarn add fastify-mcp
服务器配置
MCP 客户端需要配置以下信息以连接到使用 'fastify-mcp' 插件构建的 MCP 服务器。
{ "serverName": "basic-mcp-server", "command": "node", "args": ["path/to/your/server.js"] }
配置参数说明:
- 'serverName': MCP 服务器的名称,由 'McpServer' 实例初始化时定义 (例如示例中的 "basic-mcp-server")。
- 'command': 启动 MCP 服务器的命令,通常为 'node'。
- 'args': 启动命令的参数,指向你的 Fastify 服务器入口文件路径 (例如 'path/to/your/server.js')。 请根据你的项目实际文件路径进行修改。
注意: 'path/to/your/server.js' 需要替换为实际运行包含 'fastify-mcp' 插件的 Fastify 应用的 JavaScript 文件路径。
基本使用方法
-
创建 MCP 服务器实例: 在你的 Fastify 项目中,首先使用 '@modelcontextprotocol/sdk' 创建 'McpServer' 实例,定义服务器的名称和版本,并注册你的工具 (tools)。
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { fastifyMCPSSE } from "fastify-mcp"; import { fastify } from "fastify"; const mcpServer = new McpServer({ name: "basic-mcp-server", // MCP 服务器名称,客户端配置需要 version: "0.0.1", // MCP 服务器版本 }); mcpServer.tool("greet", () => { // 注册一个名为 "greet" 的工具 return { content: [{ type: "text", text: "Hello, world!" }], }; }); -
注册 'fastifyMCPSSE' 插件: 将 'fastifyMCPSSE' 插件注册到你的 Fastify 应用中,并将 'mcpServer.server' 传递给插件。
const app = fastify(); app.register(fastifyMCPSSE, { server: mcpServer.server, // 传递 McpServer 实例的 server 属性 }); -
启动 Fastify 服务器: 启动你的 Fastify 应用,监听指定的端口。
app.listen({ port: 3000 }) .then(() => { console.log("Server is running on port 3000"); }) .catch(err => { console.error(err); process.exit(1); }); -
运行服务器: 使用 Node.js 运行你的服务器文件 (例如 'node your-server.js')。
-
连接 MCP 客户端: 配置你的 MCP 客户端,使用上述 服务器配置 中生成的 JSON 配置信息连接到运行中的 MCP 服务器。客户端将通过 SSE 与服务器进行通信,调用注册的工具等功能。
示例代码: 仓库的 'examples/simple-server.ts' 文件提供了一个更完整的示例,可以参考该示例进行开发。
信息
分类
开发者工具