mcp-swagger-server/docs/architecture/README.md

10 KiB

MCP Swagger Server 架构文档

📋 文档概览

本目录包含 MCP Swagger Server 项目的详细架构设计文档,涵盖系统设计、重构方案和实施计划。


📚 文档索引

🏗️ 核心架构文档

1. Monorepo 重构方案

状态: 完成
概要: 将项目重构为 monorepo 架构的完整设计方案

核心内容:

  • 🎯 重构目标和业务价值分析
  • 🔍 现状问题分析和解决方案
  • 🏗️ 目标架构设计和包结构规划
  • 🔄 数据流架构和技术实现方案
  • 📊 效益分析和成功标准定义

关键决策:

  • 将 OpenAPI 解析逻辑抽离为独立的 mcp-swagger-parser
  • 建立清晰的职责分工和依赖关系
  • 采用 workspace 管理策略实现 monorepo

2. 解析库抽离实施计划

状态: 完成
概要: mcp-swagger-parser 库抽离的详细实施计划

核心内容:

  • 📊 当前代码状态分析和边界划分
  • 🎨 目标架构设计和 API 接口规范
  • 📋 详细实施步骤和时间线规划
  • 🧪 测试策略和质量保证措施
  • 🚨 风险控制和回滚计划

实施亮点:

  • 14天完整实施时间线
  • 分阶段渐进式重构策略
  • 全面的测试覆盖和文档支持

🎯 架构决策记录 (ADR)

ADR-001: 选择 Monorepo 架构

决策: 采用 monorepo 管理多个相关包
原因: 提升代码复用性,简化依赖管理,改善开发体验
影响: 需要重构现有代码结构,但长期收益显著
状态: ✅ 批准

ADR-002: 抽离 OpenAPI 解析库

决策: 将解析逻辑抽离为独立的 mcp-swagger-parser 包
原因: 关注点分离,提高可测试性和复用性
影响: 短期增加重构工作量,长期降低维护成本
状态: ✅ 批准

ADR-003: 使用 TypeScript Project References

决策: 采用 TypeScript Project References 管理包间依赖
原因: 提升构建性能,支持增量编译,保证类型安全
影响: 需要配置复杂的 tsconfig 文件,但构建效率显著提升
状态: ✅ 批准

📊 架构图谱

系统整体架构

┌─────────────────────────────────────────────────────────────┐
│                    MCP Swagger Server Ecosystem            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌─────────────────┐    ┌──────────────────┐               │
│  │   Frontend UI   │    │  CLI Tool        │               │
│  │  (Vue 3 + TS)   │    │  (Optional)      │               │
│  └─────────┬───────┘    └─────────┬────────┘               │
│            │                      │                        │
│            └──────────┬───────────┘                        │
│                       │                                    │
│  ┌─────────────────────▼────────────────────┐              │
│  │         MCP Swagger Server               │              │
│  │  ┌─────────────────┐ ┌─────────────────┐ │              │
│  │  │  MCP Converter  │ │ Protocol Layer  │ │              │
│  │  │                 │ │ (stdio/sse/     │ │              │
│  │  │                 │ │  streamable)    │ │              │
│  │  └─────────┬───────┘ └─────────────────┘ │              │
│  └─────────────┼─────────────────────────────┘              │
│                │                                            │
│  ┌─────────────▼────────────────────┐                      │
│  │       OpenAPI Parser             │                      │
│  │  ┌─────────────────┐             │                      │
│  │  │   Core Parser   │             │                      │
│  │  │   Validators    │             │                      │
│  │  │   Extractors    │             │                      │
│  │  └─────────────────┘             │                      │
│  └──────────────────────────────────┘                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

包依赖关系图

@mcp-swagger/ui ────────┐
                        │
                        ▼
@mcp-swagger/server ────► mcp-swagger-parser
                        │
                        ▼
@mcp-swagger/cli ───────┘

依赖方向: 从左到右,右侧包不依赖左侧包

数据流架构

Input Source → Parser → Validation → Extraction → Conversion → MCP Output
     │            │         │           │            │           │
     │            │         │           │            │           │
  URL/File/    OpenAPI    Spec       Endpoints    MCP Tools   Config
   Text         Spec     Validation   Metadata     Generation   JSON

