DeskMCP
Gateway de políticas MCP de código aberto para Windows, que permite acesso controlado do ChatGPT a arquivos locais e sessões de terminal, com permissões limitadas ao workspace, gravações protegidas, processos de propriedade da sessão e registro de auditoria.
Documentação
DeskMCP
DeskMCP é um gateway de políticas MCP local-first de código aberto que dá ao ChatGPT acesso controlado a arquivos locais e sessões de terminal. Ele executa a aplicação de políticas no seu computador, expõe uma superfície de ferramentas MCP estável e conecta-se através de um OpenAI Tunnel, mantendo o endpoint MCP local vinculado a 127.0.0.1.
O perfil padrão é Somente leitura. O acesso ao sistema de arquivos é limitado a um workspace que você escolhe localmente, caminhos sensíveis são excluídos antes da busca e capacidades elevadas de processo são de propriedade da sessão, em vez de controle arbitrário de PID.
Projeto pessoal de código aberto por edmen12.
Por que DeskMCP?
| Local-first | O Gateway e a aplicação de políticas são executados no seu computador. |
| Escopo de workspace | Perfis seguros mantêm as ferramentas de arquivo dentro da pasta que você seleciona explicitamente. |
| Seguro por padrão | A primeira execução inicia no modo Somente leitura; Controle total e Totalmente desbloqueado nunca são persistidos. |
| Fácil de instalar | O Setup autônomo não requer Node.js, npm, .NET, Git ou um checkout do código-fonte. |
Prévia do produto
O Painel de controle na bandeja mostra a saúde do Gateway/Tunnel, o perfil de permissão ativo, o workspace selecionado, as configurações de inicialização do Windows e a configuração do Tunnel sem expor segredos.
Início rápido no Windows
- Baixe o
DeskMCP-Setup-<version>.exedo último GitHub Release e execute-o. - Escolha o workspace ao qual o DeskMCP pode acessar.
- No OpenAI Platform, crie um Tunnel e copie o Tunnel ID e a Runtime API Key para a Primeira execução.
- No ChatGPT, abra Plugins → Novo plugin.
- Use Nome: DeskMCP, Conexão: Tunnel, Autenticação: Sem autenticação.
- Selecione o Tunnel, marque Eu entendo e quero continuar e depois Escanear ferramentas.
Resultado esperado: 13 ferramentas DeskMCP.
A Runtime API Key é protegida com DPAPI do Windows e não é gravada em settings.json. As gravações de segredos são verificadas por leitura imediata do DPAPI; as configurações usam substituição atômica com backup recuperável. Você pode pular a configuração do Tunnel durante a Primeira execução e configurá-lo mais tarde.
Arquitetura
ChatGPT
↕ OpenAI Tunnel
DeskMCP Gateway (127.0.0.1:8765)
↕ local policy enforcement
Desktop Commander
↳ selected workspace
↳ Gateway-owned process sessions
O Tunnel fornece o transporte remoto. A decisão de política ainda acontece localmente antes que uma ação de sistema de arquivos ou processo seja encaminhada ao Desktop Commander.
Perfis de permissão
- Leitura — padrão; operações de leitura, listagem, metadados e busca limitada apenas dentro do Workspace selecionado.
- Gravação — adiciona operações protegidas de criar/editar/gravar/mover dentro do Workspace selecionado.
- Total — somente sessão; mantém o limite do sistema de arquivos do Workspace e adiciona sessões de terminal/processo que são executadas com as permissões atuais do usuário do Windows.
- Desbloquear (
fully-unlocked) — somente sessão; desativa os limites de gravação do Workspace, caminhos sensíveis e observação recente do DeskMCP. As ferramentas de sistema de arquivos e comandos de terminal podem alcançar qualquer coisa que a conta atual do Windows tenha permissão para acessar.
Full e Unlock nunca são persistidos. Reiniciar o DeskMCP retorna ao último perfil seguro persistido: Leitura ou Gravação. O Desbloqueio não contorna ACL/UAC do Windows ou qualquer política de segurança do cliente remoto; ele apenas remove os limites locais do sandbox do próprio DeskMCP.
Superfície de ferramentas
O DeskMCP atualmente expõe uma superfície MCP estável de 13 ferramentas:
desktop_policy_status
desktop_read_file
desktop_list_directory
desktop_get_file_info
desktop_search
desktop_create_directory
desktop_write_file
desktop_edit_file
desktop_move_file
desktop_start_process
desktop_read_process
desktop_interact_process
desktop_terminate_process
Os esquemas permanecem detectáveis em todos os perfis para que a conexão remota permaneça estável. Detectável não significa permitido: toda invocação ainda é verificada pela política local do DeskMCP antes de poder ser executada.
Modelo de segurança
- O HTTP do Gateway vincula-se apenas a
127.0.0.1:8765. - Nos modos Leitura, Gravação e Total, o acesso permitido ao sistema de arquivos é restrito ao Workspace selecionado localmente e verificações de caminho lexical/canônico bloqueiam escapes de symlink/junction.
- Caminhos sensíveis como
.env,.npmrc,.pypirc,.netrc,.ssh,.gnupge.aws/credentialssão negados por padrão, e a busca os exclui antes que o Desktop Commander/ripgrep leia candidatos. - Nos modos Leitura/Gravação/Total,
desktop_read_fileemite umobservation_idopaco de uso único. Editar, mover ou sobrescrever um arquivo existente deve apresentar a capacidade recente correspondente; as capacidades são vinculadas a caminho/versão, de uso único, limitadas a 1024 entradas, e mutações no mesmo caminho são serializadas para que agentes concorrentes não possam sobrescrever uns aos outros silenciosamente a partir da mesma versão observada. - O Desbloqueio desativa intencionalmente essas três proteções de sistema de arquivos do DeskMCP para a sessão atual. A auditoria permanece habilitada e as permissões da conta do Windows permanecem como o limite local final.
- As ferramentas de processo usam IDs de sessão opacos de propriedade do Gateway em vez de expor controle arbitrário de PID do Windows. A capacidade conta sessões ativas mais reservas de início em andamento, de modo que não mais de 32 sessões de propriedade podem estar ativas/iniciando ao mesmo tempo. O próprio
list_sessionsdo Desktop Commander é a fonte de verdade da sessão ativa (em vez de suposições de atividade do PID do SO); capacidades de sessão concluídas permanecem legíveis em um histórico limitado, qualquer reutilização posterior do mesmo PID do SO invalida capacidades mais antigas para esse PID, e o desligamento do Gateway limpa sessões ativas de propriedade. - A auditoria registra apenas metadados; ela não registra conteúdo de arquivos, entrada/saída de terminal, cabeçalhos de Authorization, chaves de API ou PIDs reais de processos. As gravações são serializadas e giram em 10 MB com quatro backups limitados.
Relatórios de segurança devem usar GitHub Private vulnerability reporting, não uma issue pública.
Os dados do usuário ficam em:
%APPDATA%\DesktopMCP\settings.json
%LOCALAPPDATA%\DesktopMCP\secrets\tunnel-runtime-key.dpapi
%LOCALAPPDATA%\DesktopMCP\logs\audit.jsonl
%LOCALAPPDATA%\DesktopMCP\workspace\
Esses caminhos internos retêm intencionalmente DesktopMCP para compatibilidade de atualização, mesmo que o nome público do produto seja DeskMCP.
Comportamento da bandeja
- Sair do Painel de controle (Manter serviços em execução) fecha apenas a interface.
- Sair do DeskMCP interrompe o Gateway e qualquer processo de Tunnel de propriedade deste Painel e, em seguida, fecha a interface.
- Processos de Tunnel gerenciados externamente não são encerrados pelo DeskMCP.
A desinstalação remove os arquivos do programa. Configurações, segredos, logs e o Workspace padrão são mantidos, a menos que o usuário escolha explicitamente limpar os dados do usuário.
Fluxo de trabalho do desenvolvedor
Os requisitos do usuário final e os requisitos de desenvolvimento do código-fonte são intencionalmente separados.
npm.cmd ci --ignore-scripts
npm.cmd test
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\control-panel\wpf\validate.ps1
Para desenvolvimento local, control-panel\wpf\launch.cmd compila o Gateway e o Painel de controle .NET 10 e, em seguida, inicia a compilação de desenvolvimento atual.
Compile o release completo do Windows com:
scripts\build-installer.cmd
O pipeline de release executa a compilação do Gateway, publicação WPF autônoma, instalação de dependências somente de produção, inventário/geração de avisos de licenças de terceiros, smoke de estágio, validação de 13 ferramentas, validação de instância única, verificações de órfãos/bloqueios, compilação do Setup de marca, geração de integridade SHA-256 de arquivos críticos, rollback de falha injetada, recuperação de instalação corrompida/interrompida, smoke de instalação → atualização → execução → desinstalação e geração de metadados finais do release.
Os artefatos gerados ficam em runtime\release\ ignorado e devem ser anexados aos GitHub Releases em vez de serem commitados.
Verificação de release
Uma compilação de release concluída grava SHA256SUMS.txt e release-manifest.json ao lado do instalador final.
Get-FileHash .\runtime\release\DeskMCP-Setup-<version>.exe -Algorithm SHA256
Compare o resultado com SHA256SUMS.txt antes de executar uma compilação não assinada.
Política de assinatura de código
O DeskMCP enviou sua aplicação ao programa de assinatura de código aberto da SignPath Foundation e está aguardando aprovação do projeto. Consulte CODE_SIGNING_POLICY.md para as funções de assinatura, regras de proveniência, política de aprovação e modelo de pin do editor.
Aprovação de projeto pendente: Assinatura de código gratuita fornecida por SignPath.io, certificado pela SignPath Foundation. Nenhum release é representado como assinado pela SignPath até que carregue uma assinatura válida do fluxo de trabalho de assinatura aprovado.
Privacidade e comportamento de rede são documentados em PRIVACY.md.
Limitações atuais
- O DeskMCP 0.9.2 inclui artefatos de release separados para Windows x64 nativo e Windows ARM64 nativo. Ambas as arquiteturas passam na cadeia completa de validação de estágio de release, instalação, atualização, rollback/recuperação, execução e desinstalação; os artefatos do Windows permanecem não assinados enquanto a aplicação à SignPath Foundation está pendente.
- Um cliente de menu-bar macOS ARM64 nativo, estágio de release e artefato de Developer Preview para download passam no CI do Apple Silicon. A prévia é assinada ad-hoc e não notarizada; um release macOS para usuários gerais ainda requer assinatura de Developer ID e notarização. Consulte macOS Developer Preview.
- As configurações agora implementam o fluxo de atualização segura controlado pelo usuário por meio de verificações de release de repositório fixo, metadados imutáveis, verificação local de SHA-256/tamanho, verificação opcional de editor Authenticode, Atualizar agora com um clique e verificação de versão/perfil pós-instalação. Releases não assinados podem usar esse caminho de atualização verificado após os portões de integridade passarem; assinaturas inválidas ou incompatibilidades de pin do editor configurado são bloqueadas. O cliente 0.9.2 já publicado ainda contém o portão rígido mais antigo, então o primeiro release que carrega este novo atualizador é uma transição manual única de instalador; releases imutáveis elegíveis subsequentes podem usar o caminho de um clique.
- O Setup do Windows de código aberto pode ser distribuído não assinado; o Windows ainda pode mostrar avisos de Editor desconhecido / SmartScreen até que uma identidade de assinatura de release seja configurada.
- Algumas dependências transitivas do npm emitem avisos de depreciação, mesmo que o
npm auditde produção atual relate zero vulnerabilidades.
Roadmap
O trabalho atual e pós-0.9.2 é rastreado publicamente com critérios de aceitação explícitos:
- 🚧 #5 — Validação de ponta a ponta para novo usuário do Windows — ainda requer uma passagem de instalação/inicialização/Primeira execução/desinstalação com usuário limpo fora da conta de desenvolvimento.
- 🚧 #6 — Assinatura Authenticode opcional — a aprovação da SignPath Foundation, a primeira verificação de artefato assinado e o pin do editor de produção permanecem pendentes.
- ✅ #7 — Empacotamento e validação do Windows ARM64 — pipeline de runtime/instalador ciente do alvo e validação de cadeia completa do Windows ARM64 nativo passam tanto no branch de recurso quanto no commit mesclado principal; issue fechada.
- ✅ #8 — Mecanismo de atualização segura — validação de confiança, download verificado, rollback/recuperação, preservação de perfil, tratamento de falhas e fallback manual são implementados; issue fechada. A assinatura de produção permanece rastreada pela #6.
- ✅ #9 — Variância de cold-start do Desktop Commander — perfilada, atribuída à variância de inicialização upstream, exibida com diagnósticos de inicialização e fechada.
- 🚧 #10 — Interface de atualização controlada pelo usuário — o caminho de atualização verificado com um clique é implementado; o Authenticode de produção permanece um aprimoramento opcional de identidade do editor rastreado separadamente da disponibilidade básica do atualizador.
Apoie o DeskMCP
O DeskMCP é gratuito e de código aberto. Se ele economizar seu tempo e você quiser apoiar a manutenção contínua, você pode patrocinar o projeto por meio do GitHub Sponsors assim que o perfil de edmen12 Sponsors for aprovado.
O patrocínio é totalmente opcional e nunca altera o acesso ao DeskMCP, a disponibilidade de recursos, o tratamento de segurança ou a prioridade de suporte. O botão de financiamento do repositório está configurado em .github/FUNDING.yml.
Suporte
Comece com docs/TROUBLESHOOTING.md. Para bugs reproduzíveis, solicitações de recursos e relatórios de segurança privados, consulte SUPPORT.md. Nunca poste chaves de runtime do Tunnel, chaves de API ou conteúdo privado de arquivos em uma issue pública.
Arquivos do projeto
SUPPORT.md— canais de suporte e orientação para relatosSECURITY.md— relato de vulnerabilidades e limites de segurança- PRIVACY.md — dados locais e comportamento de rede controlado pelo usuário
- CODE_SIGNING_POLICY.md — funções do SignPath, proveniência de build, aprovação e política de fixação do editor
CONTRIBUTING.md— fluxo de contribuiçãoCHANGELOG.md— mudanças no projetoRELEASE_CHECKLIST.md— QA de lançamentoTHIRD_PARTY_NOTICES.md— licenciamento de dependências empacotadasdocs/USER_GUIDE.md— guia ilustrado de instalação e usodocs/MACOS_DEVELOPER_PREVIEW.md— download da Developer Preview para Apple Silicon, checksum e orientações sobre Gatekeeperdocs/TROUBLESHOOTING.md— caminhos comuns de configuração e recuperaçãodocs/UPDATE_SECURITY.md— modelo de confiança de atualização, portões de execução e contrato de reversão/recuperação- docs/SIGNPATH_APPLICATION.md — status da aplicação da Fundação SignPath e plano de integração pós-aprovação
docs/BRAND.md— identidade visual e regras de marca do DeskMCP
Licença
O DeskMCP é licenciado sob a Apache License 2.0. Consulte LICENSE.
Componentes de terceiros mantêm suas próprias licenças; consulte THIRD_PARTY_NOTICES.md e os arquivos de licença incluídos no lançamento.
Construído como um projeto pessoal de código aberto por edmen12.