MCP ChatGPT Full PC Dev
Allows ChatGPT (via OpenAI's MCP Tunnel) to perform file system operations, execute PowerShell commands, and take screenshots on a Windows PC.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP ChatGPT Full PC Devlist files in my Downloads folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP ChatGPT Full PC Dev
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.
Status atual
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.
Related MCP server: PC Controller MCP Server
Ferramentas disponíveis
ps: executa comando PowerShell.start_ps: inicia comando PowerShell longo em segundo plano.read_process: lê stdout/stderr de processo iniciado porstart_ps.stop_process: encerra processo iniciado porstart_ps.list_processes: lista processos criados porstart_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.
Estrutura principal
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.mdRequisitos em uma nova máquina
Windows.
Node.js LTS instalado.
Conta OpenAI com acesso a Tunnels e Custom Connectors / Apps em modo desenvolvedor.
Um tunnel criado na OpenAI Platform.
Uma Runtime API Key / API Key de projeto válida.
tunnel-client.exebaixado do release oficial doopenai/tunnel-client.
Instalação a partir de ZIP em outro computador
1. Descompactar o projeto
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.
2. Instalar dependências
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 chromium3. Validar o servidor local
doctor.cmdResultado esperado: JSON com ok: true e a lista de ferramentas.
4. Baixar o tunnel-client
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.exe5. Criar um tunnel na OpenAI Platform
Acesse:
https://platform.openai.com/settings/organization/tunnelsCrie um tunnel e copie o ID, por exemplo:
tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6. Gerar o profile local do tunnel
Rode:
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.
7. Obter Runtime API Key
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.
8. Validar o tunnel
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 SKIP9. Rodar o tunnel
Rode:
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 started10. Criar o app/conector no ChatGPT
No 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.
Teste inicial pelo ChatGPT
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.
Pegadinha crítica que quebrou o MVP
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:
Usar caminho curto 8.3 do Windows.
Trocar
\por/.Chamar
node.exedireto, semcmd.exe /ce sem.cmdno campocommand.
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.
Segurança
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"Scripts do projeto
install-deps.cmd
Instala dependências Node e navegador Chromium do Playwright.
doctor.cmd
Valida o servidor MCP local sem tunnel.
run-mcp.cmd
Sobe o servidor MCP local via stdio. Normalmente não é chamado direto pelo usuário final.
tunnel-init.cmd
Gera o profile YAML do tunnel em %APPDATA%\tunnel-client.
tunnel-doctor.cmd
Valida o profile do tunnel usando a API key informada no terminal.
tunnel-run.cmd
Sobe o tunnel-client e mantém a ponte ativa para o ChatGPT.
Troubleshooting
Erro: write |1: file already closed
Significa que o ChatGPT tentou inicializar o MCP, mas o processo local já tinha fechado.
Causas comuns:
Caminho do comando MCP quebrado.
Aspas mal interpretadas.
Barra invertida removida pelo YAML/comando.
Node.js não encontrado.
src/app.mjsnão encontrado.
Verifique o YAML:
%APPDATA%\tunnel-client\mcp-chatgpt-full-pc-dev.yamlErro: fork/exec C:PROGRA~1nodejsnode.exe
O 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"Conector criado, mas nenhuma ferramenta aparece
Confira se tunnel-run.cmd está aberto e se o log mostra:
🟢 tunnel-client startedDepois confira se o app local responde:
doctor.cmdPorta 8080 em uso
O 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.
API key
A key é usada apenas no terminal como CONTROL_PLANE_API_KEY.
Não grave a key no YAML, no README ou no Git.
Publicação / ZIP do MVP
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.cmdChecklist rápido em outra máquina
1. 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.Estado validado neste PC
Profile:
mcp-chatgpt-full-pc-dev.Tunnel ID:
tunnel_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.Connector/App:
PC Controller.Status: conectado em modo desenvolvedor.
Ferramentas descobertas pelo ChatGPT: sim.
Teste real:
list_directoryfuncionou.
Dependências e pré-requisitos detalhados
Dependências externas obrigatórias
Estas dependências precisam existir na máquina antes do MVP funcionar:
Windows.
Node.js LTS, incluindo
nodeenpmno PATH.OpenAI
tunnel-client.execompatível com Windows.Conta/OpenAI workspace com acesso a Tunnels e Custom Connectors / Apps em modo desenvolvedor.
Tunnel criado na OpenAI Platform.
API key ativa para ser usada como
CONTROL_PLANE_API_KEY.
Dependências Node do projeto
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 ferramentascreenshot_urlpara abrir páginas em navegador headless.
Dependência de 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.
O que o install-deps.cmd instala
npm install
npx playwright install chromiumOu seja, ele instala:
node_modulescom@modelcontextprotocol/sdk,playwrightezod.navegador Chromium do Playwright.
O que o ZIP não precisa levar
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.
Verificação rápida das dependências
node -v
npm -v
npm list @modelcontextprotocol/sdk playwright zodE para validar sintaxe do servidor:
npm run checkAvailable Tools
15 toolsappend_fileC
Adiciona texto ao final de um arquivo.
| Name | Required | Description | Default |
|---|---|---|---|
| targetPath | Yes | ||
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the basic action (append text) but lacks details on behavior beyond that. Does not disclose if the file is created if missing, any side effects, or permission requirements. No annotations provided to supplement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but at the expense of completeness. It is not verbose, but could usefully include more information without becoming overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, no annotations, and simple parameters, the description is insufficient. It omits return value, error cases, and behavior for missing files, which are important for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning beyond parameter names. The two parameters (targetPath, content) remain opaque regarding format, restrictions, or expected values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Adiciona' (adds) and the resource 'texto ao final de um arquivo' (text to the end of a file). It distinguishes from siblings like write_file by implying append behavior, but does not explicitly contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like write_file. No mention of prerequisites, such as whether the file must exist or will be created, or when to prefer append over overwrite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_directoryC
Cria uma pasta recursivamente.
| Name | Required | Description | Default |
|---|---|---|---|
| targetPath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It states 'recursively' which implies parent directory creation, but fails to specify key behaviors: what happens if the directory already exists? Does it fail or succeed silently? No error handling or permission requirements are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single short sentence that is front-loaded with the core action. No extraneous words. Every word is meaningful. Appropriate for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It omits critical details: return value (does it return success/error?), idempotency behavior, and concurrency implications. A directory creation tool with one parameter and no output schema needs at minimal to state what happens on existing paths.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (parameter has no description in schema). The tool description does not elaborate on the 'targetPath' parameter—no format expectation (absolute/relative), no constraints, no example. The agent gets no additional meaning beyond the schema's basic type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Creates a directory recursively' clearly states the action (create) and resource (directory). The 'recursively' qualifier distinguishes it from a non-recursive creation, and sibling tool names like list_directory and write_file imply this tool is for directory creation, making purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use or not use this tool. No mention of alternatives (e.g., for file creation use write_file). The agent is left to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_pathC
Remove arquivo ou pasta. Recusa raiz de unidade.
| Name | Required | Description | Default |
|---|---|---|---|
| targetPath | Yes | ||
| recursive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behaviors. It mentions refusal to delete drive root, but fails to state that deletion is irreversible, any required permissions, or what the return value indicates. For a destructive tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences), which is concise, but it omits critical information about parameters and behavior. It earns its space but lacks depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, and zero parameter coverage in the schema, the description is grossly incomplete. It does not cover the recursive parameter or explain how to specify the path, making the tool poorly defined for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain either parameter (targetPath or recursive). No details on path format or the effect of recursive flag are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it removes a file or folder and refuses drive root. The verb 'Remove' and resource 'arquivo ou pasta' are specific. Among sibling tools, none have the same delete function, so distinction is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like move_path or write_file. The description does not specify prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_infoC
Mostra metadados básicos de arquivo ou pasta.
| Name | Required | Description | Default |
|---|---|---|---|
| targetPath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It only says 'shows basic metadata' without specifying what metadata is returned (e.g., size, type, dates), whether it is read-only, or error handling. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence is brief, but it lacks necessary detail. It is concise in length but under-specified for the task.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and no output schema, the description is incomplete. It does not describe the return format, error scenarios, or any side effects, relying solely on the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage and the description adds no meaning to the sole parameter 'targetPath'. It does not explain path format, expected values, or constraints, leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Mostra metadados básicos de arquivo ou pasta' clearly states the tool shows basic metadata of files or folders, distinguishing it from siblings like read_file (content) and list_directory (listing). It adds specific resource scope beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like read_file or search_names. Lacks context for prerequisites, such as whether path must exist or permission requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryC
Lista arquivos e pastas de um caminho.
| Name | Required | Description | Default |
|---|---|---|---|
| targetPath | No | /app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden for behavioral disclosure. It does not mention recursion, hidden files, output format, or performance characteristics, leaving significant gaps for an AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words. While concise, it lacks depth; front-loading is adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (single optional parameter, no output schema), the description is insufficiently complete. It does not specify what output to expect (e.g., names, paths, metadata), limiting an agent's ability to correctly invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the 'targetPath' parameter at all. It adds no meaning beyond the schema, failing to explain purpose, constraints, or usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Lista arquivos e pastas de um caminho' clearly states it lists files and folders of a path (specific verb and resource). However, it does not explicitly distinguish itself from sibling tools like 'search_names', but the difference is apparent given the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_names' or 'get_file_info'. There are no usage context signals or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_processesA
Lista processos criados por start_ps nesta sessão MCP.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It discloses the scope (processes created by start_ps in this session) and implies read-only behavior. Does not mention side effects or refresh behavior, but for a list tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence in Portuguese directly stating purpose with no extra words. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential purpose and scope. Could mention return format, but for a simple list tool it is sufficiently complete, especially with sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has no parameters (100% schema coverage), so baseline is 4. Description does not need to add parameter info, and none is provided. This is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists processes created by start_ps in this MCP session, with specific verb and resource, distinguishing it from siblings like ps (system processes) and read_process (specific process details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear context by specifying 'criados por start_ps nesta sessão MCP', implying it is only for processes started by start_ps in the current session, thus indicating when to use it versus alternatives like ps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_pathD
Move ou renomeia arquivo/pasta.
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePath | Yes | ||
| destinationPath | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only indicates a mutation operation but fails to disclose critical behaviors like overwrite rules, error handling, permission requirements, or whether cross-filesystem moves are supported. With no annotations, the description fully neglected behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is under-specified for the tool's complexity. It is concise but at the expense of necessary details, making it unsuitable for effective tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 required params that performs a destructive operation, the description is drastically insufficient. It omits return values, error cases, overwrite behavior, and any usage context, leaving the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage and the tool description does not explain the parameters. sourcePath and destinationPath are left to be inferred from names only, with no constraints, formats, or examples provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool moves or renames a file/folder, which is clear and distinguishes it from many sibling tools like delete_path or write_file. However, it lacks specificity about whether renaming is a subset of moving and does not address potential ambiguities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as copy operations or direct manipulation. There are no usage exclusions or context that would help an agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
psD
Executa um comando PowerShell no PC.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| cwd | No | /app | |
| timeoutMs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks any disclosure of behavioral traits such as permissions, sandboxing, side effects (e.g., modifying system state), or output format (stdout/stderr/exit code).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence), which is concise but lacks necessary structure; it does not front-load critical details or provide a clear separation between purpose, usage, and behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a command execution tool with no output schema and no annotations, the description is severely incomplete. It fails to mention return values, error handling, or execution constraints, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the three parameters (command, cwd, timeoutMs). The agent must infer their meaning from names alone, which is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Executes a PowerShell command on the PC,' which is clear about the verb and resource, but it doesn't differentiate from sibling tool 'start_ps' or specify scope (local vs remote).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like start_ps, list_processes, or others. No context for appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileD
Lê arquivo de texto.
| Name | Required | Description | Default |
|---|---|---|---|
| targetPath | Yes | ||
| maxChars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and a minimal description, the tool's behavioral traits are opaque. Important aspects like file encoding, behavior with binary files, or what happens when maxChars is exceeded are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one sentence) but fails to provide necessary information. Conciseness should serve clarity; here it sacrifices completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two parameters and no output schema or annotations, the description is severely incomplete. It does not state what is returned, error behavior, or any side effects, making it insufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the parameters targetPath and maxChars. While names are somewhat clear, the description does not explain their purpose, constraints, or format expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Lê arquivo de texto.' (Reads text file.) merely restates the tool name without adding specificity or differentiating it from sibling tools like get_file_info or write_file. It lacks detail on what kind of files or how it reads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_file_info (for metadata) or write_file (for writing). The description does not mention context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_processC
Lê stdout/stderr de um processo iniciado por start_ps.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes | ||
| maxChars | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses that the tool reads stdout/stderr but does not explain blocking behavior, whether output is consumable, error handling, or any side effects. The maxChars parameter hints at truncation but is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, no description of return format, and no lifecycle context (e.g., when to call relative to start_ps/stop_process), the description is incomplete. It does not address error cases or how output is presented (e.g., text, JSON).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description does not mention either parameter (sessionId or maxChars), and schema description coverage is 0%. The agent must infer that sessionId identifies the process and maxChars limits output length. The description adds no semantic value beyond the schema's type and constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads stdout/stderr of a process started by start_ps. It specifies the verb (reads) and resource (process output), and distinguishes it from sibling tools like start_ps, stop_process, and list_processes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context that the tool is for processes started by start_ps but gives no explicit guidance on when to use versus alternatives, nor any exclusions or prerequisites. It lacks information about the process lifecycle (e.g., process must still be running).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshot_urlB
Abre uma URL em Edge headless, com fallback Chromium, e retorna screenshot.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| waitMs | No | ||
| fullPage | No | ||
| width | No | ||
| height | No | ||
| waitUntil | No | domcontentloaded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses headless mode and Chromium fallback, but no annotations are provided. It lacks details on error handling, side effects, or rate limits. The behavioral coverage is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the key action. It is concise and without filler, but could benefit from better structure for complex parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no output schema, and no annotations, the description is incomplete. It lacks parameter guidance, output format, and error behavior, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the 6 parameters (url, waitMs, fullPage, etc.). The agent gains no additional insight into parameter meaning or usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: opening a URL in Edge headless (with Chromium fallback) and returning a screenshot. The verb 'Abre' (opens) and resource 'URL' are specific, and the tool is distinct from sibling file/process tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives, but siblings are unrelated (file/process tools), so usage is implied. No when-not or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_namesC
Busca arquivos e pastas por nome.
| Name | Required | Description | Default |
|---|---|---|---|
| rootPath | Yes | ||
| pattern | Yes | ||
| maxResults | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses basic action but not details like recursion, hidden files, permissions, error handling, or output format. Minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but under-specified. Could be improved by adding key parameter details without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 parameters and no output schema, description fails to specify search scope, pattern type, result format, or error behavior. Incomplete for correct usage in a file system context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description adds no explanation for any parameter (rootPath, pattern, maxResults). Agent cannot infer meaning of 'pattern' (glob vs regex) or 'rootPath' from this description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches files and folders by name ('Busca arquivos e pastas por nome'). The verb 'Busca' and resource are clear, but it does not differentiate from siblings like list_directory which also lists files but not by pattern.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like list_directory or get_file_info. No when-not-to-use or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_psC
Inicia um comando PowerShell longo em segundo plano.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| cwd | No | /app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It mentions 'in background' but does not explain how to retrieve output, monitor progress, or handle errors. Critical details for a long-running command are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is too terse. Conciseness is good, but important details are omitted, reducing overall effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no output schema, and sibling tools like 'ps' and 'stop_process', the description fails to explain return behavior (e.g., how to get results), error handling, or lifecycle of the background process.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description adds no information about parameters. 'command' and 'cwd' are not described, leaving the agent unsure about valid values or purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Starts a long PowerShell command in the background' clearly states the action (starts), resource (PowerShell command), and distinguishes it from siblings like 'ps' which likely runs foreground commands. However, it does not explicitly contrast with other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'ps' (possibly synchronous). The description only mentions 'long' but does not specify scenarios or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_processC
Encerra um processo iniciado por start_ps.
| Name | Required | Description | Default |
|---|---|---|---|
| sessionId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the basic function without disclosing side effects (e.g., forced termination, permission requirements) or behavior when the process doesn't exist. With no annotations, more behavioral context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks structure and depth. It is not verbose, but at the cost of missing critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (one parameter, no output schema), the description omits crucial details like return values, error conditions, and the explicit link to start_ps output. A mutation tool should clarify expected outcomes and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description provides no additional meaning for the single parameter 'sessionId'. It does not explain what sessionId represents or how to obtain it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool terminates a process started by start_ps, using a specific verb and resource. However, it does not explicitly differentiate from sibling process tools like read_process or list_processes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or conditions mentioned. The description implies it should be used after start_ps, but that context is not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileB
Cria ou sobrescreve arquivo de texto.
| Name | Required | Description | Default |
|---|---|---|---|
| targetPath | Yes | ||
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It states the tool 'cria ou sobrescreve' (creates or overwrites), but it does not mention side effects like overwriting without warning, required permissions, or encoding. This leaves gaps in behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that efficiently conveys the core action. It is front-loaded with the verb and resource. However, it could be slightly more structured to include both creating and overwriting without relying on a slash.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 required parameters, no output schema, no annotations), the description is insufficiently complete. It omits details such as whether directories are created automatically, the return value, or error behaviors. For a tool with no annotations, the description should provide more context to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, meaning no parameter descriptions are provided. The tool description does not explain the two parameters ('targetPath', 'content') beyond their names, failing to add value or clarify their meaning. For example, it does not specify that 'targetPath' expects an absolute or relative path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to create or overwrite a text file. The verb 'cria ou sobrescreve' (creates or overwrites) combined with 'arquivo de texto' (text file) provides a specific action and resource, distinguishing it from sibling tools like append_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool (to create or overwrite a text file). However, it does not explicitly state when not to use it or mention alternatives, such as using append_file for appending content. The guidance is clear but lacks exclusion details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
15 tool updates
v1.0.0- First observed
append_file - First observed
create_directory - First observed
delete_path - First observed
get_file_info - First observed
list_directory - First observed
list_processes - First observed
move_path - First observed
ps - First observed
read_file - First observed
read_process - First observed
screenshot_url - First observed
search_names - First observed
start_ps - First observed
stop_process - First observed
write_file
TDQS
Scored across 15 tools
Most tools have distinct purposes, but ps and start_ps could cause confusion as both execute PowerShell commands. Additionally, append_file and write_file are clearly different (append vs overwrite). Overall, only minor overlap exists.
The majority of tools follow a consistent verb_noun pattern (e.g., create_directory, delete_path). Exceptions are ps (abbreviated) and screenshot_url (uppercase URL), but these are minor deviations from an otherwise consistent naming scheme.
15 tools is appropriate for a PC development server covering file operations, process management, and screenshots. It is slightly above the typical 3-15 range but still well-scoped and not overwhelming.
The tool set covers basic file CRUD (create, read, write, append, delete, move, list) and process lifecycle (start, stop, read output, list). However, notable gaps include a missing copy tool and lack of partial file update functionality, limiting completeness for development tasks.
Maintenance
Related MCP Connectors
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Authenticated MCP Agent (Openai)
Remote MCP server to read and manage your Atako AI agents, messages, files, and integrations.
Egnyte's remote MCP server for secure AI access, search, upload and file management in your account.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables ChatGPT/Codex to read, search, and edit files in a single allowed folder on Windows through OpenAI Secure MCP Tunnel.ISC
- AlicenseAqualityBmaintenanceEnables AI assistants to control Windows PCs by executing shell commands, managing files, capturing screenshots, and monitoring system information through a comprehensive set of MCP tools.18MIT
- AlicenseAqualityAmaintenanceEnables a private ChatGPT app to remotely control a Windows PC through file operations, PowerShell, screenshots, mouse and keyboard input, clipboard, and Chrome browser automation.211MIT
- AlicenseAqualityAmaintenanceMCP server that lets a private ChatGPT app remotely control a paired Windows PC, including files, PowerShell, programs, screenshots, mouse/keyboard, clipboard, and Chrome.213MIT