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"
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues