返回市场
快速服务MCP服务器

快速服务MCP服务器

作者:NEDDL5 星标更新:2025-10-02

项目介绍

🚀 Fastify MCP 服务器

Node.js TypeScript Fastify MCP License

高性能的 MCP(模型上下文协议)服务器,基于 Fastify、TypeScript 和函数式编程原则构建。具备生产就绪的身份验证、度量和自动发现功能。

🎯 关于此项目

Fastify MCP 服务器 是一个符合 Model Context Protocol (MCP) 规范的生产级实现,专为 AI 代理和 LLM 应用设计。它采用现代 TypeScript 和函数式编程范式,为需要安全、可扩展 MCP 服务器能力的 AI 驱动应用提供坚实的基础。

🔑 主要优势

  • ⚡ 飞快的速度:基于 Fastify — 最快的 Node.js Web 框架
  • 🔒 企业级安全性:承载令牌身份验证和安全会话管理
  • 📊 生产就绪:Kubernetes 健康检查、度量端点和监控
  • 🧩 自动发现:工具、资源和提示的自动注册
  • 🛡️ 类型安全:完整的 TypeScript 支持和 Zod 验证
  • 🎯 函数式:严格的函数式编程方法以确保可靠性

📋 目录

✨ 特性

  • 🏎️ 基于 Fastify — 支持 TypeScript 的闪电般快速 HTTP 服务器
  • 🔧 MCP 协议 — 具有工具、资源和提示的完整 Model Context Protocol 实现
  • 🛡️ 安全认证 — 用于 MCP 服务器连接的承载令牌中间件
  • 📊 生产就绪 — Kubernetes 健康端点和度量路由
  • 🧩 模块化架构 — MCP 能力的自动注册系统
  • 🔒 类型安全 — 使用 @modelcontextprotocol/sdk 的 Zod 验证
  • 🎯 函数式编程 — 严格采用函数式编程范式

🚀 使用场景

适用于构建:

  • AI 代理平台 — 用于 AI 应用的安全 MCP 服务器
  • LLM 集成 — 将语言模型与外部工具和数据连接
  • 企业 AI — 组织的生产就绪 MCP 基础设施
  • 开发者工具 — 开发工作流的自定义 MCP 服务器
  • API 网关 — 具有 MCP 能力的高性能 API 端点
  • 微服务 — 分布式架构中的可扩展 MCP 服务

🏆 为什么选择这个服务器?

功能Fastify MCP 服务器其他解决方案
性能⚡ 基于 Fastify❌ Express/较慢
类型安全✅ 完整 TypeScript❌ 仅 JavaScript
安全性🔒 承载令牌❌ 基本认证
生产📊 度量和健康❌ 仅开发
架构🧩 自动发现❌ 手动设置
标准✅ 符合 MCP 1.0❌ 自定义协议

⚡ 性能指标

基准测试结果

  • 请求延迟:平均响应时间小于 1ms
  • 吞吐量:在现代硬件上每秒处理超过 50,000 个请求
  • 内存使用:基线内存占用小于 50MB
  • 启动时间:冷启动时间小于 500ms
  • 打包大小:生产构建小于 2MB

生产就绪

  • Kubernetes — 健康检查和就绪探测
  • 监控 — 内置度量和日志记录
  • 安全性 — 承载令牌身份验证
  • 可扩展性 — 支持水平扩展
  • 可靠性 — 会话管理和清理

🏗️ 架构

核心组件

  • Fastify 服务器 — 高性能 HTTP 服务器,带有自定义 MCP 插件
  • MCP 传输 — 注入为 Fastify 插件,实现无缝集成
  • 会话管理 — 处理 MCP 客户端连接和状态
  • 自动注册 — 自动发现并注册 MCP 能力

端点

  • GET /health — Kubernetes 存活性探测
  • GET /metrics — 应用度量端点
  • MCP 传输 — WebSocket/HTTP 传输用于 MCP 协议

会话管理

服务器包括智能会话管理,具有自动清理功能:

  • 基于活动的超时 — 会话在活跃使用期间保持存活
  • 自动清理 — 闲置 30 分钟的会话将被自动移除
  • 定期维护 — 每 5 分钟运行一次清理以防止内存泄漏
  • 优雅关闭 — 服务器关闭时所有会话都会被正确关闭

会话生命周期:

  1. 创建 — 新会话初始化并分配唯一 ID
  2. 活动跟踪 — 每次请求时更新时间戳
  3. 清理 — 闲置 30 分钟以上的会话将被自动移除
  4. 日志记录 — 整个会话生命周期都被记录下来以供调试

🔐 安全

服务器包括身份验证中间件(位于 src/middleware/auth.ts),使用承载令牌验证 MCP 连接。令牌通过环境变量 MCP_SERVER_TOKEN 配置,确保对 MCP 服务器能力的安全访问。

📁 MCP 能力

当您更新每个目录下的 index.ts 文件时,服务器会自动从相应的文件夹中注册 工具资源提示

🛠️ 工具

执行操作并返回结构化输出的活跃可调用函数。适用于:

  • 状态更改和副作用
  • 外部 API 调用和计算
  • LLM 选择调用哪个工具的代理工作流程

📚 资源

通过 URI 暴露的只读结构化数据表面。适用于:

  • 上下文知识和文档
  • 跨会话共享的上下文
  • 二进制内容和大型工件

