Backlog MCP Server
Interaja com a API do Backlog para gerenciar projetos, issues, wikis, repositórios git e mais.
Documentação
Backlog MCP Server
Um servidor Model Context Protocol (MCP) para interagir com a API do Backlog. Este servidor fornece ferramentas para gerenciar projetos, issues, páginas de wiki e muito mais no Backlog por meio de agentes de IA como Claude Desktop / Cline / Cursor, entre outros.
Recursos
- Ferramentas de projeto (criar, ler, atualizar, excluir)
- Rastreamento de issues e comentários (criar, atualizar, excluir, listar)
- Gerenciamento de versões/marcos (criar, ler, atualizar, excluir)
- Suporte a páginas de wiki
- Ferramentas de repositório Git e pull requests
- Ferramentas de notificação
- Seleção de campos para respostas otimizadas
- Limite de tokens para respostas grandes
Primeiros Passos
Requisitos
- Docker
- Uma conta Backlog com acesso à API
- Chave de API da sua conta Backlog
Opção 1: Instalação via Docker
A maneira mais fácil de usar este servidor MCP é por meio das configurações do MCP:
- Abra as configurações do MCP
- Navegue até a seção de configuração do MCP
- Adicione a seguinte configuração:
{
"mcpServers": {
"backlog": {
"command": "docker",
"args": [
"run",
"--pull",
"always",
"-i",
"--rm",
"-e",
"BACKLOG_DOMAIN",
"-e",
"BACKLOG_API_KEY",
"ghcr.io/nulab/backlog-mcp-server"
],
"env": {
"BACKLOG_DOMAIN": "your-domain.backlog.com",
"BACKLOG_API_KEY": "your-api-key"
}
}
}
}
Substitua your-domain.backlog.com pelo seu domínio do Backlog e your-api-key pela sua chave de API do Backlog.
✅ Se você não puder usar --pull always, poderá atualizar manualmente a imagem usando:
docker pull ghcr.io/nulab/backlog-mcp-server:latest
Opção 2: Instalação via npx
Você também pode executar o servidor diretamente usando npx sem clonar o repositório. Esta é uma maneira conveniente de executar o servidor sem uma instalação completa.
- Abra as configurações do MCP
- Navegue até a seção de configuração do MCP
- Adicione a seguinte configuração:
{
"mcpServers": {
"backlog": {
"command": "npx",
"args": ["backlog-mcp-server"],
"env": {
"BACKLOG_DOMAIN": "your-domain.backlog.com",
"BACKLOG_API_KEY": "your-api-key"
}
}
}
}
Substitua your-domain.backlog.com pelo seu domínio do Backlog e your-api-key pela sua chave de API do Backlog.
Opção 3: Configuração Manual (Node.js)
-
Clone e instale:
git clone https://github.com/nulab/backlog-mcp-server.git cd backlog-mcp-server pnpm install pnpm run build -
Crie
.enva partir do modelo e defina as variáveis necessárias:
cp .env.example .env
Defina os seguintes valores em .env:
BACKLOG_DOMAIN=your-domain.backlog.comBACKLOG_API_KEY=your-api-key
- Execute localmente:
pnpm run dev
- Configure seu json para usar como MCP
{
"mcpServers": {
"backlog": {
"command": "node",
"args": ["your-repository-location/build/index.js"],
"env": {
"BACKLOG_DOMAIN": "your-domain.backlog.com",
"BACKLOG_API_KEY": "your-api-key"
}
}
}
}
Transporte HTTP (Streamable HTTP)
Por padrão, o servidor usa stdio. Para executar o transporte MCP Streamable HTTP (JSON-RPC sobre HTTP, mesmas ferramentas do stdio), inicie com --transport http ou defina MCP_TRANSPORT=http.
pnpm run build
MCP_TRANSPORT=http MCP_HTTP_PORT=3333 node build/index.js
- Endpoint:
POST(eGETpara streams iniciados pelo servidor) emhttp://<host>:<port><path>(caminho padrão/mcp). - Protocolo: MCP
2026-07-28. O protocolo não tem estado: não há handshakeinitializenem cabeçalhomcp-session-id. Os clientes enviam seus metadados em_metaem cada solicitação e descobrem capacidades viaserver/discover. O Streamable HTTP também exige o cabeçalhoMcp-Method(eMcp-Nameemtools/call). - Compatibilidade reversa: Clientes em
2025-11-25e versões anteriores ainda são atendidos no mesmo endpoint, sem estado. Como nenhuma sessão é mantida, as operações de sessão de 2025 (GET/DELETEcom ummcp-session-id) respondem405. - Segurança: O bind padrão é
127.0.0.1. Em um bind de loopback simples,HosteOriginsão ambos validados contra o conjunto de localhost (proteção contra rebinding de DNS). Atrás de um proxy reverso, defina--http-allowed-hostspara o hostname público; isso desativa o padrão de localhostOrigin, já que oOriginde um cliente de navegador é seu próprio site e nunca o hostname deste servidor. Adicione--http-allowed-originspara restringir quais origens de clientes podem acessar o servidor. Não exponha a porta HTTP a redes não confiáveis sem autenticação e TLS; isso permite o uso completo da sua chave de API do Backlog por meio das ferramentas MCP.
Variáveis de ambiente (flags de CLI têm precedência quando ambas estão definidas):
| Variável | Descrição |
|---|---|
MCP_TRANSPORT | stdio (padrão) ou http |
MCP_HTTP_HOST | Endereço de bind (padrão 127.0.0.1) |
MCP_HTTP_PORT | Porta (padrão 3333) |
MCP_HTTP_PATH | Caminho da URL (padrão /mcp) |
MCP_HTTP_JSON_RESPONSE | true para preferir respostas JSON em vez de SSE (aplica-se apenas a clientes 2026-07-28) |
MCP_HTTP_ALLOWED_HOSTS | Hostnames Host permitidos separados por vírgula (independentes de porta). Obrigatório ao fazer bind em 0.0.0.0; também é a alternativa para um bind de loopback atrás de um proxy (proteção contra rebinding de DNS) |
MCP_HTTP_ALLOWED_ORIGINS | Hostnames Origin permitidos separados por vírgula para clientes baseados em navegador. Padrão: conjunto de localhost em um bind de loopback simples, e sem verificação de Origin caso contrário |
Autenticação OAuth 2.0 (MCP Remoto)
Ao expor o servidor MCP em uma rede, você pode habilitar a autenticação OAuth 2.0 para que cada usuário autentique com sua própria conta Backlog em vez de compartilhar uma única chave de API.
O servidor implementa o Fluxo de Autorização de Terceiros MCP atuando tanto como servidor de autorização OAuth (para clientes MCP) quanto como cliente OAuth (para o Backlog).
Pré-requisitos
-
Registre um aplicativo OAuth no seu espaço Backlog:
- Vá para seu espaço Backlog → Configurações Pessoais → Registrar Aplicativo
- Defina a URI de Redirecionamento para
<MCP_SERVER_BASE_URL>/callback(ex.:https://mcp.example.com/callback) - Anote o Client ID e o Client Secret
-
Defina as seguintes variáveis de ambiente (além de
BACKLOG_DOMAIN):
| Variável | Descrição |
|---|---|
BACKLOG_OAUTH_CLIENT_ID | Client ID OAuth do seu aplicativo Backlog |
BACKLOG_OAUTH_CLIENT_SECRET | Client Secret OAuth do seu aplicativo Backlog |
MCP_SERVER_BASE_URL | URL pública do seu servidor MCP (ex.: https://mcp.example.com) |
Observação:
BACKLOG_API_KEYnão é necessário quando o OAuth está habilitado — cada usuário autentica com sua própria conta Backlog.
Exemplo
BACKLOG_DOMAIN=your-space.backlog.com \
BACKLOG_OAUTH_CLIENT_ID=your-client-id \
BACKLOG_OAUTH_CLIENT_SECRET=your-client-secret \
MCP_SERVER_BASE_URL=https://mcp.example.com \
node build/index.js --transport http --http-host 0.0.0.0 --http-port 3333 \
--http-allowed-hosts mcp.example.com
--http-allowed-hosts é necessário na prática ao fazer bind em 0.0.0.0: sem ele, não há proteção contra rebinding de DNS, e o servidor registra um aviso na inicialização.
O servidor expõe automaticamente os seguintes endpoints OAuth quando o OAuth está habilitado:
| Endpoint | Descrição |
|---|---|
GET /.well-known/oauth-authorization-server | Metadados do Servidor de Autorização OAuth (RFC 8414) |
GET /.well-known/oauth-protected-resource/mcp | Metadados do Recurso Protegido OAuth (RFC 9728) |
POST /register | Registro Dinâmico de Clientes (RFC 7591) |
GET /authorize | Endpoint de autorização (redireciona para o OAuth do Backlog) |
GET /callback | Callback OAuth do Backlog |
POST /token | Endpoint de token (código de autorização e token de atualização) |
Clientes MCP que suportam a especificação de autorização MCP usarão esses endpoints automaticamente.
POST /register restringe quais URIs de redirecionamento um cliente pode registrar. Uma URI de loopback
(http://localhost, http://127.0.0.1, http://[::1]) é como um aplicativo executado
na máquina do usuário recebe o código de autorização, e é aceita de um
cliente que declare "application_type": "native" — ou, quando o campo estiver
ausente, de um cliente cujas URIs de redirecionamento são todas de loopback. Um cliente que declare
"application_type": "web", ou que misture uma URI https: remota com uma de loopback
sem se declarar, é rejeitado com invalid_client_metadata.
Limitações:
- O modo OAuth atualmente suporta uma única organização Backlog. Não é compatível com a configuração de múltiplas organizações.
- Registros de clientes e tokens são armazenados em memória e serão perdidos ao reiniciar o servidor.
Configuração de Ferramentas
Você pode habilitar ou desabilitar seletivamente conjuntos de ferramentas específicos usando o flag de linha de comando --enable-toolsets ou a variável de ambiente ENABLE_TOOLSETS. Isso permite melhor controle sobre quais ferramentas estão disponíveis para o agente de IA e ajuda a reduzir o tamanho do contexto.
Conjuntos de Ferramentas Disponíveis
Os seguintes conjuntos de ferramentas estão disponíveis (habilitados por padrão quando "all" é usado):
| Conjunto de Ferramentas | Descrição |
|---|---|
space | Ferramentas para gerenciar configurações do espaço Backlog e informações gerais |
project | Ferramentas para gerenciar projetos, categorias, campos personalizados e tipos de issue |
issue | Ferramentas para gerenciar issues e seus comentários, versões e marcos |
wiki | Ferramentas para gerenciar páginas de wiki |
git | Ferramentas para gerenciar repositórios Git e pull requests |
notifications | Ferramentas para gerenciar notificações de usuários |
document | Ferramentas para visualizar documentos e árvores de documentos |
Especificando Conjuntos de Ferramentas
Você pode controlar a ativação dos conjuntos de ferramentas das seguintes maneiras:
Usando via CLI:
--enable-toolsets space,project,issue
Ou via variável de ambiente:
ENABLE_TOOLSETS="space,project,issue"
Se all for especificado, todos os conjuntos de ferramentas disponíveis serão habilitados. Este também é o comportamento padrão.
Usar conjuntos de ferramentas seletivos pode ser útil se a lista de ferramentas for grande demais para seu agente de IA ou se certas ferramentas estiverem causando problemas de desempenho. Nesses casos, desabilitar conjuntos de ferramentas não utilizados pode melhorar a estabilidade.
🧩 Dica: O conjunto de ferramentas
projecté altamente recomendado, pois muitas outras ferramentas dependem dos dados do projeto como ponto de entrada.
Ferramentas Disponíveis
Conjunto de Ferramentas: space
Ferramentas para gerenciar configurações do espaço Backlog e informações gerais.
get_space: Retorna informações sobre o espaço Backlog.get_users: Retorna a lista de usuários no espaço Backlog.get_myself: Retorna informações sobre o usuário autenticado.
Conjunto de Ferramentas: project
Ferramentas para gerenciar projetos, categorias, campos personalizados e tipos de issue.
get_project_list: Retorna a lista de projetos.add_project: Cria um novo projeto.get_project: Retorna informações sobre um projeto específico.get_project_users: Retorna a lista de usuários em um projeto específico.update_project: Atualiza um projeto existente.
Conjunto de Ferramentas: issue
Ferramentas para gerenciar issues, seus comentários e itens relacionados, como prioridades, categorias, campos personalizados, tipos de issue, resoluções e listas de acompanhamento.
get_issue: Retorna informações sobre uma issue específica.get_issue_attachment: Baixa um anexo de uma issue. Retorna como imagem ou conteúdo de recurso incorporado, ou como base64 comformat: "base64".get_issues: Retorna uma lista de issues.count_issues: Retorna a contagem de issues.add_issue: Cria uma nova issue no projeto especificado.update_issue: Atualiza uma issue existente.delete_issue: Exclui uma issue.get_issue_comments: Retorna uma lista de comentários de uma issue.add_issue_comment: Adiciona um comentário a uma issue.update_issue_comment: Atualiza um comentário em uma issue.get_related_issues: Retorna uma lista de issues relacionadas a uma issue específica.add_related_issue: Relaciona uma issue a outra issue.remove_related_issue: Remove a relação entre uma issue e uma issue relacionada.get_priorities: Retorna uma lista de prioridades.get_categories: Retorna uma lista de categorias de um projeto.add_category: Cria uma nova categoria para um projeto.get_custom_fields: Retorna uma lista de campos personalizados de um projeto.get_issue_types: Retorna uma lista de tipos de issue de um projeto.get_resolutions: Retorna uma lista de resoluções de issue.get_watching_list_items: Retorna uma lista de itens de acompanhamento de um usuário.get_watching_list_count: Retorna a contagem de itens de acompanhamento de um usuário.add_watching: Adiciona um novo acompanhamento a uma issue.update_watching: Atualiza uma nota de acompanhamento existente.delete_watching: Exclui um acompanhamento de uma issue.mark_watching_as_read: Marca um acompanhamento como lido.get_version_milestone_list: Retorna uma lista de marcos de versão de um projeto.add_version_milestone: Cria um novo marco de versão para um projeto.update_version_milestone: Atualiza um marco de versão existente.delete_version_milestone: Exclui um marco de versão.
Conjunto de ferramentas: wiki
Ferramentas para gerenciar páginas wiki.
get_wiki_pages: Retorna uma lista de páginas Wiki.get_wikis_count: Retorna a contagem de páginas wiki em um projeto.get_wiki: Retorna informações sobre uma página wiki específica.add_wiki: Cria uma nova página wiki.
Conjunto de ferramentas: git
Ferramentas para gerenciar repositórios Git e pull requests.
get_git_repositories: Retorna uma lista de repositórios Git de um projeto.get_git_repository: Retorna informações sobre um repositório Git específico.get_pull_requests: Retorna uma lista de pull requests de um repositório.get_pull_requests_count: Retorna a contagem de pull requests de um repositório.get_pull_request: Retorna informações sobre um pull request específico.add_pull_request: Cria um novo pull request.update_pull_request: Atualiza um pull request existente.get_pull_request_comments: Retorna uma lista de comentários de um pull request.add_pull_request_comment: Adiciona um comentário a um pull request.update_pull_request_comment: Atualiza um comentário em um pull request.
Conjunto de ferramentas: notifications
Ferramentas para gerenciar notificações de usuário.
get_notifications: Retorna uma lista de notificações.get_notifications_count: Retorna a contagem de notificações.reset_unread_notification_count: Redefine a contagem de notificações não lidas.mark_notification_as_read: Marca uma notificação como lida.
Conjunto de ferramentas: document
Ferramentas para gerenciar documentos e árvores de documentos em projetos Backlog.
get_document_tree: Retorna a árvore hierárquica de documentos de um projeto, incluindo pastas e neget_documents: Retorna uma lista plana de documentos em um projeto ou pasta.get_document: Retorna informações detalhadas sobre um documento específico, incluindo metadados, conteúdo e
Exemplos de uso
Depois que o servidor MCP estiver configurado em agentes de IA, você pode usar as ferramentas diretamente em suas conversas. Aqui estão alguns exemplos:
- Listando Projetos
Could you list all my Backlog projects?
- Criando uma Nova Issue
Create a new bug issue in the PROJECT-KEY project with high priority titled "Fix login page error"
- Obtendo Detalhes do Projeto
Show me the details of the PROJECT-KEY project
- Trabalhando com Repositórios Git
List all Git repositories in the PROJECT-KEY project
- Gerenciando Pull Requests
Show me all open pull requests in the repository "repo-name" of PROJECT-KEY project
Create a new pull request from branch "feature/new-feature" to "main" in the repository "repo-name" of PROJECT-KEY project
- Itens de Acompanhamento
Show me all items I'm watching
Substituindo Descrições de Ferramentas
Você pode substituir as descrições das ferramentas criando um arquivo .backlog-mcp-serverrc.json no seu diretório pessoal.
Quase todas essas strings são as descrições de ferramentas e parâmetros que o modelo lê ao decidir qual ferramenta chamar e como preencher seus argumentos. Portanto, substituí-las é uma forma de orientar a seleção de ferramentas — por exemplo, para diferenciar duas ferramentas semelhantes ou adicionar uma regra que sua equipe segue — em vez de uma forma de alterar o idioma das respostas que você obtém. O modelo responde no idioma em que você perguntar, independentemente do idioma em que essas descrições estão escritas.
Um pequeno número de chaves são mensagens de erro de validação (por exemplo, PROJECT_ID_OR_KEY_REQUIRED). Elas são retornadas no resultado da ferramenta quando uma chamada é rejeitada, então podem chegar até você por meio da resposta do modelo.
O arquivo deve conter um objeto JSON com os nomes das ferramentas como chaves e as novas descrições como valores.
Por exemplo:
{
"TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "An alternative description",
"TOOL_CREATE_PROJECT_DESCRIPTION": "Create a new project in Backlog"
}
Quando o servidor inicia, ele determina a descrição final de cada ferramenta com base na seguinte prioridade:
- Variáveis de ambiente (por exemplo,
BACKLOG_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION) - Entradas em
.backlog-mcp-serverrc.json- Formatos de arquivo de configuração suportados: .json, .yaml, .yml - Padrões integrados
Valores vazios ou não-string são ignorados em todos os níveis, e o padrão integrado é usado em seu lugar.
Configuração de exemplo:
{
"mcpServers": {
"backlog": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BACKLOG_DOMAIN",
"-e",
"BACKLOG_API_KEY",
"-v",
"/yourcurrentdir/.backlog-mcp-serverrc.json:/root/.backlog-mcp-serverrc.json:ro",
"ghcr.io/nulab/backlog-mcp-server"
],
"env": {
"BACKLOG_DOMAIN": "your-domain.backlog.com",
"BACKLOG_API_KEY": "your-api-key"
}
}
}
}
Exportando Descrições Atuais
Você pode exportar as descrições atuais (incluindo quaisquer substituições) executando o binário com a flag --export-descriptions. Esta flag era anteriormente chamada de --export-translations; o nome antigo ainda funciona, mas imprime um aviso de depreciação e será removido em uma versão futura.
Isso imprime cada chave que é resolvida enquanto a lista de ferramentas é construída, com seu valor atual, incluindo quaisquer personalizações que você tenha feito. Isso cobre todas as descrições de ferramentas e parâmetros, e é a forma prática de descobrir os nomes das chaves.
Isso não cobre as mensagens de erro de validação, porque essas chaves só são resolvidas quando uma chamada é realmente rejeitada. Elas ainda podem ser substituídas pelas mesmas regras; você só precisa lê-las do código-fonte.
Exemplo:
docker run -i --rm ghcr.io/nulab/backlog-mcp-server node build/index.js --export-descriptions
ou
npx github:nulab/backlog-mcp-server --export-descriptions
Usando Variáveis de Ambiente
Alternativamente, você pode substituir as descrições das ferramentas por meio de variáveis de ambiente.
Os nomes das variáveis de ambiente são baseados nas chaves das ferramentas, prefixados com BACKLOGMCP e escritos em maiúsculas.
Exemplo: Para substituir o TOOL_ADD_ISSUE_COMMENT_DESCRIPTION:
{
"mcpServers": {
"backlog": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "BACKLOG_DOMAIN",
"-e", "BACKLOG_API_KEY",
"-e", "BACKLOG_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION"
"ghcr.io/nulab/backlog-mcp-server"
],
"env": {
"BACKLOG_DOMAIN": "your-domain.backlog.com",
"BACKLOG_API_KEY": "your-api-key",
"BACKLOG_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "An alternative description"
}
}
}
}
O servidor carrega o arquivo de configuração de forma síncrona na inicialização.
As variáveis de ambiente sempre têm precedência sobre o arquivo de configuração.
Recursos Avançados
Prefixo de Nome de Ferramenta
Adicione um prefixo aos nomes das ferramentas com:
--prefix backlog_
ou por meio de variável de ambiente:
PREFIX="backlog_"
Isso é especialmente útil se você estiver usando vários servidores MCP ou ferramentas no mesmo ambiente e quiser evitar colisões de nomes. Por exemplo, get_project pode se tornar backlog_get_project para distingui-lo de ferramentas com nomes semelhantes fornecidas por outros serviços.
Otimização de Resposta e Limites de Token
Seleção de Campos
--optimize-response
Ou variável de ambiente:
OPTIMIZE_RESPONSE=1
Ferramentas que retornam uma lista aceitam então um parâmetro opcional fields: uma lista de
nomes de campos de nível superior do resultado da própria ferramenta, publicada como um enum para que um nome
que a ferramenta não possui seja rejeitado em vez de ignorado. Ferramentas que retornam um único
registro não o recebem — o parâmetro custa esquema em cada sessão, e um registro
quase não tem nada para reduzir.
get_project(projectIdOrKey: "PROJECT-KEY", fields: ["name", "key", "description"])
Omitir fields retorna o resultado completo. A seleção tem um nível de profundidade: nomear um
campo de objeto ou array retorna-o por completo.
Benefícios:
- Reduzir o tamanho da resposta solicitando apenas os campos necessários
- Focar em pontos de dados específicos
- Melhorar o desempenho para respostas grandes
Limitação de Token
Respostas grandes são automaticamente limitadas para evitar exceder os limites de token:
- Limite padrão: 50.000 tokens
- Configurável por meio da variável de ambiente
MAX_TOKENS - Respostas que excedem o limite são truncadas com uma mensagem
Você pode alterar isso usando:
MAX_TOKENS=10000
Se uma resposta exceder o limite, ela será truncada com um aviso.
Nota: Esta é uma mitigação de melhor esforço, não uma garantia de aplicação.
Registro de Logs
O servidor registra logs em stderr (o stdout carrega o fluxo JSON-RPC no transporte stdio).
| Variável | Descrição |
|---|---|
LOG_LEVEL | fatal, error, warn, info, debug, trace ou silent. O padrão é error quando NODE_ENV é production — que também é o padrão quando NODE_ENV não está definido — e debug caso contrário. Um valor não reconhecido é relatado e o padrão é usado. |
NODE_ENV ainda seleciona o formato de saída: qualquer valor diferente de production alterna para saída pino-pretty legível por humanos quando esse pacote está disponível. Use LOG_LEVEL, não NODE_ENV, para alterar quanto é registrado, para que uma implantação mantenha JSON estruturado:
pino-pretty é uma dependência de desenvolvimento, portanto nem o pacote npm publicado nem a imagem de contêiner carregam uma cópia. Nesses casos, os logs são JSON estruturado, independentemente do que NODE_ENV diz, e LOG_LEVEL é a única configuração que altera a saída.
LOG_LEVEL=info node build/index.js --transport http
Exemplo Completo de Configuração Personalizada
Esta seção demonstra configuração avançada usando múltiplas variáveis de ambiente. Esses são recursos experimentais e podem não ser suportados em todos os clientes MCP. Isso não faz parte da especificação padrão do MCP e deve ser usado com cautela.
{
"mcpServers": {
"backlog": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"BACKLOG_DOMAIN",
"-e",
"BACKLOG_API_KEY",
"-e",
"MAX_TOKENS",
"-e",
"OPTIMIZE_RESPONSE",
"-e",
"PREFIX",
"-e",
"ENABLE_TOOLSETS",
"ghcr.io/nulab/backlog-mcp-server"
],
"env": {
"BACKLOG_DOMAIN": "your-domain.backlog.com",
"BACKLOG_API_KEY": "your-api-key",
"MAX_TOKENS": "10000",
"OPTIMIZE_RESPONSE": "1",
"PREFIX": "backlog_",
"ENABLE_TOOLSETS": "space,project,issue"
}
}
}
}
Desenvolvimento
Executando Testes
pnpm test
Adicionando Novas Ferramentas
- Crie um novo arquivo em
src/tools/seguindo o padrão das ferramentas existentes - Crie um arquivo de teste correspondente
- Adicione a nova ferramenta a
src/tools/tools.ts - Compile e teste suas alterações
Opções de Linha de Comando
O servidor suporta várias opções de linha de comando:
--transport stdio|http: Transporte MCP (padrão: stdio). Usehttppara Streamable HTTP.--http-host,--http-port,--http-path: Endereço de bind HTTP, porta e caminho (padrões:127.0.0.1,3333,/mcp).--http-json-response: Prefira respostas JSON em vez de SSE. Aplica-se apenas a clientes2026-07-28; o caminho2025-11-25compatível com versões anteriores é servido com a modelagem de resposta padrão do SDK.--http-allowed-hosts: Lista de hostnamesHostpermitidos separados por vírgula (independente de porta). Necessário ao fazer bind em todas as interfaces, ou em um bind de loopback atrás de um proxy reverso.--http-allowed-origins: Lista de hostnamesOriginpermitidos separados por vírgula para clientes baseados em navegador. O padrão é o conjunto localhost em um bind de loopback simples, e nenhuma verificação deOrigincaso contrário.--export-descriptions: Exporta as chaves e valores de descrição resolvidos ao construir a lista de ferramentas. Anteriormente chamado de--export-translations; essa grafia ainda funciona como alias obsoleto e será removida em uma versão futura.--optimize-response: Adiciona um parâmetrofieldsa cada ferramenta para selecionar quais campos de resultado retornar.--max-tokens=NUMBER: Define o limite máximo de tokens para respostas.--prefix=STRING: Prefixo de string opcional para adicionar a todos os nomes de ferramentas (padrão: "").--enable-toolsets <toolsets...>: Especifica quais conjuntos de ferramentas habilitar (separados por vírgula ou múltiplos argumentos). O padrão é "all". Exemplo:--enable-toolsets space,projectou--enable-toolsets issue --enable-toolsets gitConjuntos de ferramentas disponíveis:space,project,issue,wiki,git,notifications.
Exemplo:
node build/index.js --optimize-response --max-tokens=100000 --prefix="backlog_" --enable-toolsets space,issue
Exemplo HTTP:
node build/index.js --transport http --http-port 3333 --http-path /mcp
Suporte a Múltiplas Organizações
Este servidor pode ser configurado para acessar múltiplas organizações do Backlog a partir de uma única instância do servidor MCP.
Configuração
Configure um par de variáveis de ambiente por organização e defina uma organização padrão:
BACKLOG_DEFAULT_ORG=COMPANY_A
BACKLOG_ORG_COMPANY_A_DOMAIN=company-a.backlog.com
BACKLOG_ORG_COMPANY_A_API_KEY=your-company-a-api-key
BACKLOG_ORG_COMPANY_B_DOMAIN=company-b.backlog.com
BACKLOG_ORG_COMPANY_B_API_KEY=your-company-b-api-key
Isso funciona tanto se as variáveis vierem de um .env local, do ambiente do seu shell ou de um bloco de configuração env do cliente MCP.
Exemplo de configuração MCP:
{
"env": {
"BACKLOG_DEFAULT_ORG": "COMPANY_A",
"BACKLOG_ORG_COMPANY_A_DOMAIN": "company-a.backlog.com",
"BACKLOG_ORG_COMPANY_A_API_KEY": "your-company-a-api-key",
"BACKLOG_ORG_COMPANY_B_DOMAIN": "company-b.backlog.com",
"BACKLOG_ORG_COMPANY_B_API_KEY": "your-company-b-api-key"
}
}
Se nenhuma variável de ambiente de múltiplas organizações for definida, o servidor volta à configuração existente de organização única:
BACKLOG_DOMAIN=your-domain.backlog.com
BACKLOG_API_KEY=your-api-key
Uso das Ferramentas
Quando as variáveis de ambiente de múltiplas organizações estão configuradas, todas as ferramentas normais aceitam um campo de entrada opcional organization. Quando fornecido, a chamada da ferramenta é roteada para essa organização do Backlog.
No modo de organização única, o campo não é publicado, pois haveria apenas uma organização para rotear. Omiti-lo mantém cerca de 8 KB do esquema de ferramentas fora de cada resposta tools/list.
Exemplos:
{
"organization": "COMPANY_B",
"projectKey": "PROJECT"
}
Se organization for omitido:
- a organização nomeada por
BACKLOG_DEFAULT_ORGé usada - se as variáveis de ambiente de múltiplas organizações estiverem presentes e
BACKLOG_DEFAULT_ORGestiver ausente, o servidor falha na inicialização
Descoberta de Organizações
No modo de múltiplas organizações, o servidor fornece uma ferramenta list_organizations que retorna os nomes das organizações configuradas, seus domínios e qual é a padrão. Ela não é registrada no modo de organização única.
Exemplo de resposta:
[
{
"name": "COMPANY_A",
"domain": "company-a.backlog.com",
"isDefault": true
},
{
"name": "COMPANY_B",
"domain": "company-b.backlog.com",
"isDefault": false
}
]
Notas
- Para o modo de múltiplas organizações, cada organização deve definir tanto
BACKLOG_ORG_<NAME>_DOMAINquantoBACKLOG_ORG_<NAME>_API_KEY. - A parte
<NAME>é o nome da organização exposto por meio da entrada da ferramentaorganizationelist_organizations.
Licença
Este projeto está licenciado sob a Licença MIT.
Por favor, observe: Esta ferramenta é fornecida sob a Licença MIT sem qualquer garantia ou suporte oficial.
Use por sua conta e risco após revisar o conteúdo e determinar sua adequação às suas necessidades.
Se encontrar algum problema, reporte-o por meio das Issues do GitHub.