@dekalabs-npm/taiga-mcp-server
v0.0.3
Published
MCP Server para interactuar con la API de Taiga
Downloads
59
Maintainers
Readme
Servidor MCP para Taiga
Servidor Model Context Protocol (MCP) para interactuar con la API de Taiga desde clientes LLM (Cursor, Open WebUI, Slack MCP, etc.).
Requisitos
- Node.js 24.x (LTS Krypton, usar
.nvmrc) - Acceso a una instancia de Taiga
- Autenticación por token o por usuario/contraseña
Variables de entorno
| Variable | Requerida | Descripción |
|---|---|---|
| TAIGA_API_URL | Si | URL base de tu instancia Taiga, por ejemplo https://tu-instancia-taiga.com/api/v1 |
| TAIGA_TOKEN | Si* | Token de autenticación |
| TAIGA_USERNAME | Si* | Usuario de Taiga |
| TAIGA_PASSWORD | Si* | Contraseña de Taiga |
* Debes configurar TAIGA_TOKEN o TAIGA_USERNAME + TAIGA_PASSWORD.
Instalacion local
- Configurar la version de Node.js:
nvm use- Instalar dependencias:
pnpm install- Compilar:
pnpm build- Configurar variables de entorno:
Opción A: token directo
export TAIGA_API_URL="https://tu-instancia-taiga.com/api/v1"
export TAIGA_TOKEN="tu-token-de-taiga"Opción B: usuario y contraseña
export TAIGA_API_URL="https://tu-instancia-taiga.com/api/v1"
export TAIGA_USERNAME="tu-usuario"
export TAIGA_PASSWORD="tu-contraseña"Uso desde npm (sin clonar)
Puedes ejecutarlo directamente con npx:
npx -y @dekalabs-npm/taiga-mcp-serverConfiguracion en cliente MCP
Este servidor se expone por stdio y funciona con clientes MCP compatibles.
Tienes un ejemplo en mcp.config.example.json.
Opción recomendada (con nvm)
{
"mcpServers": {
"taiga": {
"command": "bash",
"args": [
"-lc",
"source ~/.nvm/nvm.sh && nvm use >/dev/null && npx -y @dekalabs-npm/taiga-mcp-server"
],
"env": {
"TAIGA_API_URL": "https://tu-instancia-taiga.com/api/v1",
"TAIGA_TOKEN": "tu-token-de-taiga"
}
}
}
}Opción con usuario y contraseña
{
"mcpServers": {
"taiga": {
"command": "bash",
"args": [
"-lc",
"source ~/.nvm/nvm.sh && nvm use >/dev/null && npx -y @dekalabs-npm/taiga-mcp-server"
],
"env": {
"TAIGA_API_URL": "https://tu-instancia-taiga.com/api/v1",
"TAIGA_USERNAME": "tu-usuario",
"TAIGA_PASSWORD": "tu-contraseña"
}
}
}
}Flujo recomendado
Antes de usar cualquier otra herramienta, llama a load_project_context con projectSlug o projectId.
1. load_project_context({ projectSlug: "mi-proyecto" })
-> Devuelve estados, roles, puntos, tags y miembros
2. Usar el resto de herramientas con esos IDsHerramientas disponibles
Contexto y configuracion
load_project_context- Inicializa y devuelve configuracion dinamica del proyectoget_estimation_taxonomy- Devuelve roles computables y escala de puntos
Creacion
create_user_story- Crea una historia de usuariocreate_storyless- Crea una tarea sin historia de usuariocreate_task_for_us- Crea una tarea dentro de una historia de usuario
Listado
list_sprints- Lista sprints activoslist_users- Lista usuarios (GET /api/v1/users, con filtro opcional porproject)list_user_stories- Lista historias de usuario con filtros avanzadoslist_tasks- Lista tareas con filtros avanzadoslist_user_stories_from_sprint- Lista historias de usuario de un sprintlist_tasks_from_user_story- Lista tareas de una historia de usuario
Actualizacion
update_user_story_status- Actualiza estado de historias de usuarioupdate_task_status- Actualiza estado de tareasupdate_user_story_subject- Actualiza titulo de una historia de usuarioupdate_user_story_tags- Actualiza tags de una historia de usuarioupdate_user_story_points- Actualiza puntos por rol de una historia de usuariomove_us_to_sprint- Mueve una historia a sprint y la pone en READY
Operaciones masivas
generate_backlog- Crea multiples historias de usuario con tareas
Parámetros destacados
load_project_context
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| projectSlug | string | Si (o projectId) | Slug del proyecto |
| projectId | number | Si (o projectSlug) | ID numerico del proyecto |
| forceRefresh | boolean | No | Fuerza recarga del contexto |
list_users
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| project | number | No | ID del proyecto. Si no se indica, usa el proyecto del contexto actual |
Pruebas manuales
pnpm build && pnpm startEl servidor se comunica por stdio; para pruebas funcionales es mejor usarlo desde un cliente MCP.
Estructura del proyecto
.
├── .nvmrc
├── package.json
├── tsconfig.json
├── README.md
├── mcp.config.example.json
└── src/
├── index.ts
├── config/
│ └── constants.ts
├── client/
│ ├── TaigaClient.ts
│ └── TaigaAuth.ts
├── types/
│ └── taiga.ts
├── utils/
│ └── guardrails.ts
└── tools/
├── index.ts
├── loadProjectContext.ts
├── listUsers.ts
├── createUserStory.ts
├── createStoryless.ts
├── createTaskForUs.ts
├── listSprints.ts
├── listUserStories.ts
├── listTasks.ts
├── listUserStoriesFromSprint.ts
├── listTasksFromUserStory.ts
├── updateUserStoryStatus.ts
├── updateTaskStatus.ts
├── updateUserStorySubject.ts
├── updateUserStoryTags.ts
├── updateUserStoryPoints.ts
├── moveUsToSprint.ts
├── generateBacklog.ts
└── modules/
├── index.ts
├── configTools.ts
├── createTools.ts
├── listTools.ts
├── updateTools.ts
├── bulkTools.ts
└── toolHandlers.tsScripts
pnpm build- Compila TypeScript a JavaScriptpnpm start- Ejecuta el servidor compiladopnpm dev- Compila y ejecuta en un solo pasopnpm watch- Watch modepnpm clean- Limpiadist
Notas importantes
load_project_contextdebe llamarse al inicio de cada sesion.- El contexto del proyecto se cachea en memoria (estados, roles, puntos, tags, miembros).
- El servidor usa control de version optimista de Taiga en operaciones PATCH.
Soporte
Si necesitas soporte técnico con este proyecto, contacta a Luis Ballester Zafra - Dekalabs.
Troubleshooting
- Verifica que
TAIGA_API_URLy las credenciales estén configuradas. - Revisa logs de error en stderr.
- Asegura Node.js 24.x (LTS Krypton).
- Verifica dependencias instaladas con
pnpm install. - Asegurate de llamar
load_project_contextantes de otras herramientas.
