Skip to main content
Glama

MCP Server

by chendaleiQ
REFACTORING_SUMMARY.md5.62 kB
# MCP Server 模块化重构总结 ## 🎯 重构目标 将原本的单文件MCP服务器重构为模块化架构,提高代码的可维护性、可扩展性和可读性。 ## 📋 重构内容 ### 1. 目录结构重组 **重构前:** ``` src/ ├── index.ts # 所有代码都在一个文件中 └── utils/ # 简单的工具函数 ├── index.ts ├── weather.ts ├── calculator.ts └── search.ts ``` **重构后:** ``` src/ ├── app.ts # 应用程序主类 ├── index.ts # 入口文件 ├── config/ # 配置管理 │ └── index.ts ├── types/ # 类型定义 │ └── index.ts ├── middleware/ # 中间件 │ └── index.ts ├── routes/ # 路由处理 │ └── mcp.ts ├── services/ # 业务服务 │ ├── mcpServer.ts │ └── sessionManager.ts ├── tools/ # MCP工具函数 │ ├── index.ts │ ├── weather.ts │ ├── calculator.ts │ └── search.ts └── utils/ # 通用工具函数 ├── index.ts └── logger.ts ``` ### 2. 模块化设计 #### 配置模块 (`config/`) - 集中管理环境变量和配置 - 支持开发和生产环境配置 - 日志和会话配置管理 #### 类型定义 (`types/`) - 完整的TypeScript类型定义 - 服务器配置、传输层、工具函数等类型 - 提高类型安全性和开发体验 #### 中间件 (`middleware/`) - 请求日志中间件 - 错误处理中间件 - 会话验证中间件 - CORS配置 #### 路由处理 (`routes/`) - MCP协议路由处理 - 会话管理逻辑 - 健康检查端点 #### 业务服务 (`services/`) - **MCP服务器服务**: 处理MCP协议逻辑 - **会话管理器**: 管理客户端会话和超时 #### MCP工具函数 (`tools/`) - **天气工具**: 天气查询功能 - **计算器工具**: 数学运算功能 - **搜索工具**: 搜索查询功能 #### 通用工具函数 (`utils/`) - **日志工具**: 统一的日志记录系统 ### 3. 关键改进 #### 3.1 目录结构优化 - **`tools/`**: 专门存放MCP协议的工具函数(天气、计算器、搜索等) - **`utils/`**: 存放通用的代码工具(日志、辅助函数等) - 清晰的职责分离,避免混淆 #### 3.2 类型安全 - 完整的TypeScript类型定义 - 编译时错误检查 - 更好的IDE支持和代码提示 #### 3.3 日志系统 - 统一的日志记录 - 可配置的日志级别 - 结构化日志输出 - 开发和生产环境不同的日志行为 #### 3.4 会话管理 - 自动会话超时机制 - 会话数量限制 - 内存泄漏防护 - 会话状态监控 #### 3.5 错误处理 - 统一的错误处理机制 - 详细的错误日志 - 友好的错误响应 - 开发环境显示详细错误信息 #### 3.6 配置管理 - 环境变量支持 - 灵活的配置选项 - 开发和生产环境配置分离 ## 🔧 技术特性 ### 1. 模块化架构 - 清晰的职责分离 - 易于维护和扩展 - 支持单元测试 ### 2. 类型安全 - 完整的TypeScript支持 - 编译时类型检查 - 更好的开发体验 ### 3. 可配置性 - 环境变量配置 - 灵活的配置选项 - 运行时配置验证 ### 4. 可观测性 - 结构化日志 - 健康检查端点 - 会话状态监控 ### 5. 可扩展性 - 易于添加新工具 - 易于添加新服务 - 易于添加新中间件 ## 📊 重构效果 ### 代码质量提升 - ✅ 代码结构更清晰 - ✅ 职责分离更明确 - ✅ 类型安全性提高 - ✅ 可维护性增强 ### 开发体验改善 - ✅ 更好的IDE支持 - ✅ 更清晰的错误提示 - ✅ 更容易的调试 - ✅ 更快的开发速度 ### 运维能力增强 - ✅ 更好的日志记录 - ✅ 更完善的监控 - ✅ 更灵活的配置 - ✅ 更容易的部署 ## 🚀 使用方法 ### 开发环境 ```bash npm run dev ``` ### 生产环境 ```bash npm run build npm run start:prod ``` ### 健康检查 ```bash curl http://localhost:9088/health ``` ## 🔄 扩展指南 ### 添加新MCP工具 1. 在 `src/tools/` 创建新的工具文件 2. 定义参数类型和实现函数 3. 在 `src/tools/index.ts` 中注册工具 4. 更新类型定义 ### 添加新服务 1. 在 `src/services/` 创建新的服务类 2. 实现业务逻辑 3. 在相应的路由或服务中使用 ### 添加新中间件 1. 在 `src/middleware/` 创建新的中间件 2. 在 `src/app.ts` 中注册中间件 ### 添加新工具函数 1. 在 `src/utils/` 创建新的工具函数 2. 在 `src/utils/index.ts` 中导出 ## 📝 总结 通过这次重构,我们成功地将一个单文件的MCP服务器转换为一个模块化、类型安全、易于维护和扩展的现代化应用程序。重构后的代码具有更好的可读性、可维护性和可扩展性,为后续的功能开发和维护奠定了坚实的基础。 **特别优化:** - 🎯 **职责分离**: `tools/` 专门存放MCP工具函数,`utils/` 存放通用工具函数 - 🏗️ **清晰的架构**: 每个目录都有明确的用途和边界 - 🔒 **类型安全**: 完整的TypeScript实现 - 📝 **统一日志**: 结构化的日志系统 - ⚙️ **灵活配置**: 环境变量驱动的配置管理 - 🔄 **易于扩展**: 模块化设计支持快速扩展 主要成就: - 🏗️ 完整的模块化架构 - 🔒 类型安全的TypeScript实现 - 📝 统一的日志系统 - ⚙️ 灵活的配置管理 - 🔄 易于扩展的设计 - 🧪 更好的测试支持

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chendaleiQ/mcp-iot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server