Para negócios Para empresas Soluções Aplicações Preços Desenvolvedores Blogue Documentação Lançar um espaço de trabalho
Blog / MCP para software empresarial

O que é um servidor ERP MCP?

O protocolo é pequeno e a especificação é pública, por isso a mecânica não é a parte difícil. O que torna um servidor MCP para um ERP diferente de um para um serviço meteorológico é que cada chamada altera dinheiro, stock ou um registo de cliente em nome de uma pessoa nomeada. Esta é uma descrição técnica de ambas as partes.

Leitura de 8 minAtualizado 4 de setembro de 2026Engenharia Sois, a equipa que constrói a plataforma

Um pequeno armário de servidores num corredor de escritório: um rack com algumas unidades e luzes a piscar, cabos organizados e uma etiqueta impressa na porta.
Resposta curta

Um servidor ERP MCP é um sistema de ações de negócios publicado sobre o Protocolo de Contexto do Modelo, para que qualquer agente de IA compatível possa descobrir o que o sistema pode fazer e fazê-lo. Concretamente, é um endpoint HTTPS que responde a dois métodos JSON-RPC: tools/list, que devolve as ferramentas disponíveis para o chamador com um nome, uma descrição e um esquema JSON para as entradas, e tools/call, que executa um deles e devolve um resultado que o modelo pode ler. Claude, ChatGPT, Cursor, VS Code e outros clientes falam o protocolo, por isso o servidor é escrito uma vez e cada agente pode usá-lo.

Para um ERP, as duas coisas que importam não estão no transporte. A primeira é que a lista de ferramentas e cada chamada estão limitadas à pessoa que o agente representa, o que o protocolo suporta através de OAuth e autorização por pedido, mas deixa o servidor a sua aplicação. A segunda é que cada ferramenta deve corresponder a uma transação comercial que seja segura para repetir, recusar ou questionar, porque um modelo fará as três.

Um servidor que transforma um sistema em ferramentas

O Protocolo de Contexto do Modelo tem três papéis. Um anfitrião é uma aplicação de IA como Claude ou ChatGPT. Dentro do anfitrião, um cliente é criado por servidor e fala apenas com esse servidor. Um servidor é um serviço que oferece contexto e capacidades ao anfitrião através de um pequeno número de primitivos. Os princípios de design da especificação dizem que os servidores devem ser fáceis de construir, compostos e incapazes de ver toda a conversa ou outros servidores; o anfitrião mantém a conversa e aplica o consentimento, o servidor vê apenas as chamadas dirigidas a ele.

Um servidor ERP MCP não é, portanto, o ERP. É a superfície de ação do ERP, expressa como ferramentas com entradas tipadas, servidas em uma URL. A decisão de design interessante é o que é uma ferramenta. Um servidor de meteorologia tem uma; um sistema de negócios tem centenas, e as úteis são ações que uma pessoa poderia realizar (criar uma fatura, registar um pagamento, mover um negócio, reservar stock) em vez de linhas em tabelas. O servidor de espaço de trabalho da Sois, por exemplo, publica ferramentas com nomes como criar fatura, registarPagamento, searchContacts e examinarContacto agrupados por módulo, e a lista exata que um chamador recebe depende de quem são.

Ferramentas, recursos e sugestões

A especificação define três primitivos de servidor, e eles diferem em quem controla o seu uso. As ferramentas são controladas pelo modelo: o modelo decide quando chamar uma. Os recursos são impulsionados pela aplicação: o anfitrião decide que contexto anexar, muitas vezes com o utilizador escolhendo de uma lista. Os prompts são modelos controlados pelo utilizador. Um ERP precisa do primeiro, pode beneficiar do segundo e raramente precisa do terceiro.

PrimitiveQuem o invocaFormaNum ERP
FerramentasO modelo, através de ferramentas/chamadaNome, descrição, inputSchema, outputSchema opcional e anotações; o resultado tem conteúdo, structuredContent opcional e isErrorCada ação: pesquisar, criar, atualizar, enviar, aprovar, reconciliar
RecursosO anfitrião ou o utilizador, através de resources/readUma URI com um tipo MIME; conteúdos de texto ou binários; modelos opcionais e subscrições de alteraçõesDocumentos de referência, um extrato de cliente, um relatório; úteis, mas não é onde o trabalho acontece
SugestõesO utilizador, através de prompts/getUm modelo de mensagem nomeado com argumentosOcasionalmente, para uma rotina de fim de mês; a maioria dos servidores ERP omite-os

O conector da API de Mensagens do Claude e a API de Respostas da OpenAI suportam apenas ferramentas, o que é mais uma razão para colocar a substância do ERP em ferramentas.

