mcp-bitrix24

Servidor MCP para Tareas, Grupos de trabajo y Usuarios de Bitrix24. Implementa MCP/JSON-RPC sobre STDIO.

Documentación

mcp-bitrix24

Servidor MCP para Tareas, Grupos de trabajo y Usuarios de Bitrix24. Implementa MCP/JSON-RPC sobre STDIO.

Características

  • Tareas: crear, actualizar, cerrar, reabrir, listar
  • Grupos de trabajo: crear, listar
  • Usuarios: listar, usuario actual, campos disponibles
  • Campos de tareas: campos disponibles + validación para create_task.fields

Requisitos

  • Node.js >= 18
  • URL de webhook de Bitrix24

Instalación / Compilación

npm install
npm run build

Ejecutar vía npm:

npx mcp-bitrix24

Configuración

Establezca la URL del webhook de Bitrix24 mediante una variable de entorno:

BITRIX24_WEBHOOK_URL=https://<your-domain>/rest/<user_id>/<webhook>/

Ejemplo de configuración de Codex MCP:

[mcp_servers.bitrix24]
command = "npx"
args = ["-y", "mcp-bitrix24"]

[mcp_servers.bitrix24.env]
BITRIX24_WEBHOOK_URL = "https://<your-domain>/rest/<user_id>/<webhook>/"

Herramientas

Tareas

  • create_task
    • Entrada: title (cadena, obligatorio), description? (cadena), responsible_id? (número), group_id? (número), fields? (objeto)
      • Salida: { task_id: number }
      • Nota: si se proporciona fields, las claves se validan contra get_task_fields.
  • update_task
    • Entrada: task_id (número, obligatorio) + al menos uno de: title?, description?, responsible_id?, group_id?
      • Salida: { task_id: number }
  • close_task
    • Entrada: task_id (número, obligatorio)
      • Salida: { task_id: number }
  • reopen_task
    • Entrada: task_id (número, obligatorio)
      • Salida: { task_id: number }
  • list_tasks
    • Entrada: responsible_id? (número), group_id? (número), start? (número), limit? (número)
      • Salida: { tasks: [{ id, title, status }] }
  • get_task_fields
    • Entrada: {}
      • Salida: { fields: { [field: string]: object } }
  • list_task_history
    • Entrada: task_id (número, obligatorio), filter? (objeto), order? (objeto)
      • Salida: { list: [ { id, createdDate, field, value, user } ] }

Grupos de trabajo

  • create_group
    • Entrada: name (cadena, obligatorio), description? (cadena)
      • Salida: { group_id: number }
  • list_groups
    • Entrada: limit? (número)
      • Salida: { groups: [{ id, name }] }

Usuarios

  • list_users
    • Entrada:
      • filter? (objeto) - sort? (cadena) - order? ("ASC" | "DESC") - admin_mode? (booleano) - start? (número) - limit? (número)
      • Salida: { users: [{ id, name, last_name, email?, active }] }
      • Nota: filter admite filtros de user.get de Bitrix24 (incluidos prefijos como >=, %, @, etc.). start controla la paginación (Bitrix devuelve 50 registros por página); limit es un segmento local después de la respuesta de la API.
  • get_user_fields
    • Entrada: {}
      • Salida: { fields: { [field: string]: string } }
  • get_current_user
    • Entrada: {}
      • Salida: { user: { id, name, last_name, email?, active } }

Arquitectura

Capas de arquitectura limpia:

  • mcp/ — protocolo, transporte, servidor
  • adapters/ — mapeo de herramientas MCP al dominio
  • domain/ — entidades, servicios, puertos
  • infrastructure/ — cliente REST de Bitrix24

Notas de desarrollo

  • La validación de entrada utiliza zod.
  • Transporte: solo STDIO.
  • Compilación: tsc (npm run build).

Contribuciones

Consulte CONTRIBUTING.md para obtener las pautas.