高性能的 MCP(模型上下文协议)服务器,基于 Fastify、TypeScript 和函数式编程原则构建。具备生产就绪的身份验证、度量和自动发现功能。
Fastify MCP 服务器 是一个符合 Model Context Protocol (MCP) 规范的生产级实现,专为 AI 代理和 LLM 应用设计。它采用现代 TypeScript 和函数式编程范式,为需要安全、可扩展 MCP 服务器能力的 AI 驱动应用提供坚实的基础。
@modelcontextprotocol/sdk 的 Zod 验证适用于构建:
| 功能 | Fastify MCP 服务器 | 其他解决方案 |
|---|---|---|
| 性能 | ⚡ 基于 Fastify | ❌ Express/较慢 |
| 类型安全 | ✅ 完整 TypeScript | ❌ 仅 JavaScript |
| 安全性 | 🔒 承载令牌 | ❌ 基本认证 |
| 生产 | 📊 度量和健康 | ❌ 仅开发 |
| 架构 | 🧩 自动发现 | ❌ 手动设置 |
| 标准 | ✅ 符合 MCP 1.0 | ❌ 自定义协议 |
GET /health — Kubernetes 存活性探测GET /metrics — 应用度量端点服务器包括智能会话管理,具有自动清理功能:
会话生命周期:
服务器包括身份验证中间件(位于 src/middleware/auth.ts),使用承载令牌验证 MCP 连接。令牌通过环境变量 MCP_SERVER_TOKEN 配置,确保对 MCP 服务器能力的安全访问。
当您更新每个目录下的 index.ts 文件时,服务器会自动从相应的文件夹中注册 工具、资源 和 提示:
执行操作并返回结构化输出的活跃可调用函数。适用于:
通过 URI 暴露的只读结构化数据表面。适用于:
用于可重用 AI 工作流的参数化指令模板。适用于:
💡 每种能力类型都有详细的文档,位于其各自的
README.md文件中。
💡 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
添加到您的 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 的 MCP 连接功能:
http://localhost:9080/mcpBearer Token.env 的 MCP_SERVER_TOKEN这允许您直接通过 HTTP 与 MCP 服务器交互,而无需 Claude Desktop。
服务器还支持在配置端口上的基于 HTTP 的 MCP 传输,并带有承载令牌身份验证。
src/tools/ 中添加您的工具,并从 src/tools/index.ts 导出src/resources/ 中添加您的资源,并从 src/resources/index.ts 导出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 # 不构建的情况下进行类型检查
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
我们欢迎贡献!请参阅我们的 贡献指南 了解详情。
git checkout -b feature/amazing-feature)git commit -m '添加神奇功能')git push origin feature/amazing-feature)版权所有 © 2025 Mustafa ONAL
本项目根据 MIT 许可证发布 — 详情见 LICENSE 文件。
使用函数式编程原则和现代 TypeScript 构建
如果您觉得这个项目有用,请在 GitHub 上给它点个赞 ⭐!