Mcp Chatgpt — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Chatgpt (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MVP de servidor MCP local para permitir que o ChatGPT use um computador Windows por meio do OpenAI Secure MCP Tunnel.
Este projeto nasceu para funcionar como um "PC Controller" simples: o ChatGPT descobre ferramentas MCP, chama essas ferramentas pelo tunnel e o servidor local executa ações no PC autorizado.
Validado em Windows com OpenAI Tunnel.
Fluxo comprovado:
ChatGPT
→ Custom Connector / App em modo desenvolvedor
→ OpenAI Secure MCP Tunnel
→ tunnel-client.exe rodando no PC
→ servidor MCP local em Node.js via stdio
→ ferramentas como list_directory, read_file e psTeste real validado: o ChatGPT conseguiu listar a pasta do projeto usando a ferramenta list_directory.
ps: executa comando PowerShell.start_ps: inicia comando PowerShell longo em segundo plano.read_process: lê stdout/stderr de processo iniciado por start_ps.stop_process: encerra processo iniciado por start_ps.list_processes: lista processos criados por start_ps.list_directory: lista arquivos e pastas.get_file_info: mostra metadados de arquivo ou pasta.create_directory: cria pasta recursivamente.read_file: lê arquivo de texto.write_file: cria ou sobrescreve arquivo de texto.append_file: adiciona texto ao final de arquivo.delete_path: remove arquivo ou pasta, recusando raiz de unidade.move_path: move ou renomeia arquivo ou pasta.search_names: busca arquivos/pastas por nome.screenshot_url: abre URL em Edge headless, com fallback Chromium, e retorna screenshot.MCP ChatGPT
├─ config/settings.json
├─ src/app.mjs
├─ src/core
├─ src/tools
├─ install-deps.cmd
├─ doctor.cmd
├─ run-mcp.cmd
├─ tunnel-init.cmd
├─ tunnel-doctor.cmd
├─ tunnel-run.cmd
├─ tunnel-client.exe
├─ README.md
└─ TUNNEL_SETUP.mdtunnel-client.exe baixado do release oficial do openai/tunnel-client.Recomendado descompactar em:
C:\Users\SEU_USUARIO\Documents\MCP ChatGPTO nome da pasta pode ter espaço, mas isso exige cuidado na configuração do tunnel. Este README já documenta o workaround que funcionou.
Abra CMD na pasta do projeto:
cd /d "C:\Users\SEU_USUARIO\Documents\MCP ChatGPT"
install-deps.cmdEsse script roda:
npm install
npx playwright install chromiumdoctor.cmdResultado esperado: JSON com ok: true e a lista de ferramentas.
Na página de releases do projeto openai/tunnel-client, baixe o binário compatível com Windows.
Opção recomendada:
windows-amd64.zipSe baixar o pacote all, o executável costuma ficar em:
bin\windows_amd64\tunnel-client.exeCopie o executável para a raiz do projeto:
C:\Users\SEU_USUARIO\Documents\MCP ChatGPT\tunnel-client.exeAcesse:
https://platform.openai.com/settings/organization/tunnelsCrie um tunnel e copie o ID, por exemplo:
tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxRode:
tunnel-init.cmdInforme o tunnel_id quando solicitado.
Esse script gera o arquivo:
%APPDATA%\tunnel-client\mcp-chatgpt-full-pc-dev.yamlO profile aponta para o servidor MCP local usando caminhos curtos do Windows e barras /, evitando bugs de escape em YAML/comando.
Formato esperado do comando no YAML:
mcp:
commands:
- channel: main
command: "C:/PROGRA~1/nodejs/node.exe C:/Users/User/DOCUME~1/MCPCHA~1/src/app.mjs"Atenção: o caminho exato muda conforme usuário, idioma do Windows e local da pasta.
Acesse:
https://platform.openai.com/settings/organization/api-keysCrie ou use uma API key ativa. No terminal ela será usada como variável de ambiente CONTROL_PLANE_API_KEY.
Não cole essa chave em chat, README, print público ou commit.
Rode:
tunnel-doctor.cmdCole a API key quando o terminal pedir.
Resultado esperado:
RESULT ok
NEXT tunnel-client run --profile mcp-chatgpt-full-pc-devAlguns SKIP são normais para MCP via stdio:
mcp_server_reachable SKIP
oauth_metadata SKIP
codex_plugin SKIPRode:
tunnel-run.cmdCole a API key quando pedir.
A janela precisa ficar aberta enquanto o ChatGPT usa o conector.
Resultado esperado no log:
🟢 tunnel-client startedNo ChatGPT Web:
Settings
→ Aplicativos / Connectors
→ Criar aplicativo / Custom connector
→ Conexão: Túnel
→ Informar o tunnel_id
→ Sem autenticação
→ Marcar ciência do risco
→ CriarSe tudo estiver certo, o ChatGPT vai fazer scan das ferramentas e exibir as actions.
Com tunnel-run.cmd aberto, peça no chat:
Use o PC Controller para listar a pasta C:\Users\SEU_USUARIO\Documents\MCP ChatGPT.Ou:
Use o PC Controller e leia o arquivo C:\Users\SEU_USUARIO\Documents\MCP ChatGPT\checklist.txt.Se a resposta listar arquivos da máquina, o tunnel está funcional.
No Windows, comandos com \ dentro do YAML causaram problema no tunnel-client.
O log ruim mostrava algo parecido com:
fork/exec C:PROGRA~1nodejsnode.exe: The system cannot find the file specifiedOu seja, o tunnel-client removeu as barras invertidas. A solução validada foi:
\ por /.node.exe direto, sem cmd.exe /c e sem .cmd no campo command.Comando final funcional neste PC:
command: "C:/PROGRA~1/nodejs/node.exe C:/Users/User/DOCUME~1/MCPCHA~1/src/app.mjs"Para descobrir caminhos curtos manualmente:
for %I in ("C:\Program Files\nodejs\node.exe") do @echo %~sI
for %I in ("C:\Users\SEU_USUARIO\Documents\MCP ChatGPT\src\app.mjs") do @echo %~sIDepois substitua \ por / no YAML.
Este MVP pode ser poderoso demais se deixado totalmente aberto.
Arquivo de configuração do servidor MCP:
config/settings.jsonCampo importante:
"allowedRoots": []Quando allowedRoots está vazio, o MCP não limita pastas por conta própria.
Recomendação para uso real:
"allowedRoots": [
"C:\\Users\\SEU_USUARIO\\Documents",
"C:\\Users\\SEU_USUARIO\\Desktop",
"C:\\Users\\SEU_USUARIO\\Downloads"
]Também é prudente manter securityMode como:
"securityMode": "denylist"install-deps.cmdInstala dependências Node e navegador Chromium do Playwright.
doctor.cmdValida o servidor MCP local sem tunnel.
run-mcp.cmdSobe o servidor MCP local via stdio. Normalmente não é chamado direto pelo usuário final.
tunnel-init.cmdGera o profile YAML do tunnel em %APPDATA%\tunnel-client.
tunnel-doctor.cmdValida o profile do tunnel usando a API key informada no terminal.
tunnel-run.cmdSobe o tunnel-client e mantém a ponte ativa para o ChatGPT.
write |1: file already closedSignifica que o ChatGPT tentou inicializar o MCP, mas o processo local já tinha fechado.
Causas comuns:
src/app.mjs não encontrado.Verifique o YAML:
%APPDATA%\tunnel-client\mcp-chatgpt-full-pc-dev.yamlfork/exec C:PROGRA~1nodejsnode.exeO comando está usando \ e o tunnel-client removeu as barras.
Corrija para /:
command: "C:/PROGRA~1/nodejs/node.exe C:/Users/User/DOCUME~1/MCPCHA~1/src/app.mjs"Confira se tunnel-run.cmd está aberto e se o log mostra:
🟢 tunnel-client startedDepois confira se o app local responde:
doctor.cmdO profile usa:
health:
listen_addr: "127.0.0.1:8080"Se a porta estiver ocupada, troque para outra porta livre ou encerre o processo antigo do tunnel.
A key é usada apenas no terminal como CONTROL_PLANE_API_KEY.
Não grave a key no YAML, no README ou no Git.
Antes de zipar para outra máquina, recomenda-se não incluir:
node_modules
logs
screenshots temporários
chaves de APIO destinatário deve rodar:
install-deps.cmd
tunnel-init.cmd
tunnel-doctor.cmd
tunnel-run.cmd1. Instalar Node.js LTS.
2. Descompactar o projeto.
3. Copiar tunnel-client.exe para a raiz.
4. Rodar install-deps.cmd.
5. Criar tunnel na OpenAI Platform.
6. Rodar tunnel-init.cmd e informar tunnel_id.
7. Rodar tunnel-doctor.cmd e informar API key.
8. Rodar tunnel-run.cmd e deixar aberto.
9. Criar Custom Connector no ChatGPT usando Tunnel.
10. Testar list_directory/read_file.mcp-chatgpt-full-pc-dev.tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.PC Controller.list_directory funcionou.Estas dependências precisam existir na máquina antes do MVP funcionar:
node e npm no PATH.tunnel-client.exe compatível com Windows.CONTROL_PLANE_API_KEY.Declaradas em package.json:
"dependencies": {
"@modelcontextprotocol/sdk": "latest",
"playwright": "latest",
"zod": "^3.25.76"
}Descrição rápida:
@modelcontextprotocol/sdk: SDK usado para criar o servidor MCP e expor as ferramentas.zod: valida os schemas de entrada das tools MCP.playwright: usado pela ferramenta screenshot_url para abrir páginas em navegador headless.Além do pacote playwright, o projeto precisa instalar o navegador Chromium usado como fallback:
npx playwright install chromiumO script install-deps.cmd já executa isso.
install-deps.cmd instalanpm install
npx playwright install chromiumOu seja, ele instala:
node_modules com @modelcontextprotocol/sdk, playwright e zod.Para distribuir o MVP em ZIP, normalmente não é necessário incluir:
node_modules
package-lock.json, se quiser reinstalação limpa
logs
screenshots temporários
chaves de APIAo abrir em outra máquina, rode install-deps.cmd para reconstruir as dependências.
node -v
npm -v
npm list @modelcontextprotocol/sdk playwright zodE para validar sintaxe do servidor:
npm run check~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.