项目简介
'fastify-mcp-server' 是一个 Fastify 插件,旨在帮助开发者快速构建符合 Model Context Protocol (MCP) 标准的服务器。它利用 Fastify 的高性能特性,提供了流式 HTTP 传输、强大的会话管理、灵活的认证支持以及完善的错误处理等核心功能。通过此插件,您的 Fastify 应用能够作为一个可靠的后端,为各种 AI 助手和客户端提供上下文信息和可调用的功能(工具)。
主要功能点
- MCP 协议集成: 无缝集成 Model Context Protocol (MCP) 规范,使您的应用能够作为 AI 助手的标准后端。
- 流式 HTTP 传输: 全面支持 MCP 的流式 HTTP 协议,通过服务器发送事件 (SSE) 实现高效的数据流通信。
- 自动化会话管理: 提供自动化的会话创建、跟踪和销毁机制,简化 MCP 客户端的连接和管理。
- 请求智能路由: 根据不同的 MCP 请求类型(如初始化、发送消息、获取流式响应等)进行智能路由和处理。
- 可选的身份认证: 支持通过 Bearer Token 实现安全认证,保护您的 MCP 端点和数据访问。
- OAuth 元数据端点: 可自动注册 OAuth 2.0 授权服务器和受保护资源元数据端点,提高与 OAuth 客户端的互操作性和发现能力。
安装步骤
- 确保您的开发环境中已安装 Node.js 和 npm (Node Package Manager)。
- 在您的 Fastify 项目目录下,使用 npm 安装 'fastify-mcp-server' 及其必需的 MCP SDK:
npm install fastify-mcp-server @modelcontextprotocol/sdk - 安装完成后,您可以在 Fastify 应用中引入并配置此插件。
服务器配置
当您的 MCP 客户端(例如 VS Code Copilot Chat 或其他兼容 MCP 的 AI 助手)需要连接到由 'fastify-mcp-server' 实现的 MCP 服务器时,它需要知道如何启动或连接到该服务器。以下是您可能需要提供给 MCP 客户端的配置信息示例,这通常是一个 JSON 格式的配置对象,假设您的 MCP 服务器监听在 'http://localhost:3000/mcp':
{ "name": "my-fastify-mcp-server", "description": "我的 Fastify MCP 示例服务器,提供时间查询和认证工具。", "command": "node", "args": [ "path/to/your/server.js" ], "url": "http://localhost:3000/mcp", "headers": { "Authorization": "Bearer ${input:bearer_token}" }, "capabilities": { "tools": ["hello-world", "get-datetime", "example-auth-tool"] } }
参数注释:
- 'name': 服务器的唯一标识名称,方便客户端识别。
- 'description': 服务器功能的简短描述,帮助用户了解其用途。
- 'command': 用于启动服务器的命令行程序,例如如果您使用 Node.js 运行,则为 'node'。
- 'args': 一个字符串数组,包含传递给 'command' 的参数。通常包括您的服务器入口文件路径(例如 'path/to/your/server.js')。
- 'url': MCP 服务器的访问地址。这是客户端发起 MCP 请求的 HTTP/HTTPS 端点,通常是 'http://<host>:<port>/mcp'。
- 'headers': 可选的 HTTP 头对象。例如,如果您启用了 Bearer Token 认证,这里可以配置 'Authorization' 头部,'"${input:bearer_token}"' 是一种常见的占位符,表示客户端在连接时会提示用户输入令牌。
- 'capabilities': 服务器声明其支持的能力,例如它提供了哪些可供调用的工具 (tools)。这里列出的是您的服务器实际定义的工具名称。
基本使用方法
-
创建 Fastify 应用实例: 首先,在您的项目中创建一个 Fastify 应用实例。
import Fastify from 'fastify'; const app = Fastify({ logger: true }); // 建议开启 logger 以便调试 -
创建 MCP 服务器实例并定义工具: 使用 '@modelcontextprotocol/sdk' 创建一个 MCP 服务器实例,并定义您希望通过 MCP 协议暴露给 AI 助手的工具。
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; const mcp = new McpServer({ name: 'my-mcp-server', // 服务器名称 version: '1.0.0', // 服务器版本 }); // 定义一个简单的工具:'hello-world' mcp.tool('hello-world', 'A simple tool that says hello.', () => ({ content: [{ type: 'text', text: 'Hello from MCP!' }] })); // 定义另一个工具:'get-datetime' mcp.tool('get-datetime', 'Get the current date and time.', () => ({ content: [ { type: 'text', text: new Intl.DateTimeFormat('en-US', { day: '2-digit', month: 'long', year: 'numeric', hour: '2-digit', minute: '2-digit', hour12: false }).format(new Date()) } ] })); // 您可以根据需求添加更多工具、资源或 Prompt 模板。 -
注册 'fastify-mcp-server' 插件: 将 'fastify-mcp-server' 插件注册到您的 Fastify 应用中,并传入之前创建的 MCP 服务器实例。
import FastifyMcpServer from 'fastify-mcp-server'; await app.register(FastifyMcpServer, { server: mcp.server, // 您的 MCP 服务器实例 endpoint: '/mcp', // 可选:自定义 MCP 端点路径,默认为 '/mcp' // authorization: { ... } // 可选:配置 Bearer Token 认证和 OAuth2 元数据 }); -
启动 Fastify 服务器: 启动您的 Fastify 服务器,使其开始监听 HTTP 请求。
await app.listen({ host: '127.0.0.1', port: 3000 }); console.log('Fastify MCP Server Demo listening at http://127.0.0.1:3000/mcp');现在,您的 Fastify 应用已经作为一个功能完备的 MCP 服务器运行。MCP 客户端可以通过 'http://127.0.0.1:3000/mcp' 地址与您的服务器进行交互,并调用您定义的工具。
信息
分类
AI与计算