Plane

oficial

O servidor MCP oficial do Plane fornece integração com as APIs do Plane, permitindo automação completa por IA de projetos, itens de trabalho, ciclos e muito mais do Plane.

O que você pode fazer com Plane MCP?

  • Criar e atualizar itens de trabalho — Peça ao seu assistente para criar um item de trabalho como "Corrigir login" ou atualizar seu estado, prioridade ou responsáveis por meio da ferramenta workitem.
  • Consultar itens de trabalho com PQL — Use a linguagem de consulta do Plane para listar, contar ou pesquisar itens de trabalho por filtros como state__group = "started" AND priority = "urgent".
  • Gerenciar ciclos e módulos — Arquivar ciclos, listar ciclos de projeto ou realizar outras operações de ciclo/módulo por meio das ferramentas de recursos consolidadas.
  • Lidar com anexos de URLs — Disparar uploads de anexos a partir de URLs externas, com suporte a proxy para controle de SSRF via upload_from_url.
  • Recuperar referência de sintaxe PQL — Peça a sintaxe completa do PQL, operadores e exemplos práticos chamando get_pql_reference.

Documentação

Servidor MCP Plane

Um servidor Model Context Protocol para Plane. Fornece a um agente de IA ferramentas para ler e gerenciar projetos, itens de trabalho, ciclos, módulos, releases, clientes e muito mais.

Construído sobre FastMCP e o oficial plane-sdk.

  • 30 ferramentas, uma por recurso do Plane, cobrindo 207 operações
  • Local ou remoto — stdio, HTTP streamable, SSE
  • Autenticação OAuth ou chave de API

Início rápido

Obtenha uma chave de API do Plane: Configurações do Workspace → Tokens de API.

Adicione isto à configuração do seu cliente MCP:

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

uvx não requer etapa de instalação. Requer Python 3.10+.

Para um Plane auto-hospedado, adicione "PLANE_BASE_URL": "https://plane.example.com".

Transportes

stdio — local

Executa como um subprocesso do seu cliente MCP. Configuração conforme mostrado acima; requer PLANE_API_KEY e PLANE_WORKSPACE_SLUG.

PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... uvx plane-mcp-server stdio

HTTP com OAuth — hospedado

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

O fluxo OAuth é tratado na conexão; nenhuma credencial na sua configuração. Para clientes sem suporte nativo a MCP remoto, faça a ponte com mcp-remote:

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

Requer Node.js 22+.

HTTP com token de acesso pessoal — hospedado

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

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

SSE — obsoleto

https://mcp.plane.so/sse é mantido apenas para compatibilidade reversa. Use um transporte HTTP em vez disso.

Ferramentas

O servidor anuncia 30 ferramentas, uma por recurso. Cada uma recebe um parâmetro action que seleciona a operação:

workitem(action="create", project_id=..., name="Fix login")
workitem(action="list", project_id=..., pql='state__group = "started"')
cycle(action="archive", project_id=..., cycle_id=...)

A descrição de cada ferramenta lista suas ações com seus parâmetros obrigatórios e opcionais, então o catálogo é autodocumentado no momento da chamada.

→ Referência completa de ferramentas e ações

Consultando itens de trabalho

Listar, contar e pesquisar aceitam PQL, a linguagem de consulta do Plane:

workitem(action="list", project_id=..., pql='state__group = "started" AND priority = "urgent"')
workitem(action="count", pql='assignees__id = "<member id>"', group_by="state_id")

Chame get_pql_reference para a sintaxe completa, operadores e exemplos práticos.

Atualizando a partir das ferramentas por operação

Versões anteriores expunham uma ferramenta por operação de API. Integrações existentes continuam funcionando: 169 desses 177 nomes ainda resolvem para a ferramenta consolidada, então um prompt ou script salvo chamando create_work_item ou list_cycles não precisa de alteração. Eles não são mais anunciados e mantêm os nomes de parâmetros com os quais foram lançados (work_item_id, não workitem_id).

Sete nomes escolhiam entre duas operações com um parâmetro (manage_project_archive(archive=False)), o que um único par ferramenta-ação não consegue reproduzir; chamar um deles informa seu substituto. get_pql_reference está inalterado.

Configuração

Autenticação

