Plane MCP Server

oficial

El servidor oficial MCP de Plane proporciona integración con las APIs de Plane, permitiendo la automatización completa con IA de proyectos, elementos de trabajo, ciclos y más en Plane.

Documentación

Servidor MCP de Plane

Un servidor del Protocolo de Contexto de Modelo (MCP) para la integración con Plane. Este servidor proporciona herramientas y recursos para interactuar con Plane a través de agentes de IA.

Características

  • 🔧 Integración con Plane: Interactúa con las APIs y servicios de Plane
  • 🔌 Múltiples Transportes: Soporta transportes stdio, SSE y HTTP transmitible
  • 🌐 Remoto y Local: Funciona tanto localmente como servicio remoto
  • 🛠️ Extensible: Fácil de añadir nuevas herramientas y recursos

Uso

El servidor soporta tres métodos de transporte. Recomendamos usar uvx ya que no requiere instalación.

Requisitos:

  • Python 3.10+ (para transporte stdio, vía uvx)
  • Node.js 22+ (para transportes remotos, vía npx)

1. Transporte Stdio (para uso local)

Configuración del Cliente MCP (usando uvx - recomendado):

{
  "mcpServers": {
    "plane": {
      "command": "uvx",
      "args": ["plane-mcp-server", "stdio"],
      "env": {
        "PLANE_API_KEY": "<your-api-key>",
        "PLANE_WORKSPACE_SLUG": "<your-workspace-slug>",
        "PLANE_BASE_URL": "https://api.plane.so"
      }
    }
  }
}

2. Transporte HTTP Remoto con OAuth

Conéctate al servidor MCP de Plane alojado usando autenticación OAuth.

URL: https://mcp.plane.so/http/mcp

Configuración del Cliente MCP (para herramientas como Claude Desktop sin soporte nativo MCP remoto):

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/mcp"]
    }
  }
}

Nota: La autenticación OAuth se manejará automáticamente al conectar con el servidor remoto.

3. Transporte HTTP Remoto usando Token PAT

Conéctate al servidor MCP de Plane alojado usando un Token de Acceso Personal (PAT).

URL: https://mcp.plane.so/http/api-key/mcp

Cabeceras:

  • Authorization: Bearer <PAT_TOKEN>
  • X-Workspace-slug: <SLUG>

Configuración del Cliente MCP (para herramientas como Claude Desktop sin soporte nativo MCP remoto):

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/http/api-key/mcp"],
      "headers": {
        "Authorization": "Bearer <PAT_TOKEN>",
        "X-Workspace-slug": "<SLUG>"
      }
    }
  }
}

4. Transporte SSE (Legado)

⚠️ Transporte Legado: El transporte SSE (Server-Sent Events) se mantiene por compatibilidad con versiones anteriores. Las nuevas implementaciones deben usar el transporte HTTP (secciones 2 o 3) en su lugar.

Conéctate al servidor MCP de Plane alojado usando autenticación OAuth mediante Server-Sent Events.

URL: https://mcp.plane.so/sse

Configuración del Cliente MCP (para herramientas que soporten transporte SSE):

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": ["mcp-remote@latest", "https://mcp.plane.so/sse"]
    }
  }
}

Nota: La autenticación OAuth se manejará automáticamente al conectar con el servidor remoto. Este transporte está obsoleto en favor del transporte HTTP.

Configuración

Autenticación

