MCP-Zentao

Uma integração de API para o sistema de gerenciamento de projetos Zentao, com suporte para gerenciamento de tarefas e rastreamento de bugs.

Documentação

MCP-Zentao

Pacote de integração de API de alto nível para o sistema de gerenciamento de projetos ZenTao, fornecendo encapsulamento completo para funcionalidades como gerenciamento de tarefas e rastreamento de bugs, projetado como uma extensão MCP para o Cursor IDE.

Instalação

npm install @bigtian/mcp-zentao -g

Como usar

Primeiro uso (configurar informações do ZenTao)

No primeiro uso, é necessário fornecer as informações de configuração do ZenTao:

zentao '{"config":{"url":"https://your-zentao-url","username":"your-username","password":"your-password","apiVersion":"v1"},"name":"张三","age":25,"skills":["编程","设计"]}'

As informações de configuração serão salvas no arquivo .zentao/config.json no diretório do usuário, e não precisarão ser fornecidas novamente em usos futuros.

Uso subsequente

Após a configuração, basta fornecer as informações relacionadas às tarefas:

zentao '{"name":"张三","age":25,"skills":["编程","设计"]}'

Atualizar configuração

Se precisar atualizar as informações de configuração do ZenTao, basta fornecer o parâmetro config novamente:

zentao '{"config":{"url":"https://new-zentao-url","username":"new-username","password":"new-password","apiVersion":"v1"},"name":"张三","age":25,"skills":["编程","设计"]}'

Localização do arquivo de configuração

O arquivo de configuração é salvo no arquivo .zentao/config.json no diretório do usuário:

  • Windows: C:\Users\你的用户名\.zentao\config.json
  • macOS/Linux: ~/.zentao/config.json

Recursos

  • Suporte ao armazenamento persistente de informações de configuração
  • Gerenciamento automático das credenciais de autenticação da API do ZenTao
  • Fornece funcionalidades de criação, atualização e conclusão de tarefas
  • Suporte ao rastreamento e tratamento de bugs
  • Suporte completo a definições de tipos

Observações

  • O arquivo de configuração contém informações sensíveis; certifique-se de que as permissões do arquivo estejam definidas corretamente
  • Recomenda-se atualizar a senha regularmente para garantir a segurança
  • Em caso de problemas, você pode excluir o arquivo de configuração e reconfigurar

Licença

MIT

Destaques

  • Encapsulamento completo da API do ZenTao
  • Design de interface simples e fácil de usar
  • Segurança de tipos (suporte a TypeScript)
  • Tratamento de erros robusto
  • Gerenciamento automatizado de autenticação

Diferenças em relação a outros projetos

Diferente de ferramentas genéricas de operação de banco de dados (como mcp-mysql-server), este projeto foca em fornecer:

  1. Funcionalidades de negócio específicas do sistema ZenTao
  2. Abstração de API de alto nível
  3. Suporte completo ao fluxo de trabalho do ZenTao
  4. Solução de integração pronta para uso com o ZenTao

Desenvolvimento local

  1. Clonar o repositório
git clone https://github.com/bigtian/mcp-zentao.git
cd mcp-zentao
  1. Instalar dependências
npm install
  1. Executar testes
npm test
  1. Compilar o projeto
npm run build

Uso com Docker

Usando docker-compose (recomendado)

  1. Copie o modelo de variáveis de ambiente e modifique a configuração
cp .env.example .env
# 编辑 .env 文件,填入你的禅道系统配置
  1. Inicie o serviço
docker-compose up -d
  1. Visualize os logs
docker-compose logs -f

Usando Docker manualmente

  1. Construa a imagem
docker build -t mcp-zentao .
  1. Execute o contêiner
docker run -d \
  --name mcp-zentao \
  -p 3000:3000 \
  -e ZENTAO_URL=your-zentao-url \
  -e ZENTAO_USERNAME=your-username \
  -e ZENTAO_PASSWORD=your-password \
  -e ZENTAO_API_VERSION=v1 \
  -v $(pwd)/logs:/app/logs \
  mcp-zentao

Configuração no Cursor IDE

Adicione a seguinte configuração no arquivo de configuração do Cursor IDE:

{
  "mcpServers": {
    "zentao": {
      "url": "http://localhost:3000"
    }
  }
}

Uso básico

import { ZentaoAPI } from '@bigtian/mcp-zentao';

// 创建API实例
const api = new ZentaoAPI({
    url: 'https://your-zentao-url',  // 你的禅道系统URL
    username: 'your-username',        // 用户名
    password: 'your-password',        // 密码
    apiVersion: 'v1'                 // API版本,默认为v1
});

// 获取我的任务列表
async function getMyTasks() {
    try {
        const tasks = await api.getMyTasks();
        console.log('我的任务:', tasks);
    } catch (error) {
        console.error('获取任务失败:', error);
    }
}

// 获取我的Bug列表
async function getMyBugs() {
    try {
        const bugs = await api.getMyBugs();
        console.log('我的Bug:', bugs);
    } catch (error) {
        console.error('获取Bug失败:', error);
    }
}

// 完成任务
async function finishTask(taskId: number) {
    try {
        await api.finishTask(taskId);
        console.log('任务已完成');
    } catch (error) {
        console.error('完成任务失败:', error);
    }
}

// 解决Bug
async function resolveBug(bugId: number) {
    try {
        await api.resolveBug(bugId, {
            resolution: 'fixed',
            resolvedBuild: 'trunk',
            comment: '问题已修复'
        });
        console.log('Bug已解决');
    } catch (error) {
        console.error('解决Bug失败:', error);
    }
}

Documentação da API

Classe ZentaoAPI

Construtor

constructor(config: {
    url: string;          // 禅道系统URL
    username: string;     // 用户名
    password: string;     // 密码
    apiVersion?: string;  // API版本,默认为v1
})

Métodos

  1. getMyTasks(): Promise<Task[]>

    • Obtém a lista de tarefas do usuário atual
    • Retorna: Promise<Task[]>
  2. getMyBugs(): Promise<Bug[]>

    • Obtém a lista de bugs do usuário atual
    • Retorna: Promise<Bug[]>
  3. finishTask(taskId: number): Promise<void>

    • Conclui a tarefa com o ID especificado
    • Parâmetro: taskId - ID da tarefa
    • Retorna: Promise
  4. resolveBug(bugId: number, resolution: BugResolution): Promise<void>

    • Resolve o bug com o ID especificado
    • Parâmetros:
      • bugId - ID do bug
      • resolution - Solução do bug
    • Retorna: Promise

Definições de tipos

interface Task {
    id: number;
    name: string;
    status: string;
    pri: number;
    // ... 其他任务属性
}

interface Bug {
    id: number;
    title: string;
    status: string;
    severity: number;
    // ... 其他Bug属性
}

interface BugResolution {
    resolution: string;      // 解决方案类型
    resolvedBuild?: string; // 解决版本
    duplicateBug?: number;  // 重复Bug ID
    comment?: string;       // 备注
}

Observações

  1. Certifique-se de fornecer a URL correta do sistema ZenTao e a versão da API
  2. O nome de usuário e a senha precisam ter as permissões de acesso à API correspondentes
  3. Todas as chamadas de API são assíncronas; use async/await ou Promise para processá-las
  4. Recomenda-se usar try/catch para capturar erros

Ambiente de desenvolvimento

  • Node.js >= 14.0.0
  • TypeScript >= 4.0.0

Contribuição

Contribuições são bem-vindas! Envie Issues e Pull Requests!