Quire

Este servidor permite que assistentes de IA interajam com seus projetos, tarefas e dados do Quire de forma segura.

Documentação

Servidor MCP Quire

CI Coverage Status CodeQL OpenSSF Scorecard OpenSSF Best Practices npm version npm downloads License Node

Um servidor Model Context Protocol (MCP) para a plataforma de gerenciamento de projetos Quire.

Este servidor permite que assistentes de IA (como o Claude) interajam com seus projetos, tarefas e dados do Quire com segurança.

Início Rápido

Pré-requisitos

Etapa 1: Criar um aplicativo OAuth do Quire

  1. Acesse Gerenciamento de aplicativos Quire
  2. Clique em Criar novo aplicativo
  3. Defina a URL de redirecionamento para: http://localhost:3000/callback
  4. Escolha os escopos de permissão necessários
  5. Copie o ID do cliente de desenvolvimento e o Segredo do cliente de desenvolvimento

Etapa 2: Configurar seu cliente MCP

Escolha a configuração que corresponde ao seu cliente MCP:

Claude Desktop (Recomendado)

Adicione ao seu claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "quire": {
      "command": "npx",
      "args": ["-y", "quire-mcp"],
      "env": {
        "QUIRE_OAUTH_CLIENT_ID": "your-client-id",
        "QUIRE_OAUTH_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Claude Code (CLI)

Adicione às configurações MCP do Claude Code (~/.claude/mcp.json ou nível do projeto):

{
  "mcpServers": {
    "quire": {
      "command": "npx",
      "args": ["-y", "quire-mcp"],
      "env": {
        "QUIRE_OAUTH_CLIENT_ID": "your-client-id",
        "QUIRE_OAUTH_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Cursor

Nas configurações do Cursor, adicione um servidor MCP:

{
  "mcpServers": {
    "quire": {
      "command": "npx",
      "args": ["-y", "quire-mcp"],
      "env": {
        "QUIRE_OAUTH_CLIENT_ID": "your-client-id",
        "QUIRE_OAUTH_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

Etapa 3: Autorização na primeira utilização

No primeiro uso, o servidor irá:

  1. Imprimir uma URL de autorização no console
  2. Aguardar você abrir essa URL no navegador
  3. Após você conceder acesso, o Quire redireciona para localhost
  4. O servidor captura os tokens e os armazena em cache

Os usos subsequentes renovarão os tokens automaticamente conforme necessário.

Modos de Transporte

O servidor suporta dois modos de transporte: stdio (padrão) e http.

Modo STDIO (Padrão)

O modo STDIO é a configuração mais simples. O cliente MCP inicia o processo do servidor diretamente e se comunica via JSON-RPC por stdin/stdout.

Como funciona:

  1. O cliente MCP inicia npx quire-mcp com variáveis de ambiente
  2. Na primeira chamada de ferramenta, se não houver token em cache, o servidor imprime uma URL OAuth em stderr
  3. O usuário abre a URL no navegador e autoriza
  4. O Quire redireciona para localhost:3000/callback onde o servidor captura o token
  5. O token é armazenado em cache no disco para uso futuro

Locais do cache de tokens:

  • Windows: %APPDATA%\quire-mcp\tokens.json
  • macOS: ~/Library/Application Support/quire-mcp/tokens.json
  • Linux: ~/.config/quire-mcp/tokens.json

Modo HTTP

O modo HTTP executa um servidor HTTP com endpoints OAuth 2.0. Use este modo quando precisar de:

  • Um processo de servidor de longa duração
  • Vários clientes conectando-se ao mesmo servidor
  • Implantação em um host remoto (por exemplo, Cloudflare Workers, VMs na nuvem)

Importante: No modo HTTP, o servidor deve estar em execução antes que os clientes possam se conectar. As variáveis de ambiente são definidas no processo do servidor, não nas configurações do cliente.

Executando o Modo HTTP Localmente

Etapa 1: Inicie o servidor:

# Using npx
QUIRE_OAUTH_CLIENT_ID=your-client-id \
QUIRE_OAUTH_CLIENT_SECRET=your-client-secret \
MCP_TRANSPORT=http \
npx quire-mcp

# Or using pnpm (for development)
pnpm dev:http

O servidor exibirá:

[quire-mcp] HTTP server listening on 127.0.0.1:3001
[quire-mcp] OAuth metadata: http://localhost:3001/.well-known/oauth-authorization-server
[quire-mcp] MCP endpoint: http://localhost:3001/mcp

Etapa 2: Configure seu cliente MCP para conectar:

{
  "mcpServers": {
    "quire": {
      "type": "http",
      "url": "http://localhost:3001/mcp"
    }
  }
}

Observação: Nenhuma seção env é necessária na configuração do cliente para o modo HTTP—as credenciais OAuth estão no servidor.

Etapa 3: Quando o cliente MCP conectar, ele irá:

  1. Descobrir os endpoints OAuth via /.well-known/oauth-authorization-server
  2. Redirecionar você para autorizar com o Quire
  3. Trocar tokens e estabelecer uma sessão

Variáveis de Ambiente do Modo HTTP

VariávelObrigatóriaPadrãoDescrição
MCP_TRANSPORTSimstdioDefina como http para ativar o modo HTTP
QUIRE_OAUTH_CLIENT_IDSim-ID do Cliente OAuth do Quire
QUIRE_OAUTH_CLIENT_SECRETSim-Segredo do Cliente OAuth do Quire
MCP_SERVER_HOSTNão127.0.0.1Host para vincular o servidor HTTP
MCP_SERVER_PORTNão3001Porta para o servidor HTTP
MCP_ISSUER_URLNãohttp://localhost:3001URL base para endpoints OAuth
QUIRE_OAUTH_REDIRECT_URINãohttp://localhost:3001/oauth/callbackURL de retorno de chamada OAuth do Quire

Configuração do aplicativo Quire para o modo HTTP: Ao usar o modo HTTP, atualize a URL de redirecionamento do seu aplicativo Quire para: http://localhost:3001/oauth/callback

Modo de Token Manual

Se você tiver um token de acesso obtido previamente (por exemplo, do Postman), pode pular o OAuth completamente:

{
  "mcpServers": {
    "quire": {
      "command": "npx",
      "args": ["-y", "quire-mcp"],
      "env": {
        "QUIRE_ACCESS_TOKEN": "your-access-token"
      }
    }
  }
}

Observação: Tokens obtidos manualmente expirarão eventualmente e não serão renovados automaticamente sem credenciais OAuth.

Referência de Configuração

Todas as Variáveis de Ambiente

VariávelObrigatóriaPadrãoDescrição
QUIRE_OAUTH_CLIENT_IDSim*-ID do Cliente OAuth do Quire
QUIRE_OAUTH_CLIENT_SECRETSim*-Segredo do Cliente OAuth do Quire
QUIRE_ACCESS_TOKENNão-Substituição de token manual (pula o fluxo OAuth)
QUIRE_OAUTH_REDIRECT_URINãohttp://localhost:3000/callbackURL de retorno de chamada OAuth (modo stdio)
QUIRE_TOKEN_STORE_PATHNãoPadrão da plataformaCaminho para o arquivo de cache de token
MCP_TRANSPORTNãostdioModo de transporte: stdio ou http
MCP_SERVER_HOSTNão127.0.0.1Endereço de vinculação do servidor HTTP
MCP_SERVER_PORTNão3001Porta do servidor HTTP
MCP_ISSUER_URLNãohttp://localhost:3001URL do emissor OAuth (modo HTTP)

*Obrigatória a menos que QUIRE_ACCESS_TOKEN esteja definida.

Recursos

Ferramentas

O servidor fornece mais de 60 ferramentas organizadas por categoria:

Autenticação

FerramentaDescrição
quire.whoamiObter o perfil do usuário autenticado atual

Organizações

FerramentaDescrição
quire.listOrganizationsListar todas as organizações acessíveis
quire.getOrganizationObter detalhes da organização por ID ou OID
quire.updateOrganizationAtualizar seguidores da organização

Projetos

FerramentaDescrição
quire.listProjectsListar todos os projetos, opcionalmente filtrados por organização
quire.getProjectObter detalhes do projeto, incluindo contagens de tarefas
quire.updateProjectAtualizar nome, descrição, ícone e seguidores do projeto
quire.exportProjectExportar tarefas do projeto em formato JSON ou CSV

Tarefas

FerramentaDescrição
quire.listTasksListar tarefas em um projeto (nível raiz ou subtarefas)
quire.getTaskObter detalhes da tarefa por projeto+ID ou OID
quire.createTaskCriar uma nova tarefa com prioridade, datas, responsáveis e tags opcionais
quire.updateTaskAtualizar propriedades da tarefa
quire.deleteTaskExcluir uma tarefa e suas subtarefas
quire.searchTasksPesquisar tarefas em um projeto por palavra-chave e filtros
quire.createTaskAfterCriar uma tarefa após uma tarefa especificada
quire.createTaskBeforeCriar uma tarefa antes de uma tarefa especificada
quire.searchFolderTasksPesquisar tarefas dentro de uma pasta
quire.searchOrganizationTasksPesquisar tarefas em toda uma organização

Tags

FerramentaDescrição
quire.listTagsListar todas as tags em um projeto
quire.getTagObter detalhes da tag por OID
quire.createTagCriar uma nova tag com nome e cor
quire.updateTagAtualizar nome ou cor da tag
quire.deleteTagExcluir uma tag

Comentários

FerramentaDescrição
quire.listTaskCommentsListar todos os comentários em uma tarefa
quire.addTaskCommentAdicionar um comentário a uma tarefa
quire.updateCommentAtualizar texto do comentário
quire.deleteCommentExcluir um comentário
quire.listChatCommentsListar todos os comentários em um canal de chat
quire.addChatCommentAdicionar um comentário a um canal de chat

Usuários

FerramentaDescrição
quire.getUserObter detalhes do usuário por ID, OID ou e-mail
quire.listUsersListar todos os usuários acessíveis
quire.listProjectMembersListar todos os membros de um projeto

Status Personalizados

FerramentaDescrição
quire.listStatusesListar status personalizados em um projeto
quire.getStatusObter detalhes do status por valor
quire.createStatusCriar um status de fluxo de trabalho personalizado
quire.updateStatusAtualizar nome ou cor do status
quire.deleteStatusExcluir um status personalizado

Equipes Externas (Parceiros)

FerramentaDescrição
quire.getPartnerObter detalhes da equipe externa
quire.listPartnersListar todas as equipes externas em um projeto

Documentos

FerramentaDescrição
quire.createDocumentCriar um documento em uma organização ou projeto
quire.getDocumentObter conteúdo e metadados do documento
quire.listDocumentsListar todos os documentos
quire.updateDocumentAtualizar nome ou conteúdo do documento
quire.deleteDocumentExcluir um documento

Sublistas

FerramentaDescrição
quire.createSublistCriar uma sublista
quire.getSublistObter detalhes da sublista
quire.listSublistsListar todas as sublistas
quire.updateSublistAtualizar nome ou descrição da sublista
quire.deleteSublistExcluir uma sublista

Canais de Chat

FerramentaDescrição
quire.createChatCriar um canal de chat
quire.getChatObter detalhes do canal de chat
quire.listChatsListar todos os canais de chat
quire.updateChatAtualizar nome, descrição ou membros do chat
quire.deleteChatExcluir um canal de chat

Armazenamento de Chave-Valor

FerramentaDescrição
quire.getStorageValueObter um valor armazenado por chave
quire.listStorageEntriesListar entradas de armazenamento por prefixo
quire.putStorageValueArmazenar um valor
quire.deleteStorageValueExcluir um valor armazenado

Notificações

FerramentaDescrição
quire.sendNotificationEnviar notificação aos usuários

Anexos

FerramentaDescrição
quire.uploadTaskAttachmentEnviar um anexo de arquivo para uma tarefa
quire.uploadCommentAttachmentEnviar um anexo de arquivo para um comentário

Recursos

O servidor expõe dados como recursos MCP:

Recursos Estáticos

URI do RecursoDescrição
quire://user/mePerfil do usuário autenticado atual
quire://organizationsLista de todas as organizações acessíveis
quire://projectsLista de todos os projetos acessíveis

Modelos de Recursos

URI do RecursoDescrição
quire://project/{id}Detalhes e metadados de um projeto específico
quire://project/{projectId}/tasksTarefas raiz em um projeto
quire://project/{projectId}/tagsTags definidas em um projeto
quire://project/{projectId}/statusesStatus personalizados em um projeto

Prompts

O servidor fornece prompts guiados para fluxos de trabalho comuns:

PromptDescrição
quire.create-project-planGerar um plano de tarefas a partir de uma descrição de objetivo
quire.daily-standupGerar um resumo diário de standup
quire.sprint-planningPlanejar uma sprint a partir do backlog
quire.task-breakdownDividir uma tarefa complexa em subtarefas
quire.weekly-summaryGerar um relatório semanal de progresso

Desenvolvimento

Configuração

# Clone the repo
git clone https://github.com/jacob-hartmann/quire-mcp.git
cd quire-mcp

# Use the Node.js version from .nvmrc
# (macOS/Linux nvm): nvm install && nvm use
# (Windows nvm-windows): nvm install 22 && nvm use 22
nvm install
nvm use

# Install dependencies
pnpm install

# Copy .env.example and configure
cp .env.example .env
# Edit .env with your OAuth credentials

Executando Localmente

# Development mode (stdio, auto-reload)
pnpm dev

# Development mode (http, auto-reload)
pnpm dev:http

# Production build
pnpm build

# Production run
pnpm start        # stdio mode
pnpm start:http   # http mode

Depuração

Você pode usar o Inspetor MCP para depurar o servidor:

# Run from source
pnpm inspect

# Run from built output
pnpm inspect:dist

pnpm inspect carrega .env automaticamente via dotenv (veja .env.example).

Se você vir Ignored build scripts: esbuild..., execute pnpm approve-builds e permita esbuild. No CI, instalamos dependências com scripts de ciclo de vida desabilitados (pnpm install --ignore-scripts) e depois reconstruímos explicitamente apenas esbuild para o job de build de produção.

Contribuindo

Contribuições são bem-vindas! Consulte CONTRIBUTING.md para diretrizes sobre como contribuir para este projeto.

Segurança

Consulte SECURITY.md para a política de segurança e relato de vulnerabilidades.

Suporte

Este é um projeto comunitário fornecido "como está" sem suporte garantido. Consulte SUPPORT.md para detalhes.

Licença

MIT © Jacob Hartmann