Duas características dos resultados das ferramentas são importantes para um sistema de negócios. Uma ferramenta pode declarar um esquemaDeSaída e retornar conteúdoEstruturado que esteja em conformidade com ele, juntamente com o texto que um modelo lê, para que uma integração possa usar o resultado sem analisar prosa. E uma ferramenta que falha por uma razão de negócio (uma fatura no estado errado, uma data no passado, uma permissão em falta) retorna um resultado normal com isError: true e uma explicação, em vez de um erro de protocolo, para que o modelo possa corrigir a sua entrada e tentar novamente. Erros de protocolo são reservados para pedidos malformados e ferramentas desconhecidas.

O transporte e a especificação atual

Dois transportes são padrão. Stdio é para um servidor que o cliente inicia como um processo local, que é como as ferramentas de desktop, como o acesso a ficheiros, funcionam. HTTP transmitível é para servidores remotos e é o que um ERP utiliza: o servidor expõe um endpoint que aceita um POST HTTP por mensagem JSON-RPC e responde com um objeto JSON ou um fluxo de Eventos Enviados pelo Servidor limitado a esse pedido, para que uma chamada longa possa enviar progresso antes do seu resultado final. O transporte HTTP anterior com SSE está obsoleto.

A revisão atual, 2026-07-28, alterou o transporte de uma forma que é importante para quem está a implementar um servidor atrás de um balanceador de carga. Removiu sessões a nível de protocolo: já não existe um handshake de inicialização ou um cabeçalho de identificador de sessão, cada pedido transporta a sua versão de protocolo e capacidades do cliente na sua própria metadata, e um servidor que precisa de estado entre chamadas retorna um identificador explícito que o modelo passa de volta como um argumento. Servidores escritos contra a revisão de 2025-11-25, que usavam sessões, continuam a funcionar porque os clientes são obrigados a detectar a era anterior e recuar; um novo servidor não deve adotar sessões.

Autorização: para quem é a chamada

Para transportes HTTP, a especificação define um fluxo OAuth 2.1. O servidor é um servidor de recursos e deve publicar metadados de recursos protegidos (RFC 9728) nomeando o seu servidor de autorização; quando uma solicitação chega sem um token, responde com 401 e um cabeçalho WWW-Authenticate apontando para esses metadados e, idealmente, o menor escopo necessário. O cliente descobre os endpoints do servidor de autorização, identifica-se (documentos de metadados do ID do cliente são o caminho recomendado; o registo dinâmico é mantido para compatibilidade), executa um fluxo de código de autorização com PKCE e deve incluir a URI canónica do servidor como parâmetro de recurso para que o token esteja vinculado apenas a este servidor. O servidor deve validar esse público, deve recusar tokens emitidos para qualquer outra coisa e nunca deve passar um token para outro serviço.

A consequência para um ERP é a importante. Como o token identifica uma pessoa, o servidor pode variar o resultado de tools/list pelas credenciais na solicitação, e a especificação diz isso explicitamente. Esse é o mecanismo para filtragem baseada em funções: a lista de um utilizador de finanças e a lista de um utilizador de armazém vêm do mesmo servidor e são diferentes. Um escopo insuficiente em tempo de execução é sinalizado com um 403 e um desafio de escopo que o cliente pode superar, embora para a maioria dos sistemas de negócios o verdadeiro limite seja a função no ERP em vez do escopo OAuth grosseiro.

A parte difícil: permissões e transações

Tudo o que foi mencionado acima pode ser implementado numa tarde com um SDK. O que separa um servidor ERP MCP de uma demonstração é o tratamento das duas coisas que o protocolo deixa ao servidor: se uma chamada é permitida e o que uma chamada significa.

A permissão tem de ser verificada duas vezes. Filtrar a lista de ferramentas impede que o modelo escolha algo que não deveria, o que economiza tokens e confusão. Verificar novamente quando a ferramenta é executada é o verdadeiro limite, porque um cliente pode enviar qualquer chamada que desejar. Uma recusa é melhor devolvida como um erro de execução da ferramenta, para que o modelo a leia e a reporte, em vez de como uma falha de transporte que termina a vez. Isto é como uma chamada recusada aparece de um espaço de trabalho Sois: um resultado normal, sinalizado, com uma razão.

{
  "jsonrpc": "2.0",
  "id": 7,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Tool not permitted for this account: approveInvoice requires the finance approver role."
      }
    ],
    "isError": true
  }
}

Uma recusa de permissão devolvida como um erro de execução da ferramenta. O modelo aprende o porquê e pode pedir à pessoa para aprovar em vez disso; nada foi escrito. A Sois também reserva códigos de erro JSON-RPC para sessões não autorizadas, créditos insuficientes, ferramentas não permitidas e limites orçamentais atingidos.

