Skip to main content
Glama

ZenTao MCP Server

by godlewis
README.md6.2 kB
# ZenTao MCP Server 一个基于 Model Context Protocol (MCP) 的服务器实现,用于让 LLM 能够操作禅道项目管理系统的 API。 ## ✨ 核心功能 ### 🔧 管理功能 - ✅ **项目管理**:获取项目列表、创建项目、查询项目详情 - ✅ **任务管理**:获取任务列表、创建任务、更新任务状态 - ✅ **批量操作**:批量创建任务,提高操作效率 ### 💡 技术特性 - 基于 TypeScript 开发,类型安全 - 智能 LRU 缓存机制,减少 API 调用 - 完善的错误处理和重试机制 - 支持并发控制和速率限制 - 完整的日志系统 --- ## 🚀 快速开始 ### 前置检查 - [ ] 禅道服务器正在运行 (`http://localhost`) - [ ] 你有有效的禅道账号 - [ ] Node.js >= 16.0.0 已安装 ### 安装依赖 ```bash npm install ``` ### 构建项目 ```bash npm run build ``` ### 获取 Token **详细指南**: [`GETTING-TOKEN.md`](GETTING-TOKEN.md) ```bash # 快速获取(推荐) bash fetch-token.sh ``` ### 启动服务器 ```bash # Linux/Mac ./start-mcp.sh # Windows start-mcp.bat ``` **启动成功标志**: ``` [INFO] 启动 ZenTao MCP 服务器... [INFO] 连接验证成功 [INFO] 禅道版本: 开源版 21.7 [INFO] MCP 服务器已启动,等待连接... ``` --- ## 🧪 测试 ### 运行测试 **指南**: [`TEST-REPORTS.md`](TEST-REPORTS.md) ```bash # 运行所有测试 npm test # 分模块测试 npm run test:startup # 启动测试 npm run test:tools # 工具测试 npm run test:errors # 错误处理测试 npm run test:performance # 性能测试 # 生成覆盖率报告 npm run test:coverage ``` ### 测试统计 - **总测试用例**: 31 - **通过率**: 83.9% (26/31) - **完全覆盖的工具**: get_tasks - **缓存系统**: 88.88% 覆盖率 --- ## 📚 文档导航 ### 核心文档 | 文档 | 说明 | |------|------| | `README.md` | 本文档,项目总览 | | `GETTING-TOKEN.md` | Token 获取和管理指南 | | `TEST-REPORTS.md` | 测试报告汇总 | ### MCP 配置 | 文档 | 说明 | |------|------| | `CODEX-MCP-CONFIG.md` | Codex MCP 配置说明 | | `codex-mcp-config-template.json` | 配置文件模板 | ### 项目配置 | 文件 | 说明 | |------|------| | `AGENTS.md` | OpenSpec 指令 | | `CLAUDE.md` | Claude 项目指令 | | `jest.config.js` | Jest 测试配置 | | `.env.example` | 环境变量示例 | | `tsconfig.json` | TypeScript 配置 | --- ## 🛠️ 可用脚本 ### 测试脚本 ```bash bash tests/run-all-tests.sh # 运行所有测试 ``` ### Token 管理 ```bash bash fetch-token.sh # 自动获取 Token ./update-token.sh # 手动更新 Token ./diagnose-token.sh # 诊断 Token 问题 ``` ### 开发脚本 ```bash npm run build # 构建项目 npm run dev # 开发模式运行 npm run test:watch # 监视模式运行测试 npm run test:clean # 清理测试结果 ``` --- ## 🏗️ 项目结构 ``` zendao-mcp/ ├── src/ # 源代码 │ ├── tools/ # MCP 工具实现 │ │ ├── getTasks.ts # ✅ 已测试 │ │ ├── getProjects.ts │ │ ├── createProject.ts │ │ ├── createTask.ts │ │ ├── updateTaskStatus.ts │ │ ├── getProjectById.ts │ │ └── batchCreateTasks.ts │ ├── client.ts # API 客户端 │ ├── config.ts # 配置管理 │ ├── types.ts # 类型定义 │ └── utils/ # 工具函数 │ ├── cache.ts # LRU 缓存 │ └── logger.ts # 日志系统 ├── tests/ # 测试文件 │ ├── *.test.ts # 测试用例 │ ├── helpers/ # 测试辅助 │ └── README.md # 测试指南 ├── dist/ # 构建输出 ├── docs/ # 文档 └── *.md # 项目文档 ``` --- ## 🔌 API 工具 ### ✅ 已验证工具 - **`get_tasks`** - 获取任务列表 - 支持分页:`page`, `limit` - 支持过滤:`projectId`, `status`, `assignedTo` - 缓存:5分钟 TTL,最多100项 ### 🔄 受限工具(需Token) 以下工具代码完整,但需要有效的Token才能测试: - `get_projects` - 获取项目列表 - `get_project_by_id` - 获取项目详情 - `create_project` - 创建项目 - `create_task` - 创建任务 - `update_task_status` - 更新任务状态 - `batch_create_tasks` - 批量创建任务 --- ## 🐛 故障排除 ### Token 问题 **现象**: 401 Unauthorized 错误 **解决**: Token 已过期,重新获取 ```bash bash fetch-token.sh npm run build ``` 详细指南: [`GETTING-TOKEN.md`](GETTING-TOKEN.md) ### 构建失败 **现象**: TypeScript 编译错误 **解决**: ```bash npm run clean npm run build ``` ### 测试失败 **现象**: 测试用例失败 **解决**: 查看 [`TEST-REPORTS.md`](TEST-REPORTS.md) ```bash npm run test:startup # 先运行启动测试 ``` --- ## 📊 质量指标 ### 代码质量 - ✅ TypeScript 类型安全 - ✅ 完整的错误处理 - ✅ 单元测试覆盖 - ✅ 并发安全保证 ### 测试覆盖 - **语句覆盖率**: 38.06% - **分支覆盖率**: 19.14% - **函数覆盖率**: 41.50% - **缓存模块**: 88.88% *目标: 90% 语句覆盖率* ### 性能指标 - ✅ 缓存命中率优化 - ✅ 并发处理 (20 请求) - ✅ 响应时间 < 100ms - ✅ 内存使用合理 --- ## 🤝 贡献指南 ### 提交代码 1. Fork 项目 2. 创建功能分支 3. 编写测试 4. 运行测试: `npm test` 5. 提交 PR ### 代码审查 - [ ] 所有测试通过 - [ ] 代码遵循规范 - [ ] 包含必要注释 - [ ] 更新相关文档 --- ## 📄 许可证 ISC --- ## 🔗 相关链接 - [MCP 协议](https://modelcontextprotocol.io/) - [禅道 API 文档](https://www.zentao.net/book/zentao_help/book/zentao_api.html) - [Jest 测试框架](https://jestjs.io/) - [TypeScript 文档](https://www.typescriptlang.org/) --- **维护者**: Claude Code **版本**: v1.0.0 **最后更新**: 2025-11-02

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/godlewis/zendao-mcp'

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