Skip to main content
Glama
quick-start-guide.md5.9 kB
# MCP Swagger Server - 快速入门指南 ## 项目概述 本项目是一个基于 monorepo 架构的 OpenAPI/Swagger 到 MCP (Model Context Protocol) 转换工具集,包含解析器、服务器和前端界面三个主要组件。 ## 项目结构 ``` mcp-swagger-server/ ├── packages/ │ ├── mcp-swagger-parser/ # 核心解析器包 │ ├── mcp-swagger-server/ # MCP 服务器 │ └── mcp-swagger-ui/ # Vue.js 前端界面 ├── scripts/ │ ├── build.js # 统一构建脚本 │ ├── dev.js # 开发环境脚本 │ ├── clean.js # 清理脚本 │ └── diagnostic.js # 诊断脚本 ├── docs/ # 技术文档 └── README.md ``` ## 环境要求 - **Node.js**: >=18.0.0 - **pnpm**: 最新版本(推荐使用 pnpm 作为包管理器) - **操作系统**: macOS, Linux, Windows ## 安装指南 ### 1. 安装 pnpm 选择以下任一方式安装 pnpm: **方式一:使用 Homebrew(macOS 推荐)** ```bash brew install pnpm ``` **方式二:使用 npm** ```bash # 配置 npm 全局目录(避免权限问题) mkdir ~/.npm-global npm config set prefix '~/.npm-global' echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc source ~/.zshrc # 安装 pnpm npm install -g pnpm ``` **方式三:使用 Corepack(Node.js 16.10+)** ```bash corepack enable corepack prepare pnpm@latest --activate ``` ### 2. 克隆并安装项目 ```bash # 克隆项目 git clone <repository-url> cd mcp-swagger-server # 安装依赖(会自动构建依赖包) pnpm install ``` ## 开发指南 ### 快速启动开发环境 ```bash # 启动完整开发环境 pnpm run dev ``` 这个命令会: 1. 构建所有依赖包 2. 启动依赖包的 watch 模式 3. 启动前端开发服务器 ### 仅启动前端开发 ```bash # 仅启动 UI 开发服务器 pnpm run dev:ui ``` ### 构建项目 ```bash # 构建所有包 pnpm run build # 仅构建依赖包(不包括前端) pnpm run build:packages ``` ### 清理项目 ```bash # 清理所有构建产物和 node_modules pnpm run clean # 仅清理构建产物 pnpm run clean:build ``` ### 项目诊断 ```bash # 运行项目健康检查 pnpm run diagnostic ``` ## 包管理说明 ### 依赖关系图 ``` mcp-swagger-ui ↓ depends on mcp-swagger-parser ↓ depends on External packages (axios, swagger-parser, etc.) ``` ### 为什么需要预先构建 1. **TypeScript 编译链**: 源码在 `src/`,但包入口指向编译后的 `dist/` 2. **模块解析机制**: Vite 等构建工具需要找到实际的入口文件 3. **类型检查**: TypeScript 需要 `.d.ts` 类型定义文件 ### 自动化构建的优势 - **依赖拓扑排序**: 自动按正确顺序构建包 - **并行优化**: 无依赖关系的包可并行构建 - **增量构建**: 只构建变更的包及其依赖者 - **错误处理**: 构建失败时提供详细诊断信息 ## 开发最佳实践 ### 1. 开发新功能 ```bash # 1. 确保环境干净 pnpm run clean:build # 2. 安装最新依赖 pnpm install # 3. 启动开发环境 pnpm run dev ``` ### 2. 添加新包 1. 在 `packages/` 目录下创建新包 2. 添加 `package.json` 文件 3. 如果有构建需求,确保包含 `build` 脚本 4. 运行 `pnpm run diagnostic` 验证配置 ### 3. 处理依赖问题 ```bash # 1. 运行诊断 pnpm run diagnostic # 2. 检查特定包的构建状态 cd packages/mcp-swagger-parser pnpm run build # 3. 清理并重新构建 pnpm run clean pnpm install ``` ### 4. 性能优化 - 使用 `pnpm run build:packages` 跳过前端构建 - 利用 watch 模式进行增量编译 - 定期清理构建缓存 ## 故障排除 ### 常见问题 #### 1. 权限错误 ``` Error: EACCES: permission denied ``` **解决方案**: 使用 Homebrew 安装 pnpm 或配置 npm 全局目录 #### 2. 依赖解析失败 ``` Failed to resolve entry for package "mcp-swagger-parser" ``` **解决方案**: ```bash pnpm run build:packages ``` #### 3. 类型检查错误 ``` Cannot find module 'mcp-swagger-parser' ``` **解决方案**: 确保包已构建并生成类型定义文件 #### 4. 开发服务器启动失败 **解决方案**: ```bash # 重置环境 pnpm run clean pnpm install pnpm run dev ``` ### 调试技巧 1. **使用诊断脚本**: ```bash pnpm run diagnostic ``` 2. **检查构建日志**: ```bash pnpm run build --verbose ``` 3. **逐包调试**: ```bash cd packages/specific-package pnpm run build ``` ## 部署指南 ### 生产构建 ```bash # 清理环境 pnpm run clean # 安装生产依赖 pnpm install --frozen-lockfile # 构建所有包 pnpm run build ``` ### Docker 部署 ```dockerfile FROM node:18-alpine # 安装 pnpm RUN npm install -g pnpm WORKDIR /app # 复制依赖文件 COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ COPY packages/*/package.json ./packages/*/ # 安装依赖 RUN pnpm install --frozen-lockfile # 复制源码 COPY . . # 构建项目 RUN pnpm run build EXPOSE 3000 CMD ["pnpm", "start"] ``` ## 脚本说明 ### build.js - 智能包发现和依赖分析 - 拓扑排序确保正确构建顺序 - 支持选择性构建(`--non-ui`) ### dev.js - 自动构建依赖包 - 启动 watch 模式 - 启动开发服务器 ### clean.js - 清理构建产物 - 支持选择性清理(`--build-only`) ### diagnostic.js - 项目结构检查 - 依赖完整性验证 - 构建产物验证 - 脚本可用性检查 ## 贡献指南 1. Fork 项目 2. 创建功能分支: `git checkout -b feature/amazing-feature` 3. 提交更改: `git commit -m 'Add amazing feature'` 4. 推送分支: `git push origin feature/amazing-feature` 5. 创建 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。 --- *本指南持续更新,如有问题请提交 Issue。*

Latest Blog Posts

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/zaizaizhao/mcp-swagger-server'

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