VariávelObrigatória paraFinalidade
PLANE_API_KEYstdioChave de API
PLANE_WORKSPACE_SLUGstdioWorkspace de destino
PLANE_BASE_URLopcionalURL da API do Plane (padrão https://api.plane.so)

Os transportes remotos carregam credenciais na conexão — o fluxo OAuth ou os cabeçalhos PAT — e não precisam de nenhuma destas.

Proxy de saída para uploads de anexos

HTTP_PROXY / HTTPS_PROXY / NO_PROXY (e suas formas em minúsculas) são respeitados para o fetch de anexo a partir de URL (upload_from_url). Quando um proxy se aplica a uma determinada solicitação, o proxy — não este servidor — é o controle de SSRF dessa solicitação: o servidor não fixa nem valida o endereço resolvido do destino por conta própria, já que o proxy conecta-se e resolve o destino independentemente. Escopo NO_PROXY e a política de egresso do proxy de acordo.

Auto-hospedando o próprio servidor:

VariávelFinalidade
PLANE_INTERNAL_BASE_URLURL interna para chamadas servidor-a-servidor, preferida em relação a PLANE_BASE_URL
REDIS_URLArmazenamento de tokens OAuth como uma URL de conexão (redis:// ou rediss:// para TLS); vence host/porta
REDIS_HOST / REDIS_PORTArmazenamento de tokens OAuth; recorre à memória
PLANE_OAUTH_PROVIDER_*Credenciais do cliente OAuth e URL base
MCP_PATH_PREFIXPrefixo de caminho para as rotas HTTP, quando montado atrás de um proxy — /plane serve /plane/http/mcp

URIs de redirecionamento OAuth

Os transportes OAuth validam a URI de redirecionamento de cada cliente contra uma lista de permissões. Clientes comuns (Cursor, VS Code, Claude.ai, conectores ChatGPT, localhost) são permitidos por padrão.

Para integrar um novo cliente sem um release, acrescente padrões:

export PLANE_OAUTH_ALLOWED_REDIRECT_URIS="https://newclient.com/cb,https://other.app/oauth/*"

* corresponde a qualquer porta, segmento de caminho ou subdomínio. Mantenha o host fixo e use curinga apenas na porta ou no caminho.

Registro de logs

JSON estruturado. Cada chamada de ferramenta registra seu nome, duração, status e — quando disponível — um ID de usuário opaco e o slug do workspace.

export LOG_USER_INFO=false    # also log the display name (PII);
export LOG_PAYLOADS=false    # keep request payloads out of logs; default true

Apenas os transportes OAuth e PAT carregam um nome de exibição; stdio não é afetado.

Desenvolvimento

git clone https://github.com/makeplane/plane-mcp-server
cd plane-mcp-server
uv pip install -e ".[dev]"

Execute o servidor contra um workspace:

PLANE_API_KEY=... PLANE_WORKSPACE_SLUG=... python -m plane_mcp stdio
python -m plane_mcp http            # port 8211

Testes, formatação, lint:

pytest                              # no network or credentials needed
ruff format plane_mcp/ tests/       # line length 120
ruff check plane_mcp/ tests/        # rules E, F, I, UP, B

A suíte executa totalmente offline — cada ação de cada recurso é executada contra um substituto que vincula cada chamada à assinatura genuína do plane-sdk. Veja plane_mcp/tools/README.md.

Testes de integração ao vivo são ignorados a menos que você os aponte para um servidor em execução:

export PLANE_TEST_API_KEY=... PLANE_TEST_WORKSPACE_SLUG=...
export PLANE_TEST_MCP_URL=http://localhost:8211    # optional; this is the default
pytest tests/test_integration.py -v

Eles gravam dados reais nesse workspace.

Estrutura do repositório

CaminhoConteúdo
plane_mcp/__main__.pyponto de entrada; escolhe o transporte a partir de argv[1]
plane_mcp/server.pyuma fábrica por transporte
plane_mcp/client.pyresolve credenciais em um cliente plane-sdk
plane_mcp/auth/provedor OAuth e autenticação por cabeçalho
plane_mcp/tools/a superfície de ferramentas: um módulo por recurso do Plane
plane_mcp/toolkit/blocos de construção compartilhados para a superfície de ferramentas
plane_mcp/pql_reference.pyreferência de sintaxe PQL servida aos modelos

Contribuindo

Pull requests são bem-vindos. Por favor, execute pytest e ruff check antes de enviar; novas ferramentas devem vir com os invariantes descritos em plane_mcp/tools/README.md.

Veja CONTRIBUTING.md e CODE_OF_CONDUCT.md.

Migrando do servidor Node.js

@makeplane/plane-mcp-server (Node.js) está obsoleto e sem manutenção. Esta implementação em Python o substitui.

Node.jsPython
PLANE_API_KEYPLANE_API_KEY
PLANE_API_HOST_URLPLANE_BASE_URL
PLANE_WORKSPACE_SLUGPLANE_WORKSPACE_SLUG

Substitua o command e o args pela configuração stdio em Início rápido.

Licença

MIT — veja LICENSE.