📝 提示

用于可重用 AI 工作流的参数化指令模板。适用于:

  • 标准化任务(总结、翻译等)
  • 将提示工程与应用程序逻辑分离
  • 多步骤编排的工作流

💡 每种能力类型都有详细的文档,位于其各自的 README.md 文件中。

🚀 快速开始

先决条件

  • Node.js >= 20.10.0(推荐:24.x LTS)
  • npmyarn 包管理器
  • Git 版本控制

💡 Node 版本管理器:如果您安装了 nvm,可以使用 nvm use 24 切换到 Node.js 2 4

一键设置

# 一键克隆和设置
git clone https://github.com/your-username/fastify-mcp-server.git && \
cd fastify-mcp-server && \
npm install && \
npm run build

安装

# 克隆仓库
git clone git@gitlab.tools.outerhr.net:Onal/fastify-mcp-server.git
cd example-mcp-server

# 安装依赖
npm install

# 构建项目
npm run build

开发

# 启动带有热重载的开发服务器
npm run dev

# 作为 MCP 服务器运行(标准 I/O 模式)
npm run mcp

# 启动生产服务器
npm start

配置

复制提供的 .env.example 文件并配置您的设置:

cp .env.example .env

编辑 .env 文件以进行配置:

MCP_SERVER_PORT=9080
MCP_SERVER_HOST=localhost
MCP_SERVER_TOKEN=your-secure-bearer-token-here
NODE_ENV=development

🔌 MCP 客户端集成

Claude Desktop

添加到您的 claude_desktop_config.json

{
  "mcpServers": {
    "example-server": {
      "command": "node",
      "args": ["/path/to/example-mcp-server/dist/mcp-stdio.js"],
      "cwd": "/path/to/example-mcp-server"
    }
  }
}

⚠️ 重要:对于本地使用 Claude Desktop,您需要修改 src/utils/logger.ts 以使用 stderr 来保证 MCP 兼容性。取消注释以下行:

export const logger = pino(getLoggerConfig(), process.stderr); // 为了在本地 Claude Desktop 中使用

这可以防止 stdout 被破坏,从而避免 MCP 通信错误。

Postman 测试

对于本地测试和开发,您可以使用 Postman 的 MCP 连接功能:

  1. 打开 Postman 并创建一个新的请求
  2. 设置 URL 为:http://localhost:9080/mcp
  3. 添加授权
    • 类型:Bearer Token
    • 令牌:来自 .envMCP_SERVER_TOKEN
  4. 发送 MCP 请求 以测试工具、资源和提示

这允许您直接通过 HTTP 与 MCP 服务器交互,而无需 Claude Desktop。

HTTP 传输

服务器还支持在配置端口上的基于 HTTP 的 MCP 传输,并带有承载令牌身份验证。

🛠️ 开发

添加新能力

  1. 工具:在 src/tools/ 中添加您的工具,并从 src/tools/index.ts 导出
  2. 资源:在 src/resources/ 中添加您的资源,并从 src/resources/index.ts 导出
  3. 提示:在 src/prompts/ 中添加您的提示,并从 src/prompts/index.ts 导出

服务器将在重启时自动注册它们。

脚本

npm run dev          # 开发模式,带热重载
npm run build        # 将 TypeScript 编译为 JavaScript
npm run start        # 启动生产服务器
npm run mcp          # 作为 MCP 服务器运行(标准 I/O)
npm run lint         # 代码检查和修复
npm run format       # 使用 Prettier 格式化代码
npm run check        # 不构建的情况下进行类型检查

📦 技术栈

核心技术

  • Fastify — 快速且低开销的 Web 框架
  • @modelcontextprotocol/sdk — 官方 MCP TypeScript SDK
  • Zod — TypeScript 优先的模式验证
  • Pino — 超快的天然 JSON 日志记录器
  • TypeScript — 类型安全和现代 JavaScript 特性

开发工具

  • ESLint — 代码检查和质量保证
  • Prettier — 代码格式化和风格一致性
  • Husky — Git 钩子用于代码质量
  • Commitlint — 常规提交消息验证
  • tsx — TypeScript 执行和开发服务器

关键词和标签

mcp-server fastify typescript ai-agents llm-integration model-context-protocol nodejs api-server production-ready authentication metrics kubernetes functional-programming type-safety enterprise microservices ai-platform developer-tools

🤝 贡献

我们欢迎贡献!请参阅我们的 贡献指南 了解详情。

开发工作流程

  1. 分叉 仓库
  2. 创建 特性分支 (git checkout -b feature/amazing-feature)
  3. 提交 您的更改 (git commit -m '添加神奇功能')
  4. 推送 到分支 (git push origin feature/amazing-feature)
  5. 打开 Pull Request

代码质量

  • TypeScript — 完整类型安全
  • ESLint — 代码质量和一致性
  • Prettier — 代码格式化
  • 测试 — 全面的测试覆盖率
  • 文档 — 清晰且最新的文档

📚 资源

文档

社区

相关项目

📄 许可证

版权所有 © 2025 Mustafa ONAL

本项目根据 MIT 许可证发布 — 详情见 LICENSE 文件。


使用函数式编程原则和现代 TypeScript 构建

🌟 给这个仓库点赞

如果您觉得这个项目有用,请在 GitHub 上给它点个赞 ⭐!