A MemberPress AI Foundation aplica quatro medidas de segurança às operações de gravação do Protocolo de Contexto do Modelo (MCP). Essas medidas protegem um site contra alterações indesejadas ou não autorizadas quando um cliente de IA se conecta por meio do servidor MCP. Elas funcionam em conjunto. Uma única chamada de gravação pode passar por verificações de escopo, padrões de visualização, uma etapa de confirmação e o kill switch antes de alterar os dados.
Este documento explica cada medida, contra o que ela protege e como o servidor MCP a aplica. Duas medidas são acionadas quando um cliente de IA chama uma ferramenta: tokens de confirmação e padrões de simulação. Uma medida determina qual vocabulário de escopo um token de conexão carrega: escopos granulares. Uma medida permite que um administrador interrompa instantaneamente qualquer gravação destrutiva: o kill switch.
Como funciona a camada de segurança
As quatro métricas correspondem a quatro questões distintas sobre uma operação de gravação:
| Medida | Nome | A pergunta a que ela responde |
|---|---|---|
| A | Tokens de confirmação | O que um token pode FAZER quando uma ferramenta destrutiva é executada? |
| B | Configurações padrão do teste simulado | Em qual modo uma ferramenta de gravação é iniciada por padrão quando é chamada? |
| C | Escopos granulares | Qual é o escopo do vocabulário que um token de conexão carrega? |
| D | Interruptor de emergência | Um administrador pode interromper todas as gravações destrutivas de uma só vez? |
As medidas A, B e D são executadas no momento da chamada da ferramenta. O servidor MCP as avalia dentro de Server::handle_tool_call em cada solicitação de gravação. A Medida C atua em duas etapas. No momento da chamada da ferramenta, o servidor compara o escopo exigido pela ferramenta com os escopos concedidos ao token. No momento da emissão do token, o limite máximo de acesso padrão restringe os escopos que uma nova conexão recebe.
Todas as quatro medidas estão no MemberPressAI\MCP namespace e são executadas no lado do servidor. Um cliente de IA não pode contorná-las formulando uma solicitação de maneira diferente, pois a aplicação das regras ocorre depois que a solicitação chega ao servidor, e não no cliente.
Medida A — Tokens de confirmação
Os tokens de confirmação protegem operações destrutivas por meio de um fluxo obrigatório de duas chamadas. Uma ferramenta destrutiva não pode ser executada em uma única chamada. A primeira chamada retorna uma pré-visualização e um token de uso único; a segunda chamada deve incluir esse token para ser executada.
Há uma exceção restrita que se aplica: As ações reversíveis ignoram o portão. memberpress_gerenciar_assinatura com ação: "retomar" e memberpress_gerenciar_subconta com ação: "adicionar" reverter em vez de destruir, e executar sem um token. Uma única lista de permissões compartilhada determina a isenção tanto no endpoint do MCP quanto na interface de recursos do WordPress, de modo que os dois mecanismos de controle não podem divergir. Qualquer outra chamada destrutiva requer o token.
Seis ferramentas são destrutivas e exigem esse fluxo:
| Ferramenta | O que ele faz |
|---|---|
memberpress_delete_member | Exclui um membro |
transação de reembolso do MemberPress | Reembolsa uma transação |
memberpress_delete_webhook | Exclui um webhook |
memberpress_reset_course_progress | Redefine o progresso do aluno no curso |
memberpress_gerenciar_subconta | Gerencia uma subconta corporativa |
memberpress_gerenciar_assinatura | Gerencia uma assinatura |
Como funciona o fluxo de duas chamadas
- O cliente de IA chama a ferramenta destrutiva com seus argumentos. O servidor retorna uma prévia do efeito, além de um token de confirmação.
- O cliente de IA chama a mesma ferramenta novamente com os mesmos argumentos, além de um
confirmarparâmetro definido com o valor do token. O servidor verifica o token e executa a operação.
O token possui três proteções. Ele expira após 60 segundos (o TTL constante em Tokens de confirmação). É de uso único — o servidor o consome na chamada em execução. O servidor o vincula à combinação exata de nome da ferramenta, argumentos e ID do usuário. Um token emitido para uma operação não pode autorizar outra operação diferente.
A justificativa do projeto, segundo a equipe de desenvolvimento: “apenas passar um valor booleano não constitui um consentimento suficientemente firme para uma ação que não pode ser revertida”. Um token de confirmação comprova que o usuário que iniciou a operação visualizou a pré-visualização específica daquela operação antes de confirmá-la.
A resposta à primeira chamada
A primeira chamada retorna uma prévia do efeito, que pode ser usada apenas uma vez token_de_confirmação, e o tempo de validade restante do token. A seguir, a resposta de um transação de reembolso do MemberPress chamada de pré-visualização:
{
"preview": {
"dry_run": true,
"action": "refund_transaction",
"preview": {
"transaction_id": 432,
"amount": "100,00",
"total": "100,00",
"user_id": "",
"product_id": 2332,
"subscription_listing_may_show_inactive": true,
"subscription_listing_note": "Se esta foi a transação mais recente associada à assinatura, a lista de Assinaturas no painel de administração do WP exibirá a assinatura como \"Ativa: Não\" — essa coluna é derivada do status da transação mais recente, e não do próprio registro da assinatura. O registro da assinatura permanece inalterado, a menos que você opte por cancelar a assinatura como parte desse reembolso."
}
},
"confirmation_token": "ct_",
"expires_in": 60,
"next_step": "Chame memberpress_refund_transaction novamente com os mesmos argumentos, acrescentando confirm: \"ct_\" para executar."
}
O token chega em token_de_confirmação. O expira_em O campo indica o tempo de vida restante em segundos. O próximo_passo O campo indica exatamente como executar. O campo interno visualização.visualização O objeto descreve o efeito da operação; seus campos variam de acordo com a ferramenta. O lista_de_assinaturas_* Os campos apresentados aqui são específicos para reembolsos — os documentos “Referência de Ferramentas” e “Erros” abordam os detalhes da resposta ao reembolso.
Quando um token é inválido
Um token cuva validade expirou, já foi utilizado ou é apresentado com argumentos alterados gera um único erro. O servidor não distingue essas três causas:
{
"code": -32603,
"message": "O token de confirmação é inválido, está vencido ou os argumentos foram alterados. Chame a ferramenta sem `confirm` para receber uma nova pré-visualização e um novo token.",
"data": {
"mp_error_code": "CONFIRMATION_INVALID"
},
"request_id": "req_"
}
Jogo em andamento data.mp_error_code (CONFIRMAÇÃO_INVÁLIDA), e não o JSON-RPC genérico -32603 código. O procedimento de recuperação é sempre o mesmo: chame a ferramenta novamente sem confirmar para receber uma nova pré-visualização e um novo token.
Medida B — Configurações padrão do teste de simulação
As ferramentas de gravação operam por padrão no modo de visualização. Uma ferramenta de gravação não altera os dados, a menos que o chamador opte explicitamente por executá-la. Isso evita que um cliente de IA execute uma mutação que pretendia apenas inspecionar.
As ferramentas de escrita podem ser classificadas em dois tipos:
Gravações não destrutivas (9 ferramentas) portar um executar parâmetro. Por padrão, a ferramenta exibe uma pré-visualização e retorna uma carga útil de pré-visualização sem armazená-la. Ao passar executar: true coordena a operação em tempo real. Essas ferramentas incluem memberpress_create_member, memberpress_update_member, memberpress_create_coupon, memberpress_create_subscriptione memberpress_create_webhookentre outros.
Gravações destrutivas (6 ferramentas) não carregar nenhum dos dois executar nem um parâmetro de simulação herdado. Eles exibem uma pré-visualização por padrão e exigem a execução do fluxo de token de confirmação da Medida A. O mecanismo de duas chamadas é seu único mecanismo de execução.
Essa divisão permite que o leitor identifique o nível de risco de uma ferramenta a partir de seus parâmetros. Uma ferramenta com executar é reversível; uma ferramenta que não tem executar e a exigência de confirmação é prejudicial.
A Visualização Não Destrutiva da Forma
Uma ferramenta de gravação não destrutiva chamada sem executar: true retorna uma carga útil de visualização simples. A seguir, a resposta de um memberpress_create_member chamada de pré-visualização:
{
"dry_run": true,
"action": "create_member",
"preview": {
"email": "mcp-preview-test@example.com",
"username": "mcppreviewtest",
"first_name": "MCP",
"last_name": "PreviewTest"
},
"validation": "passed"
}
Este envelope é plano: simulação, ação, visualizaçãoe validação fica no nível superior e não há token de confirmação. Isso difere de uma pré-visualização destrutiva, em que o visualização o objeto está aninhado um nível mais abaixo (visualização.visualização) e um token_de_confirmação está presente. O validação O campo indica se a entrada visualizada passaria na validação ao ser executada.
Medida C — Âmbitos detalhados
Os tokens de conexão possuem escopos específicos, em vez de acesso irrestrito. Um token com escopo restrito à leitura de membros não pode gravar dados de cobrança. Isso limita o alcance de qualquer conexão individual exatamente às operações permitidas por seus escopos.
Vocabulário de escopo
O servidor MCP define os seguintes escopos em ScopeMatcher:
| Escopo | Subsídios |
|---|---|
ler | Acesso de leitura a todos os dados por meio de ferramentas de leitura |
escrever:conteúdo | Acesso de gravação ao conteúdo: regras de acesso e cupons |
escrever:membros | Acesso de gravação aos membros |
escrever:faturamento | Acesso de gravação ao sistema de cobrança: gerenciamento de assinaturas e reembolsos de transações |
escrever:importações | Acesso de gravação às importações de membros |
escrever:webhooks | Acesso de gravação a webhooks e lembretes por e-mail |
escrever:cursos | Acesso de gravação às operações do curso |
completo | Todos os escopos de gravação (que atendam a qualquer escreva:* (requisito) |
O ler O escopo é implícito em cada token. O servidor compara o escopo exigido por uma ferramenta com os escopos concedidos ao token antes do encaminhamento por meio de Server::current_token_has_scope.
O escopo, por si só, não é o único critério. Cada ferramenta de gravação também declara a capacidade do WordPress de que necessita (por exemplo, create_users ou editar_usuários), e o servidor verifica essa capacidade antes do despacho. Um token com completo O escopo ainda não consegue criar usuários se o proprietário do token não tiver o create_users capacidade. As duas verificações retornam erros distintos, e a verificação de escopo é executada primeiro: a ausência de escopo resulta em falha com SCOPE_INSUFICIENTE; uma funcionalidade ausente resulta em erro com CAPACIDADE_INSUFICIENTE.
Limite máximo de acesso padrão
O limite máximo de acesso padrão restringe os escopos que o servidor pode atribuir a uma nova conexão. O administrador define esse limite por meio do “Nível máximo de acesso para novas conexões” configuração no Configurações do MCP guia. O limite máximo determina o escopo máximo que qualquer novo token possui, independentemente do que o cliente conectado solicitar.
A configuração tem duas opções: Somente leitura e Acesso total.
Quando configurado para Somente leitura, o assistente oculta totalmente as caixas de seleção de escopo de gravação — elas não aparecem desativadas — e o servidor limita todas as novas conexões ao escopo de leitura. A etapa “Acesso” do assistente mostra apenas o escopo de leitura, que é sempre concedido, com o seguinte aviso:
O administrador do site definiu o nível máximo de acesso como “Somente leitura”. Não é possível atribuir permissões de gravação a novas conexões até que esse nível seja aumentado nas configurações do MCP.
Quando configurado para Acesso total, a etapa “Acesso” do assistente exibe as caixas de seleção de escopo de gravação, já marcadas, e o administrador desmarca aquelas que uma conexão não necessita. Uma nova conexão recebe, então, escopos de gravação até o limite permitido pelas permissões do WordPress do usuário que está se conectando.
O limite máximo é aplicado no lado do servidor em quatro caminhos de emissão de tokens. Uma solicitação criada manualmente não pode contornar a interface do assistente para solicitar um escopo mais amplo:
- Criação de tokens do Wizard;
- OAuth
/autorizar; - OAuth
/tokentroca; - Registro dinâmico de clientes (RFC 7591).
O limite máximo é uma extensão do vocabulário de escopo, não um mecanismo separado. Ele existe apenas porque a Medida C define os escopos aos quais se aplica.
Medida D — Interruptor de emergência
O kill switch permite que um administrador interrompa instantaneamente qualquer gravação destrutiva. Quando ativado, o servidor rejeita todas as chamadas de ferramentas destrutivas e retorna o WRITES_PAUSED erro, independentemente dos escopos do token de chamada ou de qualquer token de confirmação válido.
Um administrador altera a posição do interruptor de Clientes conectados ao MCP página de administração. O controle é um Suspender todas as gravações botão. Enquanto as gravações destrutivas estiverem ativas, a página exibe este status:
Operações destrutivas estão ativas — Suspendem reembolsos, cancelamentos, exclusões e importações em massa para todos os clientes conectados. As ferramentas de leitura continuam funcionando.
Essa configuração permanece mesmo após os salvamentos regulares das configurações, de modo que uma atualização de rotina das configurações não a desativa automaticamente. O servidor registra admin.writes_paused e admin.writes_resumed eventos no log de auditoria quando o switch muda de estado.
O “kill switch” é a medida de maior alcance. As medidas A, B e C restringem operações individuais; o “kill switch” anula todas elas em relação a chamadas destrutivas com uma única ação. É a resposta adequada quando um administrador suspeita que uma conexão está se comportando de maneira inesperada e deseja interromper toda atividade destrutiva antes de investigar.
A resposta WRITES_PAUSED
Enquanto o kill switch estiver ativo, toda chamada a uma ferramenta destrutiva falhará com esta resposta, independentemente dos escopos do token de chamada ou de qualquer token de confirmação válido:
{
"code": -32603,
"message": "As gravações destrutivas foram suspensas por um administrador. Tente novamente mais tarde ou entre em contato com o proprietário do site.",
"data": {
"mp_error_code": "WRITES_PAUSED"
},
"request_id": "req_"
}
O switch controla todo o caminho de gravação destrutiva: mesmo a primeira chamada (de visualização) de uma ferramenta destrutiva retorna WRITES_PAUSED, portanto, o fluxo de confirmação não pode ser iniciado. Assim como em todos os erros da ferramenta, verifique se data.mp_error_code (WRITES_PAUSED), e não o genérico -32603.
Recursos relacionados
As possibilidades do WordPress vêm à tona
No WordPress 6.9 e versões posteriores, o AI Foundation também registra ferramentas por meio da API de Capacidades do WordPress, disponibilizada pelo Adaptador MCP do WordPress.org. Trata-se de uma segunda interface programática que acessa as mesmas operações subjacentes que o endpoint do MCP, com três diferenças técnicas:
- Controle de visualização. As operações de gravação na superfície de Habilidades expõem um
simulaçãoparâmetro: a visualização prévia é ativada por padrão, e o chamador passadry_run: falsepara rodar em ambiente de produção — onde o endpoint do MCP utilizaexecutar: trueem vez disso; - Porta de gravação. O acesso de gravação por meio da interface “Abilities” é restrito ao
mpai_use_mcp_writecapacidade; - Cobertura. A superfície registra as famílias principais de ferramentas; as superfícies de ferramentas complementares são exibidas apenas por meio do MCP.
O modelo de segurança se mantém: a superfície impõe os mesmos requisitos de capacidade do WordPress por ferramenta, as operações destrutivas exigem o mesmo fluxo de token de confirmação (incluindo a mesma isenção para ações reversíveis) e o kill switch suspende as gravações destrutivas de Abilities da mesma forma que suspende as gravações de MCP. Acessar as operações por meio de um protocolo diferente não flexibiliza os controles de segurança.
Registro de atividades
O Registro de Atividades registra os eventos da ferramenta MCP para fins de auditoria e solução de problemas. Ele fica no Clientes conectados ao MCP aba e apresenta cada evento em quatro colunas: Tempo, Cliente, Ferramentae Resultado. O Resultado A coluna mostra o código de resultado armazenado para cada chamada — sucesso, erro, confirmação_necessária, confirmação_inválida, confirmação_corrida_perdida, escopo_insuficiente, capacidade_insuficiente, gravação_em_pausa, e um pequeno conjunto de códigos de falha de visualização/codificação.
O registro torna o fluxo de confirmação de operações destrutivas auditável: os registros de chamadas de pré-visualização de uma ferramenta destrutiva confirmação_necessária, e seus registros de execução sucesso — as duas chamadas são distintas. Tanto a visualização quanto a execução em tempo real de uma ferramenta não destrutiva geram registros sucesso; os argumentos de chamada nunca são registrados deliberadamente, de modo que o log não registra se executar foi aprovada. O prazo de retenção dos registros é regulado pela Retenção de registros configuração no Configurações do MCP guia (padrão) 30 dias).
Uma observação sobre o comportamento do cliente de IA
Alguns clientes MCP concluem automaticamente o fluxo de confirmação de duas chamadas sem exibir a etapa de confirmação ao usuário. Um cliente pode exibir uma pré-visualização e, em seguida, emitir a segunda chamada internamente, de modo que a operação pareça ser executada em uma única etapa. Esse é um comportamento do fluxo de trabalho do lado do cliente, e não uma falha na camada de segurança. O servidor ainda impõe a exigência das duas chamadas, e o cliente fornece um token válido na segunda chamada.
Para observar diretamente o gate de confirmação, use uma ferramenta que envie cada chamada explicitamente, como o Postman ou curl. Um cliente que abstrai o fluxo oculta as duas chamadas, mas o servidor ainda precisa de ambas.
Documentação relacionada
- Visão geral e guia de configuração do MemberPress AI Foundation — o que é a AI Foundation, como instalá-la e como conectar clientes de IA;
- Referência às ferramentas MCP do MemberPress AI Foundation — o catálogo completo de ferramentas, incluindo quais são destrutivas e qual o escopo exigido por cada uma;
- Erros e solução de problemas do MCP do MemberPress AI Foundation — o catálogo completo de erros, incluindo
WRITES_PAUSEDeCAPACIDADE_INSUFICIENTE; - Conectando clientes de IA ao MemberPress — como o servidor estabelece conexões e atribui escopos durante a configuração.