El servidor requiere autenticación mediante variables de entorno:

  • PLANE_BASE_URL: URL base para la API de Plane (por defecto: https://api.plane.so) - Opcional
  • PLANE_API_KEY: Clave API para autenticación (requerida para transporte stdio)
  • PLANE_WORKSPACE_SLUG: Identificador de slug del espacio de trabajo (requerido para transporte stdio)
  • PLANE_ACCESS_TOKEN: Token de acceso para autenticación (alternativa a la clave API)

Ejemplo (para transporte stdio):

export PLANE_BASE_URL="https://api.plane.so"
export PLANE_API_KEY="your-api-key"
export PLANE_WORKSPACE_SLUG="your-workspace-slug"

Nota: Para transportes HTTP remotos (OAuth o PAT), la autenticación se maneja mediante el método de conexión (flujo OAuth o cabeceras PAT) y no requiere estas variables de entorno.

URIs de redirección OAuth

Para los transportes OAuth HTTP/SSE, el servidor valida la URI de redirección de cada cliente contra una lista permitida. Los clientes MCP comunes (Cursor, VS Code, Claude.ai, conectores ChatGPT, localhost) están permitidos por defecto.

Para incorporar un nuevo cliente sin un cambio de código o lanzamiento, añade patrones adicionales mediante una variable de entorno:

  • PLANE_OAUTH_ALLOWED_REDIRECT_URIS: Patrones de URI de redirección separados por comas que se añaden a la lista permitida integrada.
export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"

Los patrones soportan coincidencia glob (* coincide con cualquier puerto, segmento de ruta o subdominio). Por seguridad, mantén el host fijo y usa comodín solo para el puerto/ruta.

Registro

El servidor emite registros JSON estructurados. Cada llamada a herramienta se registra con su nombre de herramienta, duración, estado y (cuando está disponible) el id de usuario opaco y el slug del espacio de trabajo.

  • LOG_USER_INFO: Cuando es true, incluye información del usuario (PII como el nombre para mostrar) en los registros junto al id de usuario opaco. Por defecto es false para que la PII nunca se registre a menos que se opte explícitamente. Solo los transportes HTTP OAuth y PAT (cabecera) llevan un nombre para mostrar; stdio no se ve afectado.
export LOG_USER_INFO="true"

Herramientas Disponibles

El servidor proporciona herramientas completas para interactuar con Plane. Todas las herramientas usan modelos Pydantic del SDK de Plane para seguridad de tipos y validación.

Proyectos

Nombre de HerramientaDescripción
list_projectsListar todos los proyectos en un espacio de trabajo con paginación y filtrado opcionales
create_projectCrear un nuevo proyecto con nombre, identificador y configuración opcional
retrieve_projectRecuperar un proyecto por ID
update_projectActualizar un proyecto con datos parciales
delete_projectEliminar un proyecto por ID
get_project_worklog_summaryObtener resumen de registro de trabajo para un proyecto
get_project_membersObtener todos los miembros de un proyecto
update_project_featuresActualizar configuración de características de un proyecto

Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_itemsListar todos los elementos de trabajo en un proyecto con filtrado y paginación opcionales
create_work_itemCrear un nuevo elemento de trabajo con nombre, asignados, etiquetas y otros atributos
retrieve_work_itemRecuperar un elemento de trabajo por ID con expansión de campos opcional
retrieve_work_item_by_identifierRecuperar un elemento de trabajo por identificador de proyecto y número de secuencia de incidencia
update_work_itemActualizar un elemento de trabajo con datos parciales
delete_work_itemEliminar un elemento de trabajo por ID
search_work_itemsBuscar elementos de trabajo en un espacio de trabajo con cadena de consulta

Ciclos

Nombre de HerramientaDescripción
list_cyclesListar ciclos en un proyecto (establecer archived=true para archivados)
create_cycleCrear un nuevo ciclo con nombre, fechas y propietario
retrieve_cycleRecuperar un ciclo por ID
update_cycleActualizar un ciclo con datos parciales
delete_cycleEliminar un ciclo por ID
manage_cycle_work_itemsAñadir y/o eliminar elementos de trabajo en un ciclo
list_cycle_work_itemsListar elementos de trabajo en un ciclo
transfer_cycle_work_itemsTransferir elementos de trabajo de un ciclo a otro
manage_cycle_archiveArchivar o desarchivar un ciclo

Módulos

Nombre de HerramientaDescripción
list_modulesListar módulos en un proyecto (establecer archived=true para archivados)
create_moduleCrear un nuevo módulo con nombre, fechas, estado y miembros
retrieve_moduleRecuperar un módulo por ID
update_moduleActualizar un módulo con datos parciales
delete_moduleEliminar un módulo por ID
manage_module_work_itemsAñadir y/o eliminar elementos de trabajo en un módulo
list_module_work_itemsListar elementos de trabajo en un módulo
manage_module_archiveArchivar o desarchivar un módulo

Iniciativas

Nombre de HerramientaDescripción
list_initiativesListar todas las iniciativas en un espacio de trabajo
create_initiativeCrear una nueva iniciativa con nombre, fechas, estado y líder
retrieve_initiativeRecuperar una iniciativa por ID
update_initiativeActualizar una iniciativa con datos parciales
delete_initiativeEliminar una iniciativa por ID

Elementos de Trabajo de Admisión

Nombre de HerramientaDescripción
list_intake_work_itemsListar todos los elementos de trabajo de admisión en un proyecto con paginación opcional
create_intake_work_itemCrear un nuevo elemento de trabajo de admisión en un proyecto
retrieve_intake_work_itemRecuperar un elemento de trabajo de admisión por ID de elemento de trabajo con expansión de campos opcional
update_intake_work_itemActualizar un elemento de trabajo de admisión con datos parciales
delete_intake_work_itemEliminar un elemento de trabajo de admisión por ID de elemento de trabajo

Propiedades de Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_item_propertiesListar propiedades de elementos de trabajo para un tipo de elemento de trabajo
create_work_item_propertyCrear una nueva propiedad de elemento de trabajo con tipo, configuraciones y reglas de validación
retrieve_work_item_propertyRecuperar una propiedad de elemento de trabajo por ID
update_work_item_propertyActualizar una propiedad de elemento de trabajo con datos parciales
delete_work_item_propertyEliminar una propiedad de elemento de trabajo por ID

Hitos

Nombre de HerramientaDescripción
list_milestonesListar todos los hitos en un proyecto
create_milestoneCrear un nuevo hito
retrieve_milestoneRecuperar un hito por ID
update_milestoneActualizar un hito por ID
delete_milestoneEliminar un hito por ID
manage_milestone_work_itemsAñadir y/o eliminar elementos de trabajo en un hito
list_milestone_work_itemsListar elementos de trabajo en un hito

Etiquetas

Nombre de HerramientaDescripción
list_labelsListar todas las etiquetas en un proyecto
create_labelCrear una nueva etiqueta
retrieve_labelRecuperar una etiqueta por ID
update_labelActualizar una etiqueta por ID
delete_labelEliminar una etiqueta por ID

Estados

Nombre de HerramientaDescripción
list_statesListar todos los estados en un proyecto
create_stateCrear un nuevo estado
retrieve_stateRecuperar un estado por ID
update_stateActualizar un estado por ID
delete_stateEliminar un estado por ID

Comentarios de Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_item_commentsListar comentarios para un elemento de trabajo
retrieve_work_item_commentRecuperar un comentario específico para un elemento de trabajo
create_work_item_commentCrear un comentario para un elemento de trabajo
update_work_item_commentActualizar un comentario para un elemento de trabajo
delete_work_item_commentEliminar un comentario para un elemento de trabajo

Enlaces de Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_item_linksListar enlaces para un elemento de trabajo
retrieve_work_item_linkRecuperar un enlace específico para un elemento de trabajo
create_work_item_linkCrear un enlace para un elemento de trabajo
update_work_item_linkActualizar un enlace para un elemento de trabajo
delete_work_item_linkEliminar un enlace para un elemento de trabajo

Tipos de Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_item_typesListar todos los tipos de elementos de trabajo en un proyecto
create_work_item_typeCrear un nuevo tipo de elemento de trabajo
retrieve_work_item_typeRecuperar un tipo de elemento de trabajo por ID
update_work_item_typeActualizar un tipo de elemento de trabajo por ID
delete_work_item_typeEliminar un tipo de elemento de trabajo por ID
import_work_item_types_to_projectVincular en lote tipos de elementos de trabajo a nivel de espacio de trabajo a un proyecto
resolve_work_item_typeEncontrar o crear un tipo nombrado para un proyecto, manejando automáticamente el ámbito de espacio de trabajo vs proyecto e importación

Relaciones de Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_item_relationsListar relaciones para un elemento de trabajo
create_work_item_relationCrear relaciones para un elemento de trabajo
remove_work_item_relationEliminar una relación de un elemento de trabajo

Definiciones de Relaciones de Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_item_relation_definitionsListar definiciones de relaciones personalizadas del espacio de trabajo
create_work_item_relation_definitionCrear una definición de relación del espacio de trabajo
update_work_item_relation_definitionActualizar una definición de relación
delete_work_item_relation_definitionEliminar una definición de relación

Actividades de Elementos de Trabajo

Nombre de HerramientaDescripción
list_work_item_activitiesListar actividades para un elemento de trabajo
retrieve_work_item_activityRecuperar una actividad específica para un elemento de trabajo

Registros de Trabajo

Nombre de HerramientaDescripción
list_work_logsListar registros de trabajo para un elemento de trabajo
create_work_logCrear un registro de trabajo para un elemento de trabajo
update_work_logActualizar un registro de trabajo para un elemento de trabajo
delete_work_logEliminar un registro de trabajo para un elemento de trabajo

Páginas

Nombre de HerramientaDescripción
list_pagesListar páginas (del espacio de trabajo, o de un proyecto si se proporciona project_id)
retrieve_pageRecuperar una página por ID (del espacio de trabajo, o de un proyecto si se proporciona project_id)
create_pageCrear una página de espacio de trabajo o proyecto

Espacios de Trabajo

Nombre de HerramientaDescripción
get_workspace_membersObtener todos los miembros del espacio de trabajo actual
get_featuresObtener indicadores de características (del espacio de trabajo, o de un proyecto si se proporciona project_id)
update_workspace_featuresActualizar características del espacio de trabajo actual

Usuarios

Nombre de HerramientaDescripción
get_meObtener información del usuario autenticado actual

Total de Herramientas: Más de 100 herramientas en 20 categorías

Desarrollo

Ejecutar Pruebas

pytest

Formateo de Código

black plane_mcp/
ruff check plane_mcp/

Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles.

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.

Aviso de descontinuación

⚠️ El plane-mcp-server basado en Node.js está descontinuado y ya no recibe mantenimiento.

Este repositorio representa la nueva implementación basada en Python+FastMCP del servidor Plane MCP. Si estabas usando la versión anterior de Node.js, migra a esta versión basada en Python para obtener soporte y actualizaciones continuas.

La nueva implementación ofrece:

  • Mejor seguridad de tipos con modelos Pydantic
  • Rendimiento mejorado con FastMCP
  • Cobertura de herramientas ampliada
  • Mantenimiento y desarrollo activos

Para obtener ayuda con la migración, consulta los ejemplos de configuración en este README o abre un issue para recibir soporte.

Configuración antigua de Node.js (Descontinuada):

Si estabas usando el anterior @makeplane/plane-mcp-server basado en Node.js, tu configuración se veía así:

{
  "mcpServers": {
    "plane": {
      "command": "npx",
      "args": [
        "-y",
        "@makeplane/plane-mcp-server"
      ],
      "env": {
        "PLANE_API_KEY": "<YOUR_API_KEY>",
        "PLANE_API_HOST_URL": "<HOST_URL_FOR_SELF_HOSTED>",
        "PLANE_WORKSPACE_SLUG": "<YOUR_WORKSPACE_SLUG>"
      }
    }
  }
}

Migra a la nueva configuración basada en Python que se muestra en la sección Uso más arriba.