Skip to content

Política de Integração de Ferramentas MCP

As ferramentas MCP do NENE2 devem expor funcionalidades de aplicação através de fronteiras documentadas, não atalhos ocultos para banco de dados ou sistema de arquivos.

Posição

A integração MCP é uma camada de integração compatível com API.

Direção padrão:

  • Derivar o formato das ferramentas do OpenAPI quando prático
  • Começar com ferramentas de inspeção somente leitura
  • Separar ferramentas de desenvolvimento local das ferramentas de produção
  • Exigir autorização explícita e política de auditoria antes de ferramentas de mutação
  • Evitar acesso direto ao banco de dados a partir de ferramentas MCP por padrão

Fontes das Ferramentas

Fontes recomendadas para definições de ferramentas:

  • Operações OpenAPI de APIs JSON públicas
  • Serviços de aplicação documentados para ferramentas internas que não usam HTTP
  • Comandos de manutenção explícitos para workflows apenas locais

Evite criar comportamentos apenas MCP que não possam ser executados e verificados via fronteiras normais da aplicação.

O primeiro catálogo de ferramentas MCP legível por máquina está em docs/mcp/tools.json.

Contém metadados de ferramentas somente leitura correspondentes às operações OpenAPI entregues. O catálogo é validado por:

bash
docker compose run --rm app composer mcp

composer check inclui esta validação.

Níveis de Segurança

Cada ferramenta MCP deve ser classificada antes da implementação:

  • read: retorna sem modificar o estado da aplicação
  • write: modifica o estado da aplicação
  • admin: modifica configuração, permissões, retenção de dados ou estado operacional
  • destructive: deleta dados ou executa operações irreversíveis

As primeiras ferramentas MCP devem ser ferramentas read.

Ferramentas write, admin e destructive requerem:

  • Comportamento documentado de autenticação e autorização
  • Campos de auditoria/logging
  • Propagação do request id
  • Comportamento de confirmação explícito para ações destrutivas
  • Testes cobrindo falhas e fronteiras de permissões

As fronteiras de chaves de API e tokens são definidas em docs/development/authentication-boundary.md.

Ferramentas de Desenvolvimento Local

Ferramentas MCP apenas locais ajudam agentes a inspecionar a aplicação de desenvolvimento, mas o escopo deve ser claramente limitado.

Operações permitidas para ferramentas locais:

  • Chamar a API HTTP local
  • Ler documentação versionada
  • Executar comandos de validação seguros documentados

Operações proibidas para ferramentas locais:

  • Ler segredos .env
  • Contornar autorização de aplicação de forma que se assemelhe ao comportamento de produção
  • Modificar o banco de dados fora dos comandos de teste ou migração documentados
  • Depender do layout privado de sistema de arquivos do desenvolvedor

Ferramentas de Produção

Ferramentas MCP de produção devem ser projetadas como funcionalidades de produto, não atalhos de debug.

Antes de habilitar uma ferramenta de produção, documente:

  • Proprietário e propósito
  • Credenciais ou escopos necessários
  • Ambientes permitidos
  • Limites de rate ou medidas anti-abuso
  • Campos de auditoria
  • Caminho de rollback ou reparo para mutações que falharam

Alinhamento com OpenAPI

Quando uma ferramenta mapeia para uma operação de API HTTP:

  • Use o summary e schema da operação OpenAPI como ponto de partida
  • Corresponda nomes de parâmetros ao contrato da API
  • Preserve o comportamento de erro Problem Details
  • Inclua request id em logs e metadados retornados quando útil

Se uma ferramenta requer um formato que não corresponde à API atual, atualize primeiro o contrato da API ou documente por que uma fronteira de serviço interna é melhor.

Tipos de Parâmetros de Caminho

Se um parâmetro de caminho OpenAPI é do tipo integer (ex. {year}, {id}), o inputSchema da ferramenta deve refletir esse tipo:

json
"inputSchema": {
  "type": "object",
  "properties": {
    "year": { "type": "integer" }
  },
  "required": ["year"]
}

Clientes LLM devem enviar parâmetros de caminho inteiros como números JSON, não como strings:

json
{"name": "getItemsByYear", "arguments": {"year": 2026}}

Enviar uma string ("2026") será rejeitado pela validação do adaptador se o schema especificar "type": "integer".

Não-objetivos

  • Fornecer ferramentas de banco de dados de produção direta como primeiro milestone MCP.
  • Comportamento de negócio apenas MCP contornando testes HTTP/API.
  • Armazenar credenciais MCP no repositório.
  • Expor ferramentas destrutivas antes que políticas de autenticação, autorização e auditoria existam.

Publicado sob a licença MIT.