- IA e MCP
- Agente próprio com a API do Claude
IA e MCP
Agente próprio com a API do Claude
Use o MCP da Treeunfe direto do seu backend com o conector MCP da API do Claude.
Com o conector MCP da API do Claude, o seu backend envia uma mensagem e o Claude chama as ferramentas da Treeunfe sozinho. Você não precisa escrever o loop de ferramentas nem rodar um cliente MCP: a conexão com o servidor é feita pela Anthropic.
Antes de começar
- Uma chave da API do Claude (
ANTHROPIC_API_KEY), criada no Console da Anthropic. - A API Key da organization Treeunfe (
TREEUNFE_API_KEY), de preferência de homologação.
Como funciona
A requisição leva duas partes que precisam andar juntas:
| Parâmetro | O que faz |
|---|---|
mcp_servers | Diz onde está o servidor (url), dá um nome a ele (name) e envia a chave em authorization_token. A chave vai como Authorization: Bearer. |
tools | Um item mcp_toolset com o mesmo nome do servidor, liberando as ferramentas dele para o Claude. |
O conector é beta e precisa do header anthropic-beta: mcp-client-2025-11-20.
Exemplo
Python
TypeScript
pip install anthropic
import os
import anthropic
client = anthropic.Anthropic() # lê ANTHROPIC_API_KEY
response = client.beta.messages.create(
model="claude-opus-5-5",
max_tokens=16000,
betas=["mcp-client-2025-11-20", "server-side-fallback-2026-07-01"],
fallbacks="default",
mcp_servers=[
{
"type": "url",
"url": "https://mcp.treeunfe.com.br/mcp",
"name": "treeunfe",
"authorization_token": os.environ["TREEUNFE_API_KEY"],
}
],
tools=[{"type": "mcp_toolset", "mcp_server_name": "treeunfe"}],
messages=[
{
"role": "user",
"content": "Consulte as últimas 5 NF-e emitidas este mês e resuma valor e status de cada uma.",
}
],
)
if response.stop_reason == "refusal":
print("O pedido foi recusado.")
else:
for block in response.content:
if block.type == "text":
print(block.text)
fallbacks: "default" faz a API tentar outro modelo do Claude se o pedido for recusado pelo modelo principal. Você pode remover esse campo e o beta server-side-fallback-2026-07-01 se não quiser esse comportamento.
Limitar as ferramentas
Para um agente que só consulta, deixe todas as ferramentas desligadas por padrão e ligue só as de leitura com default_config e configs:
tools=[
{
"type": "mcp_toolset",
"mcp_server_name": "treeunfe",
"default_config": {"enabled": False},
"configs": {
"NOME_DA_FERRAMENTA_DE_CONSULTA": {"enabled": True},
},
}
]
Troque NOME_DA_FERRAMENTA_DE_CONSULTA pelo nome que aparece na lista de ferramentas do servidor. Isso soma com o escopo da chave: mesmo que a ferramenta esteja ligada, uma chave sem nfe:emit não emite.
Com o conector MCP, o Claude chama as ferramentas sem pedir aprovação. Para emitir em produção, prefira uma etapa em que uma pessoa confirma os dados da nota antes do envio, ou use uma chave só com nfe:read no agente e emita pela API REST depois da confirmação.