← 返回目录
F

Fastify MCP Server

社区
面向 Fastify 的 MCP 服务器插件,内置 SSE、stdio、OAuth 2.1 与 Redis 横向扩展支持。
GitHub 源仓库 ↗
★ 58 Stars 分类 · 开发工具 热门 源版本 f4ed3dbaead2
63FMRS · C
可靠性
9/20
安全与权限
14/20
维护活跃度
10/20
文档质量
17/20
安装易用性
13/20

这是 Platformatic 团队维护的开源 Fastify 插件,用于快速搭建符合 MCP 规范的服务器骨架,功能覆盖协议协商、SSE/stdio 传输、Redis 横向扩展、OAuth 2.1 鉴权与任务/征询等新特性,但它是开发框架而非开箱即用的工具服务,实际安全性和可用工具集完全取决于使用者自行编写的代码。

查看 FMRS 评分方法 →

@platformatic/mcp 是一个 Fastify 插件,用于在 Fastify 应用中实现 Model Context Protocol (MCP) 服务器(基于 JSON-RPC 2.0)。它本身不是一个带有固定工具集的独立服务器,而是供开发者在自己的 Fastify 项目中注册工具(tools)、资源(resources)和提示(prompts)的框架库。支持协议版本协商(最新为 2025-11-25,向下兼容 2025-06-18、2025-03-26、2024-11-05),提供 HTTP/SSE 与 stdio 两种传输方式,支持基于 Redis 的会话与消息代理以实现多实例横向扩展,并内置 OAuth 2.1 授权、TypeBox/AJV 参数校验、输入净化、任务(tasks,实验性)与征询(elicitation,含表单模式和 URL 模式)等能力。

工具能力

暂未整理工具清单。

安装接入

通过 npm 安装:npm install @platformatic/mcp(如需 TypeBox 类型校验,另装 @sinclair/typebox)。随后在自己的 Fastify 应用中 await app.register(mcpPlugin, { ... }),并使用 app.mcpAddTool / app.mcpAddResource / app.mcpAddPrompt 注册具体的工具、资源和提示后运行服务。若需 stdio 传输,调用包内导出的 runStdioServer(app, options)

选型与风险

适合谁

  • 熟悉 Node.js/Fastify 的后端开发者,需要自建可扩展、可鉴权的 MCP 服务器
  • 需要 Redis 支持的分布式、多实例部署场景
  • 希望使用 TypeBox 获得类型安全的工具入参校验的团队

不适合谁

  • 希望零配置直接获得一组现成工具(如文件系统、数据库访问)的最终用户
  • 非 Node.js/Fastify 技术栈的团队
  • 只需要简单单机原型、不关心横向扩展或鉴权的极简场景

所需权限

  • 作为库运行于开发者自己的 Fastify 进程,具体文件系统/网络权限取决于开发者实现的工具处理函数
  • 启用 Redis 后需要网络访问 Redis 实例(用于会话存储与消息代理)
  • 启用 OAuth 2.1 后需要访问授权服务器的 JWKS 端点或令牌自省端点
  • URL 模式的征询(elicitation)会引导用户跳转到外部 URL 完成敏感操作

风险与副作用

  • 该插件本身不自带工具,安全性很大程度上取决于开发者自行实现的工具处理逻辑
  • 未启用鉴权(authorization)时,任务(tasks)仅凭随机 UUID 保护,持有 ID 的任何人都可访问该任务
  • 生产环境的速率限制(rate limiting)需要开发者自行接入,插件仅提供基础的 DoS 防护(长度/深度/属性数量限制)
  • 同一 session 允许多个 SSE 连接并广播消息,这一实现有意偏离了 MCP 规范中“每条消息只发往一个连接”的要求,可能导致重复消息
  • `transformRouteSchema` 仅修改 OpenAPI 文档元数据,不会强制执行鉴权,需自行确保实际鉴权钩子已配置

常见排障

  1. HTTP 请求返回 400:检查 `MCP-Protocol-Version` 请求头是否与已协商的会话版本一致,或是否传入了不受支持的协议版本
  2. 浏览器请求被拒绝(403):检查请求的 Origin 是否在 `allowedOrigins` 允许列表中
  3. `tasks/result` 返回 not found:检查任务的 `ttl` 是否过短,任务可能在完成前已过期
  4. 多实例部署下消息未能跨实例送达:确认已正确配置 `redis` 选项,并检查各实例是否连接同一 Redis 实例
  5. 鉴权请求返回 401:确认 Bearer Token、JWKS/自省端点或 `authorization.enabled` 等配置是否正确

使用场景

在现有 Fastify 后端中快速添加符合 MCP 规范的工具/资源/提示接口
构建需要跨实例广播通知、支持客户端断线重连的 SSE 流式 MCP 服务
需要 OAuth 2.1、JWT/令牌自省等企业级鉴权的多用户 MCP 服务
需要任务式(长耗时)工具调用与结果轮询的场景

支持客户端

暂未确认支持的客户端。