Skip to main content
Glama
advogadotuliosilveira

autor-texto-seguro

README.md
# Autor de Texto Seguro — MCP para ChatGPT e Claude

Este projeto implementa um servidor [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) para conectar ferramentas de revisão autoral e privacidade documental a clientes compatíveis, incluindo Claude e ChatGPT. O servidor não usa um modelo de IA externo, não persiste o texto recebido e não tenta determinar ou ocultar a origem de um texto.

> **Limite importante:** este MCP não implementa evasão de detectores, falsificação de autoria, remoção de supostos “hashes de IA” ou promessa de indetectabilidade. Detectores fazem inferências probabilísticas e arquivos simples não possuem um hash universal de IA que possa ser apagado. A ferramenta de metadados remove apenas propriedades internas do arquivo, não registros externos, logs, histórico de serviços ou inferências estilísticas.

## Ferramentas disponíveis

| Ferramenta | Finalidade | Entrada principal |
|---|---|---|
| `analisar_estilo` | Produz métricas observáveis, como tamanho médio das frases, diversidade lexical, primeira pessoa e pontuação. | `texto` |
| `revisar_texto` | Faz normalização mecânica conservadora, como espaços duplicados, linhas excedentes e pontuação repetida. | `texto`, `tom_desejado` opcional |
| `comparar_com_amostra_autoral` | Compara características observáveis de uma amostra fornecida pelo autor com um texto-alvo. | `amostra_autoral`, `texto_alvo` |
| `limpar_metadados_documento` | Remove metadados comuns de DOCX e PDF; aceita também TXT, MD, CSV e JSON sem alteração do conteúdo. | `nome_arquivo`, `arquivo_base64` |

A comparação de estilo serve para ajudar o autor a revisar consistência e adequação da própria voz. Ela não fornece probabilidade de autoria humana, classificação de texto como “humano” ou “IA”, nem garantia de resultado perante qualquer detector.

## Instalação

Use Python 3.10 ou superior. Em um ambiente virtual recomendado, execute:

```bash
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
```

Para conferir a instalação:

```bash
python3 -m py_compile server.py
pytest -q
```

## Execução local por stdio

O transporte `stdio` é adequado para clientes que iniciam o processo localmente, como o Claude Desktop. No arquivo de configuração do cliente, utilize o caminho absoluto do Python e do servidor:

```json
{
  "mcpServers": {
    "autor-texto-seguro": {
      "command": "/caminho/absoluto/autor-texto-mcp/.venv/bin/python",
      "args": [
        "/caminho/absoluto/autor-texto-mcp/server.py",
        "--transport",
        "stdio"
      ]
    }
  }
}
```

Depois de salvar a configuração, reinicie o cliente e confirme se as quatro ferramentas aparecem. Consulte a documentação do seu cliente para o caminho exato do arquivo de configuração.

## Execução remota para ChatGPT e Claude

Para um único endpoint atender os dois ecossistemas, este projeto usa **Streamable HTTP** no caminho `/mcp`. O padrão MCP define `stdio` para subprocessos locais e Streamable HTTP para servidores independentes acessíveis por HTTP.[1]

Inicie o servidor com um token forte:

```bash
export MCP_BEARER_TOKEN='substitua-por-um-token-longo-e-aleatorio'
python3 server.py --transport streamable-http --host 0.0.0.0 --port 8000
```

Em produção, coloque o processo atrás de HTTPS, por exemplo, com um proxy reverso ou uma plataforma de hospedagem. Não exponha o endpoint HTTP sem autenticação. O endereço que será informado aos clientes terá este formato:

```text
https://seu-dominio.example/mcp
```

O token deve ser enviado como `Authorization: Bearer <token>`. Não coloque o token em um repositório público, em uma mensagem compartilhada ou no código-fonte.

### ChatGPT

O ChatGPT conecta-se a servidores MCP remotos. Em contas e workspaces que tenham Developer Mode e custom MCP apps disponíveis, o administrador ou usuário autorizado pode abrir as configurações de Apps, criar um app personalizado, informar o endpoint HTTPS, selecionar o mecanismo de autenticação Bearer e escanear as ferramentas. A disponibilidade depende do plano e das permissões do workspace; a documentação oficial informa que a conexão direta com servidores locais não é feita sem um túnel seguro.[2]

Após a criação, habilite somente as ferramentas necessárias e teste primeiro `analisar_estilo` e `revisar_texto`. A documentação oficial recomenda validar servidores personalizados, especialmente quando possuem ações que modificam dados; este projeto é somente de processamento do conteúdo enviado e não possui ferramentas de escrita em sistemas externos.[2]

### Claude

Para o Claude API, o MCP Connector aceita um servidor remoto por URL e permite configurar um token Bearer. A configuração deve usar o endpoint `/mcp` e habilitar o conjunto de ferramentas desejado. Exemplo conceitual, conforme a estrutura documentada pela Anthropic:[3]

```json
{
  "mcp_servers": [
    {
      "type": "url",
      "url": "https://seu-dominio.example/mcp",
      "name": "autor-texto-seguro",
      "authorization_token": "SEU_TOKEN"
    }
  ],
  "tools": [
    {
      "type": "mcp_toolset",
      "mcp_server_name": "autor-texto-seguro"
    }
  ]
}
```

O Claude Desktop também pode usar o modo local `stdio`, quando o próprio aplicativo iniciar o processo. Para a API do Claude, a documentação informa que o servidor precisa estar publicamente acessível por HTTP; servidores locais `stdio` não são conectados diretamente por esse recurso.[3]

## Segurança e privacidade

O servidor processa os dados na memória durante a chamada e não possui código para gravar textos em banco de dados ou enviá-los a outro modelo. Ainda assim, o operador da infraestrutura deve proteger logs do proxy, métricas, backups e arquivos temporários. Em produção, use HTTPS, token longo e aleatório, limites de tamanho, controle de acesso e rotação de credenciais.

A ferramenta de limpeza recebe arquivos em Base64. Para PDFs, a reconstrução pode não preservar certos recursos avançados e pode invalidar assinaturas digitais; por isso, mantenha o arquivo original e valide o resultado antes de usá-lo. Para DOCX, são removidas propriedades comuns do `docProps/core.xml`. Para TXT, MD, CSV e JSON, o conteúdo é devolvido sem alteração porque esses formatos não têm, em regra, propriedades internas equivalentes às de DOCX/PDF.

## Validação

A suíte local contém cinco testes automatizados:

```text
5 passed
```

Também foi validada uma chamada real ao endpoint Streamable HTTP, com autenticação Bearer, descoberta das quatro ferramentas e execução de `analisar_estilo`.

## Estrutura

```text
autor-texto-mcp/
├── server.py
├── requirements.txt
├── README.md
├── integration_check.py
└── tests/
    ├── conftest.py
    └── test_server.py
```

## Referências

[1]: https://modelcontextprotocol.io/specification/2026-07-28/basic/transports "Model Context Protocol — Transports"

[2]: https://help.openai.com/en/articles/12584461-developer-mode-and-mcp-apps-in-chatgpt "OpenAI Help — Developer mode and MCP apps in ChatGPT"

[3]: https://platform.claude.com/docs/en/agents-and-tools/mcp-connector "Anthropic — MCP connector"