NotaMCP

Issue Brazilian service invoices (NFS-e Nacional) from your AI, with preview and confirmation.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
76%
Integridad del esquema
89%
Calidad de los nombres
92%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (4)

  • LOWTool 'consultar_nota' description lacks action verben consultar_nota
  • LOWTool 'listar_notas' description lacks action verben listar_notas
  • LOWTool 'salvar_tomador' description lacks action verben salvar_tomador
  • LOWTool 'saldo' description lacks action verben saldo

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~2,016Tokens (definiciones de herramientas)
~1.1 KBTamaño de respuesta típico
Impacto moderado en la atención (1.57% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "notamcp": {
      "url": "https://notamcp.com.br/mcp"
    }
  }
}

Puntos de conexión remotos

https://notamcp.com.br/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (10)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
⚪emitir_nota(tomador_id, configuracao_id, tomador_doc, tomador_razao, tomador_tipo, ...)

Prepara uma NFS-e e devolve a PRÉVIA + confirmacao_token. NÃO emite nada. Mostre a prévia ao usuário e chame confirmar_emissao só depois do OK explícito dele. Tomador: informe tomador_id (salvo) OU tomador_doc + tomador_razao.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "tomador_id": {
      "type": "string",
      "description": "Id de um tomador salvo (listar_tomadores)."
    },
    "configuracao_id": {
      "type": "string",
      "description": "Id de uma combinação devolvida por listar_configuracoes."
    },
    "tomador_doc": {
      "type": "string",
      "description": "CNPJ (14 dígitos) ou CPF (11) do tomador."
    },
    "tomador_razao": {
      "type": "string",
      "description": "Razão social ou nome do tomador."
    },
    "tomador_tipo": {
      "type": "string",
      "enum": [
        "",
        "exterior"
      ],
      "description": "Use \"exterior\" para tomador estrangeiro."
    },
    "tomador_pais": {
      "type": "string",
      "description": "País ISO2 do tomador estrangeiro (ex.: \"SG\")."
    },
    "valor": {
      "type": "string",
      "description": "Valor do serviço em reais, ex.: \"1250,00\"."
    },
    "competencia": {
      "type": "string",
      "description": "Mês de referência YYYY-MM. Vazio = mês atual."
    },
    "discriminacao": {
      "type": "string",
      "description": "Descrição do serviço, como sai impressa na nota."
    },
    "configuracao": {
      "type": "object",
      "description": "Configuração fiscal só desta nota. Campos omitidos herdam o cadastro/configuracao_id. Nunca invente códigos fiscais.",
      "properties": {
        "codigo_servico": {
          "type": "string",
          "description": "Item da LC 116, ex.: 17.06 ou 17.06.01. Não é CNAE."
        },
        "codigo_cnae": {
          "type": "string",
          "description": "CNAE do serviço, com 7 dígitos."
        },
        "codigo_nbs": {
          "type": "string",
          "description": "NBS, se aplicável."
        },
        "ctrib_mun": {
          "type": "string",
          "description": "Código de tributação definido pela prefeitura; vazio quando não houver."
        },
        "aliquota_simples": {
          "type": "string",
          "description": "Percentual efetivo do Simples."
        },
        "calcular_iss": {
          "type": "boolean"
        },
        "aliquota_iss": {
          "type": "string",
          "description": "Percentual do ISS quando destacado."
        },
        "trib_federal": {
          "type": "string",
          "description": "Tributos federais aproximados (%)."
        },
        "trib_municipal": {
          "type": "string",
          "description": "Tributos municipais aproximados (%)."
        }
      }
    }
  },
  "required": [
    "valor",
    "discriminacao"
  ]
}
🟢listar_configuracoes(limite)

Últimas combinações realmente usadas de serviço, CNAE, NBS e tributação. Use configuracao_id em emitir_nota. Se houver ambiguidade, pergunte ao usuário — não escolha nem invente código fiscal.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limite": {
      "type": "integer",
      "description": "Máximo de combinações (1–20, padrão 8)."
    }
  }
}
🔴confirmar_emissao(confirmacao_token)

