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
# yaml-language-server: $schema=https://raw.githubusercontent.com/steviec/mcp-server-tester/refs/heads/main/src/schemas/tests-schema.json
# ZenTao MCP 服务器工具测试
# 测试所有禅道工具的基本功能和错误处理
tools:
# 验证所有必需工具都可用
expected_tool_list:
- 'zendao_list_projects'
- 'zendao_get_project'
- 'zendao_create_project'
- 'zendao_list_tasks'
- 'zendao_create_task'
- 'zendao_update_task_status'
- 'zendao_batch_create_tasks'
tests:
# 基础功能测试
- name: 'List projects with basic parameters'
tool: 'zendao_list_projects'
params:
page: 1
limit: 10
expect:
success: true
result:
schema:
type: object
properties:
projects:
type: array
items:
type: object
properties:
id: { type: number }
name: { type: string }
code: { type: string }
status: { type: string }
total: { type: number }
page: { type: number }
limit: { type: number }
required: [projects, total, page, limit]
- name: 'List projects with status filter'
tool: 'zendao_list_projects'
params:
page: 1
limit: 5
status: 'active'
expect:
success: true
- name: 'List projects with all parameters'
tool: 'zendao_list_projects'
params:
page: 1
limit: 20
status: 'active'
orderBy: 'name_asc'
expect:
success: true
- name: 'Handle invalid page parameter'
tool: 'zendao_list_projects'
params:
page: -1
limit: 10
expect:
success: false
error:
contains: 'page'
- name: 'Handle invalid limit parameter'
tool: 'zendao_list_projects'
params:
page: 1
limit: 1000 # 超出最大限制
expect:
success: false
error:
contains: 'limit'
- name: 'Handle invalid status parameter'
tool: 'zendao_list_projects'
params:
page: 1
limit: 10
status: 'invalid_status'
expect:
success: false
error:
contains: 'status'
# 项目详情测试
- name: 'Get project by valid ID'
tool: 'zendao_get_project'
params:
projectId: 1
expect:
success: true
result:
schema:
type: object
properties:
id: { type: number }
name: { type: string }
code: { type: string }
status: { type: string }
begin: { type: string }
end: { type: ['string', 'null'] }
required: [id, name, code, status, begin]
- name: 'Handle invalid project ID'
tool: 'zendao_get_project'
params:
projectId: -1
expect:
success: false
error:
contains: 'projectId'
- name: 'Handle non-existent project ID'
tool: 'zendao_get_project'
params:
projectId: 999999
expect:
success: false
error:
contains: 'not found'
# 任务列表测试
- name: 'List tasks with basic parameters'
tool: 'zendao_list_tasks'
params:
page: 1
limit: 10
expect:
success: true
result:
schema:
type: object
properties:
tasks:
type: array
items:
type: object
properties:
id: { type: number }
name: { type: string }
project: { type: number }
status: { type: string }
pri: { type: number }
total: { type: number }
page: { type: number }
limit: { type: number }
required: [tasks, total, page, limit]
- name: 'List tasks with project filter'
tool: 'zendao_list_tasks'
params:
page: 1
limit: 5
projectId: 1
expect:
success: true
- name: 'List tasks with status filter'
tool: 'zendao_list_tasks'
params:
page: 1
limit: 5
status: 'wait'
expect:
success: true
- name: 'List tasks with priority filter'
tool: 'zendao_list_tasks'
params:
page: 1
limit: 5
pri: 1
expect:
success: true
- name: 'List tasks with assignee filter'
tool: 'zendao_list_tasks'
params:
page: 1
limit: 5
assignedTo: 'testuser'
expect:
success: true
# 任务更新测试
- name: 'Update task status to doing'
tool: 'zendao_update_task_status'
params:
taskId: 1
status: 'doing'
expect:
success: true
- name: 'Update task status to done'
tool: 'zendao_update_task_status'
params:
taskId: 1
status: 'done'
expect:
success: true
- name: 'Handle invalid task ID for status update'
tool: 'zendao_update_task_status'
params:
taskId: -1
status: 'doing'
expect:
success: false
error:
contains: 'taskId'
- name: 'Handle invalid status for task update'
tool: 'zendao_update_task_status'
params:
taskId: 1
status: 'invalid_status'
expect:
success: false
error:
contains: 'status'
# 工作流测试 - 多步骤操作
- name: 'Project and task workflow'
calls:
# 1. 列出项目
- tool: 'zendao_list_projects'
params:
page: 1
limit: 5
expect:
success: true
result:
contains: 'projects'
# 2. 获取第一个项目详情
- tool: 'zendao_get_project'
params:
projectId: 1
expect:
success: true
result:
schema:
type: object
properties:
id: { type: number }
name: { type: string }
# 3. 列出项目任务
- tool: 'zendao_list_tasks'
params:
page: 1
limit: 5
projectId: 1
expect:
success: true
result:
contains: 'tasks'
# 4. 更新任务状态
- tool: 'zendao_update_task_status'
params:
taskId: 1
status: 'doing'
expect:
success: true
- name: 'Error handling and recovery workflow'
calls:
# 1. 尝试获取不存在的项目
- tool: 'zendao_get_project'
params:
projectId: 999999
expect:
success: false
error:
contains: 'not found'
# 2. 列出可用项目(恢复正常)
- tool: 'zendao_list_projects'
params:
page: 1
limit: 10
expect:
success: true
# 3. 创建新项目
- tool: 'zendao_create_project'
params:
name: 'Test Project for Workflow'
code: 'TPWF'
begin: '2024-01-01'
acl: 'private'
expect:
success: true
# 边界条件测试
- name: 'Handle empty parameters'
tool: 'zendao_list_projects'
params: {}
expect:
success: true # 应该使用默认值
- name: 'Handle maximum valid limit'
tool: 'zendao_list_projects'
params:
page: 1
limit: 100
expect:
success: true
- name: 'Handle minimum valid parameters'
tool: 'zendao_list_projects'
params:
page: 1
limit: 1
expect:
success: true
# 批量操作测试
- name: 'Batch create tasks - empty array should fail'
tool: 'zendao_batch_create_tasks'
params:
items: []
options:
continueOnError: true
expect:
success: false
error:
contains: 'items'
- name: 'Batch create tasks - too many items should fail'
tool: 'zendao_batch_create_tasks'
params:
items:
# 创建51个项目(超过限制)
- name: 'Task 1'
project: 1
pri: 1
- name: 'Task 2'
project: 1
pri: 1
- name: 'Task 3'
project: 1
pri: 1
- name: 'Task 4'
project: 1
pri: 1
- name: 'Task 5'
project: 1
pri: 1
options:
continueOnError: true
expect:
success: false
error:
contains: 'items'