🚀 实施状态

当前进展

┌─────────────────────────────────────────────────────────────┐
│ 实施阶段                    │ 状态      │ 完成度 │ 备注      │
├─────────────────────────────────────────────────────────────┤
│ 架构设计                    │ ✅ 完成   │ 100%   │           │
│ 文档编写                    │ ✅ 完成   │ 100%   │           │
│ 代码重构                    │ ⏳ 待开始 │ 0%     │ 准备开始  │
│ 测试实施                    │ ⏳ 待开始 │ 0%     │           │
│ 文档完善                    │ ⏳ 待开始 │ 0%     │           │
└─────────────────────────────────────────────────────────────┘

下一步行动

  1. 立即开始: 创建 mcp-swagger-parser 包结构
  2. 本周目标: 完成核心代码抽离
  3. 下周计划: 服务器端重构和测试

🎯 设计原则

核心原则

1. 单一职责 (Single Responsibility)

  • 每个包都有明确的单一职责
  • 避免功能混合和职责模糊
  • 便于独立开发和维护

2. 开放封闭 (Open/Closed)

  • 对扩展开放,对修改封闭
  • 通过接口和插件机制支持扩展
  • 保持 API 稳定性

3. 依赖倒置 (Dependency Inversion)

  • 高层模块不依赖低层模块
  • 通过抽象接口解耦依赖关系
  • 便于测试和替换实现

4. 接口隔离 (Interface Segregation)

  • 提供细粒度的接口
  • 避免强制依赖不需要的功能
  • 提高系统灵活性

技术原则

1. 类型安全优先

  • 全面的 TypeScript 类型定义
  • 编译时错误检查
  • 运行时类型验证

2. 测试驱动开发

  • 高测试覆盖率要求 (≥85%)
  • 单元测试和集成测试并重
  • 测试先行的开发模式

3. 文档即代码

  • 代码和文档同步维护
  • 自动生成 API 文档
  • 丰富的使用示例

4. 性能优先考虑

  • 避免不必要的性能开销
  • 优化关键路径执行效率
  • 内存使用优化

📈 质量保证

代码质量标准

静态分析

  • TypeScript: 严格模式,完整类型注解
  • ESLint: 代码风格检查和最佳实践
  • Prettier: 统一代码格式化
  • SonarQube: 代码质量分析 (计划中)

测试策略

测试金字塔:
           ▲
          / \
         /E2E\     ← 端到端测试 (10%)
        /─────\
       /  Int  \    ← 集成测试 (20%)
      /─────────\
     /   Unit    \  ← 单元测试 (70%)
    /─────────────\

性能监控

  • 构建时间: 目标 < 2分钟
  • 包大小: 优化目标 -15%
  • 解析性能: 保持或提升
  • 内存使用: 优化目标 -10%

发布标准

版本发布检查清单

  • 所有测试通过 (单元 + 集成 + E2E)
  • 代码覆盖率 ≥ 85%
  • 静态分析无错误
  • 性能回归测试通过
  • 文档更新完成
  • 变更日志更新

🔮 未来展望

短期目标 (3-6 个月)

  • 完成 monorepo 重构
  • 发布 v1.0 稳定版本
  • 建立完整的 CI/CD 流程
  • 扩展解析器支持更多格式

中期目标 (6-12 个月)

  • 建立插件生态系统
  • 支持多语言绑定
  • 云服务平台集成
  • 性能优化和扩展

长期愿景 (1-2 年)

  • 成为 OpenAPI 解析的标准库
  • 建立活跃的开源社区
  • 企业级功能支持
  • 多平台和多语言生态

📞 联系和贡献

文档维护

  • 主要维护者: 开发团队
  • 更新频率: 随项目进展持续更新
  • 反馈渠道: GitHub Issues / Discussions

贡献指南

  1. 阅读相关架构文档
  2. 遵循设计原则和标准
  3. 提交 PR 前完成质量检查
  4. 更新相关文档

最后更新: 2025-06-17
文档版本: v1.0
状态: 当前版本