Emite DE VERDADE a nota da prévia. Chame apenas depois que o usuário aprovou a prévia nesta conversa. Idempotente: o mesmo token nunca emite duas vezes. Autorizada, devolve danfse_url (PDF) e xml_url — links para o usuário abrir, que você não consegue baixar.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "confirmacao_token": {
      "type": "string",
      "description": "Token devolvido por emitir_nota."
    }
  },
  "required": [
    "confirmacao_token"
  ]
}
🟢consultar_nota(nota_id)

Situação de uma nota desta conta (status, número, chave de acesso, erro).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "nota_id": {
      "type": "integer",
      "description": "Id da nota (veio da emissão ou de listar_notas)."
    }
  },
  "required": [
    "nota_id"
  ]
}
🟢listar_notas(status, competencia, limite)

Histórico de notas da conta, com filtros opcionais.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "emitida",
        "rejeitada",
        "pendente",
        "cancelada",
        "erro"
      ],
      "description": "Filtro por status."
    },
    "competencia": {
      "type": "string",
      "description": "Filtro YYYY-MM."
    },
    "limite": {
      "type": "integer",
      "description": "Máx. de notas (1–100, padrão 20)."
    }
  }
}
🔴cancelar_nota(nota_id, motivo, codigo_motivo, confirmar)

Cancela uma NFS-e autorizada na SEFIN. Exige confirmar=true — peça confirmação explícita ao usuário antes. O crédito da emissão NÃO volta (a nota existiu); o cancelamento é grátis.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "nota_id": {
      "type": "integer"
    },
    "motivo": {
      "type": "string",
      "description": "Motivo em texto (vai para a SEFIN)."
    },
    "codigo_motivo": {
      "type": "integer",
      "enum": [
        1,
        2,
        4
      ],
      "description": "1=erro na emissão · 2=serviço não prestado · 4=duplicidade."
    },
    "confirmar": {
      "type": "boolean",
      "description": "Precisa ser true — confirmação do usuário nesta conversa."
    }
  },
  "required": [
    "nota_id",
    "motivo",
    "confirmar"
  ]
}
🟢listar_tomadores(busca)

Tomadores salvos desta conta (use o id em emitir_nota). Passe `busca` com o NOME que o usuário falou para achar o tomador sem precisar do CNPJ — ignora acento, caixa e pontuação. Se voltar mais de um, pergunte qual antes de emitir.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "busca": {
      "type": "string",
      "description": "Nome (ou parte) da empresa, ou o documento. Ex.: \"acai\" acha \"Açaí & Cia Ltda\"."
    }
  }
}
🔴salvar_tomador(doc, razao, tipo, pais)

Salva/atualiza um tomador frequente (ex.: "salva a Shopee como tomador").

Esquema de entrada

{
  "type": "object",
  "properties": {
    "doc": {
      "type": "string",
      "description": "CNPJ ou CPF (só números ou formatado)."
    },
    "razao": {
      "type": "string",
      "description": "Razão social ou nome."
    },
    "tipo": {
      "type": "string",
      "enum": [
        "",
        "exterior"
      ]
    },
    "pais": {
      "type": "string",
      "description": "ISO2, só para exterior."
    }
  },
  "required": [
    "razao"
  ]
}
🟢saldo

Quantidade de notas disponíveis, preço por nota, ambiente e teto diário. O nome técnico saldo é mantido por compatibilidade.

Esquema de entrada

{
  "type": "object",
  "properties": {}
}
⚪comprar_creditos(valor_centavos)

Gera um link de pagamento (Pix/cartão) para adicionar créditos de notas. Entregue o link ao usuário — o pagamento acontece no navegador dele e as notas entram após a confirmação.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "valor_centavos": {
      "type": "integer",
      "enum": [
        1000,
        2500,
        5000,
        10000
      ],
      "description": "Valor da recarga em centavos: 1000 (R$10), 2500 (R$25), 5000 (R$50) ou 10000 (R$100)."
    }
  },
  "required": [
    "valor_centavos"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada10 herramientas