As transações são a segunda metade. Uma ferramenta deve corresponder a uma transação comercial com um claro antes e depois: criar fatura produz um rascunho com um identificador, registarPagamento aplica um pagamento a uma fatura, e nenhum deles deixa um estado meio escrito se falhar. Os modelos tentam novamente, portanto, as gravações devem ser seguras para repetir ou devem recusar uma repetição com uma mensagem clara; as anotações da especificação permitem que um servidor declare uma ferramenta como somente leitura, idempotente ou destrutiva, e clientes como o ChatGPT usam essas dicas ao decidir se devem pedir confirmação. Onde um passo precisa de uma decisão que está acima da autoridade do agente, o servidor pode devolver um resultado que requer entrada pedindo à pessoa uma pergunta através do cliente, em vez de adivinhar.

Você
O seu agente
Camada de permissões Sois
ContabilidadeArmazémCRMDocumentos

A camada de permissão está entre o endpoint e os módulos. A lista de ferramentas é filtrada pela função do chamador na saída, e cada chamada é verificada novamente na entrada, antes de chegar a um módulo.

Como a Sois implementa um

Um espaço de trabalho Sois é um servidor MCP numa única URL, o endereço do espaço de trabalho seguido de /api/mcpEle responde ao desafio 401 com metadados de recurso protegido, publica os metadados do seu servidor de autorização, requer PKCE e emite tokens limitados ao espaço de trabalho; um conector no Claude ou ChatGPT completa o início de sessão sem nada colado. Um token de portador com uma chave de API está disponível para scripts que não utilizam OAuth, com a identidade e os gastos mantidos em credenciais separadas de propósito.

A lista de ferramentas é gerada a partir das definições de ferramentas em tempo real e filtrada por função e aplicações instaladas, sendo que cada chamada é verificada quanto a permissões na execução e falha em modo seguro. As chamadas têm limites de taxa por ligação, são medidas quando o agente próprio do espaço de trabalho faz o raciocínio e isentas de custos de IA quando o agente do chamador o faz, limitadas por um orçamento definido pelo espaço de trabalho, e registadas com entradas e resultados em relação à pessoa que as fez. As aplicações publicadas no mercado adicionam as suas ferramentas à mesma lista sob as mesmas regras, pelo que a aplicação de um desenvolvedor é operável por um agente no momento em que é instalada.

Perguntas que as pessoas fazem

Um servidor MCP é apenas uma camada em torno de uma API REST?

Frequentemente é implementado dessa forma, e isso é aceitável. A diferença é o que publica: ferramentas tipadas que um modelo pode descobrir em tempo de execução, resultados que um modelo pode ler e recuperar, e autorização OAuth por utilizador, nada do qual uma API REST oferece a um agente por si só.

Quais agentes podem usar um servidor ERP MCP hoje?

Claude (web, desktop, Cowork, Claude Code e o conector da API de Mensagens), ChatGPT em modo de desenvolvedor e a API de Respostas, Cursor, VS Code e qualquer outro cliente que implemente o protocolo. O servidor não precisa saber qual está a chamar.

O servidor precisa manter sessões?

Não na revisão atual, que removeu sessões a nível de protocolo e pede aos servidores para devolverem identificadores explícitos para qualquer coisa que abranja chamadas. Os clientes ainda interoperam com servidores na revisão de 2025-11-25, que usou um cabeçalho de sessão, ao detetar a era anterior.

Onde é que o ERP aplica permissões?

No servidor, na execução, em cada chamada. Filtrar a lista de ferramentas é uma conveniência para o modelo; a verificação que importa acontece quando a ferramenta é executada, e uma recusa deve voltar como um erro de ferramenta legível para que nada seja escrito e o modelo possa explicar porquê.

Fontes
  1. Especificação do Protocolo de Contexto do Modelo (2026-07-28): ferramentas definições de ferramentas, resultados, tratamento de erros, anotações e a variação por pedido de ferramentas/list
  2. Especificação do Protocolo de Contexto do Modelo: Transporte HTTP transmitível e registo de alterações o transporte de ponto único, a remoção de sessões e a compatibilidade retroativa
  3. Especificação do Protocolo de Contexto do Modelo: autorização OAuth 2.1, metadados de recursos protegidos, indicadores de recursos e regras de tokens
  4. Documentação Sois: o servidor MCP do espaço de trabalho o ponto final, documentos de descoberta, filtragem de funções, limites e códigos de erro conforme implementado

Este artigo é revisto quando os produtos que descreve mudam. Próxima revisão agendada: 4 de dezembro de 2026.

Começar

Conecte o seu agente ao Sois.

O seu espaço de trabalho é um servidor MCP. Aponte o Claude, ChatGPT, Cursor ou qualquer cliente MCP para ele e trabalhe dentro das suas permissões.

  • Gratuito para começar
  • Traga o seu próprio agente
  • Sem bloqueio de fornecedor