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
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
- Node.js v22 ou superior
- Uma conta Quire
- Um aplicativo OAuth do Quire (veja Criar um aplicativo OAuth do Quire)
Etapa 1: Criar um aplicativo OAuth do Quire
- Acesse Gerenciamento de aplicativos Quire
- Clique em Criar novo aplicativo
- Defina a URL de redirecionamento para:
http://localhost:3000/callback - Escolha os escopos de permissão necessários
- 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á:
- Imprimir uma URL de autorização no console
- Aguardar você abrir essa URL no navegador
- Após você conceder acesso, o Quire redireciona para localhost
- 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:
- O cliente MCP inicia
npx quire-mcpcom variáveis de ambiente - Na primeira chamada de ferramenta, se não houver token em cache, o servidor imprime uma URL OAuth em stderr
- O usuário abre a URL no navegador e autoriza
- O Quire redireciona para
localhost:3000/callbackonde o servidor captura o token - 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á:
- Descobrir os endpoints OAuth via
/.well-known/oauth-authorization-server - Redirecionar você para autorizar com o Quire
- Trocar tokens e estabelecer uma sessão
Variáveis de Ambiente do Modo HTTP
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
MCP_TRANSPORT | Sim | stdio | Defina como http para ativar o modo HTTP |
QUIRE_OAUTH_CLIENT_ID | Sim | - | ID do Cliente OAuth do Quire |
QUIRE_OAUTH_CLIENT_SECRET | Sim | - | Segredo do Cliente OAuth do Quire |
MCP_SERVER_HOST | Não | 127.0.0.1 | Host para vincular o servidor HTTP |
MCP_SERVER_PORT | Não | 3001 | Porta para o servidor HTTP |
MCP_ISSUER_URL | Não | http://localhost:3001 | URL base para endpoints OAuth |
QUIRE_OAUTH_REDIRECT_URI | Não | http://localhost:3001/oauth/callback | URL 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ável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
QUIRE_OAUTH_CLIENT_ID | Sim* | - | ID do Cliente OAuth do Quire |
QUIRE_OAUTH_CLIENT_SECRET | Sim* | - | Segredo do Cliente OAuth do Quire |
QUIRE_ACCESS_TOKEN | Não | - | Substituição de token manual (pula o fluxo OAuth) |
QUIRE_OAUTH_REDIRECT_URI | Não | http://localhost:3000/callback | URL de retorno de chamada OAuth (modo stdio) |
QUIRE_TOKEN_STORE_PATH | Não | Padrão da plataforma | Caminho para o arquivo de cache de token |
MCP_TRANSPORT | Não | stdio | Modo de transporte: stdio ou http |
MCP_SERVER_HOST | Não | 127.0.0.1 | Endereço de vinculação do servidor HTTP |
MCP_SERVER_PORT | Não | 3001 | Porta do servidor HTTP |
MCP_ISSUER_URL | Não | http://localhost:3001 | URL 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
| Ferramenta | Descrição |
|---|---|
quire.whoami | Obter o perfil do usuário autenticado atual |
Organizações
| Ferramenta | Descrição |
|---|---|
quire.listOrganizations | Listar todas as organizações acessíveis |
quire.getOrganization | Obter detalhes da organização por ID ou OID |
quire.updateOrganization | Atualizar seguidores da organização |
Projetos
| Ferramenta | Descrição |
|---|---|
quire.listProjects | Listar todos os projetos, opcionalmente filtrados por organização |
quire.getProject | Obter detalhes do projeto, incluindo contagens de tarefas |
quire.updateProject | Atualizar nome, descrição, ícone e seguidores do projeto |
quire.exportProject | Exportar tarefas do projeto em formato JSON ou CSV |
Tarefas
| Ferramenta | Descrição |
|---|---|
quire.listTasks | Listar tarefas em um projeto (nível raiz ou subtarefas) |
quire.getTask | Obter detalhes da tarefa por projeto+ID ou OID |
quire.createTask | Criar uma nova tarefa com prioridade, datas, responsáveis e tags opcionais |
quire.updateTask | Atualizar propriedades da tarefa |
quire.deleteTask | Excluir uma tarefa e suas subtarefas |
quire.searchTasks | Pesquisar tarefas em um projeto por palavra-chave e filtros |
quire.createTaskAfter | Criar uma tarefa após uma tarefa especificada |
quire.createTaskBefore | Criar uma tarefa antes de uma tarefa especificada |
quire.searchFolderTasks | Pesquisar tarefas dentro de uma pasta |
quire.searchOrganizationTasks | Pesquisar tarefas em toda uma organização |
Tags
| Ferramenta | Descrição |
|---|---|
quire.listTags | Listar todas as tags em um projeto |
quire.getTag | Obter detalhes da tag por OID |
quire.createTag | Criar uma nova tag com nome e cor |
quire.updateTag | Atualizar nome ou cor da tag |
quire.deleteTag | Excluir uma tag |
Comentários
| Ferramenta | Descrição |
|---|---|
quire.listTaskComments | Listar todos os comentários em uma tarefa |
quire.addTaskComment | Adicionar um comentário a uma tarefa |
quire.updateComment | Atualizar texto do comentário |
quire.deleteComment | Excluir um comentário |
quire.listChatComments | Listar todos os comentários em um canal de chat |
quire.addChatComment | Adicionar um comentário a um canal de chat |
Usuários
| Ferramenta | Descrição |
|---|---|
quire.getUser | Obter detalhes do usuário por ID, OID ou e-mail |
quire.listUsers | Listar todos os usuários acessíveis |
quire.listProjectMembers | Listar todos os membros de um projeto |
Status Personalizados
| Ferramenta | Descrição |
|---|---|
quire.listStatuses | Listar status personalizados em um projeto |
quire.getStatus | Obter detalhes do status por valor |
quire.createStatus | Criar um status de fluxo de trabalho personalizado |
quire.updateStatus | Atualizar nome ou cor do status |
quire.deleteStatus | Excluir um status personalizado |
Equipes Externas (Parceiros)
| Ferramenta | Descrição |
|---|---|
quire.getPartner | Obter detalhes da equipe externa |
quire.listPartners | Listar todas as equipes externas em um projeto |
Documentos
| Ferramenta | Descrição |
|---|---|
quire.createDocument | Criar um documento em uma organização ou projeto |
quire.getDocument | Obter conteúdo e metadados do documento |
quire.listDocuments | Listar todos os documentos |
quire.updateDocument | Atualizar nome ou conteúdo do documento |
quire.deleteDocument | Excluir um documento |
Sublistas
| Ferramenta | Descrição |
|---|---|
quire.createSublist | Criar uma sublista |
quire.getSublist | Obter detalhes da sublista |
quire.listSublists | Listar todas as sublistas |
quire.updateSublist | Atualizar nome ou descrição da sublista |
quire.deleteSublist | Excluir uma sublista |
Canais de Chat
| Ferramenta | Descrição |
|---|---|
quire.createChat | Criar um canal de chat |
quire.getChat | Obter detalhes do canal de chat |
quire.listChats | Listar todos os canais de chat |
quire.updateChat | Atualizar nome, descrição ou membros do chat |
quire.deleteChat | Excluir um canal de chat |
Armazenamento de Chave-Valor
| Ferramenta | Descrição |
|---|---|
quire.getStorageValue | Obter um valor armazenado por chave |
quire.listStorageEntries | Listar entradas de armazenamento por prefixo |
quire.putStorageValue | Armazenar um valor |
quire.deleteStorageValue | Excluir um valor armazenado |
Notificações
| Ferramenta | Descrição |
|---|---|
quire.sendNotification | Enviar notificação aos usuários |
Anexos
| Ferramenta | Descrição |
|---|---|
quire.uploadTaskAttachment | Enviar um anexo de arquivo para uma tarefa |
quire.uploadCommentAttachment | Enviar um anexo de arquivo para um comentário |
Recursos
O servidor expõe dados como recursos MCP:
Recursos Estáticos
| URI do Recurso | Descrição |
|---|---|
quire://user/me | Perfil do usuário autenticado atual |
quire://organizations | Lista de todas as organizações acessíveis |
quire://projects | Lista de todos os projetos acessíveis |
Modelos de Recursos
| URI do Recurso | Descrição |
|---|---|
quire://project/{id} | Detalhes e metadados de um projeto específico |
quire://project/{projectId}/tasks | Tarefas raiz em um projeto |
quire://project/{projectId}/tags | Tags definidas em um projeto |
quire://project/{projectId}/statuses | Status personalizados em um projeto |
Prompts
O servidor fornece prompts guiados para fluxos de trabalho comuns:
| Prompt | Descrição |
|---|---|
quire.create-project-plan | Gerar um plano de tarefas a partir de uma descrição de objetivo |
quire.daily-standup | Gerar um resumo diário de standup |
quire.sprint-planning | Planejar uma sprint a partir do backlog |
quire.task-breakdown | Dividir uma tarefa complexa em subtarefas |
quire.weekly-summary | Gerar 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