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:
- Funcionalidades de negócio específicas do sistema ZenTao
- Abstração de API de alto nível
- Suporte completo ao fluxo de trabalho do ZenTao
- Solução de integração pronta para uso com o ZenTao
Desenvolvimento local
- Clonar o repositório
git clone https://github.com/bigtian/mcp-zentao.git
cd mcp-zentao
- Instalar dependências
npm install
- Executar testes
npm test
- Compilar o projeto
npm run build
Uso com Docker
Usando docker-compose (recomendado)
- Copie o modelo de variáveis de ambiente e modifique a configuração
cp .env.example .env
# 编辑 .env 文件,填入你的禅道系统配置
- Inicie o serviço
docker-compose up -d
- Visualize os logs
docker-compose logs -f
Usando Docker manualmente
- Construa a imagem
docker build -t mcp-zentao .
- 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
-
getMyTasks(): Promise<Task[]>- Obtém a lista de tarefas do usuário atual
- Retorna: Promise<Task[]>
-
getMyBugs(): Promise<Bug[]>- Obtém a lista de bugs do usuário atual
- Retorna: Promise<Bug[]>
-
finishTask(taskId: number): Promise<void>- Conclui a tarefa com o ID especificado
- Parâmetro: taskId - ID da tarefa
- Retorna: Promise
-
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
- Certifique-se de fornecer a URL correta do sistema ZenTao e a versão da API
- O nome de usuário e a senha precisam ter as permissões de acesso à API correspondentes
- Todas as chamadas de API são assíncronas; use async/await ou Promise para processá-las
- 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!