macOS Remote Control

Um servidor Python para controle remoto de macOS via VNC, com uma interface web de chat alimentada por IA.

Documentação

Servidor MCP de Controle Remoto macOS + Aplicativo Web de Chat com IA

O primeiro servidor MCP de código aberto que permite à IA controlar totalmente sistemas macOS remotos, agora com uma interface web de chat.

Este projeto fornece ambos:

  1. Servidor MCP - Servidor baseado em Python para controle remoto de macOS via VNC
  2. Aplicativo Web de Chat com IA - Interface web moderna para conversar com a IA e controlar seu Mac

🚀 Início Rápido para o Aplicativo Web

Pré-requisitos

  • Docker Desktop instalado
  • Node.js 18+ instalado
  • Um Mac com Compartilhamento de Tela ativado (pode ser a mesma máquina)

1. Clonar e Configurar

git clone <repository-url>
cd mcp_macos

# Install root dependencies
npm install

# Install frontend and backend dependencies
npm run install:all

2. Configurar o Ambiente

# Copy example environment file
cp backend/.env.example backend/.env

# Edit backend/.env with your settings:
# - MACOS_HOST=localhost (for local control)
# - MACOS_PASSWORD=your_vnc_password
# - OPENAI_API_KEY=your_openai_api_key

3. Ativar o Compartilhamento de Tela (macOS)

  1. Abra Preferências do Sistema > Compartilhamento
  2. Ative "Compartilhamento de Tela"
  3. Defina uma senha VNC quando solicitado

4. Executar o Aplicativo

# Start both frontend and backend
npm run dev

# Or start individually:
npm run dev:frontend  # Frontend on http://localhost:3000
npm run dev:backend   # Backend on http://localhost:3001

5. Abrir e Conversar!

  1. Abra http://localhost:3000 no seu navegador
  2. Aguarde a conexão ser estabelecida
  3. Experimente comandos como:
    • "Tirar uma captura de tela"
    • "Abrir o Safari"
    • "Clicar no Dock"
    • "Digitar olá mundo"

📁 Estrutura do Projeto

mcp_macos/
├── frontend/           # Next.js React frontend
│   ├── src/
│   │   ├── components/ # Chat interface components
│   │   ├── hooks/      # Socket.IO and state management
│   │   ├── stores/     # Zustand state stores
│   │   └── types/      # TypeScript definitions
├── backend/            # Node.js Express backend
│   ├── src/
│   │   ├── services/   # MCP client, LLM service, chat service
│   │   ├── config/     # Environment configuration
│   │   └── utils/      # Logging and utilities
└── src/               # Original Python MCP server
    ├── mcp_remote_macos_use/
    ├── action_handlers.py
    └── vnc_client.py

🔧 Comandos de Desenvolvimento

# Development
npm run dev              # Start both frontend and backend
npm run dev:frontend     # Start only frontend
npm run dev:backend      # Start only backend

# Building
npm run build            # Build both
npm run build:frontend   # Build frontend only
npm run build:backend    # Build backend only

# Testing
npm run test             # Run all tests

🎯 Arquitetura

Browser ←→ Frontend (Next.js) ←→ Backend (Node.js) ←→ MCP Server (Python) ←→ macOS
         WebSocket/HTTP        Socket.IO/REST      Docker/stdio         VNC

🛠️ Como Funciona

  1. Frontend: Aplicativo React moderno com interface de chat em tempo real
  2. Backend: Servidor Express.js com Socket.IO para comunicação em tempo real
  3. Integração com LLM: OpenAI GPT-4 para compreensão de linguagem natural
  4. Cliente MCP: Comunica-se com o servidor MCP Python via Docker
  5. Controle macOS: Controle baseado em VNC de Macs locais ou remotos

🎮 Exemplos de Interações

You: "Take a screenshot"
AI: "Here's a screenshot of your Mac desktop:" [shows image]

You: "Click on Safari in the dock"
AI: "I'll click on Safari in the dock for you" [clicks Safari]

You: "Open a new tab and go to apple.com"
AI: "Opening a new tab and navigating to apple.com" [executes commands]

🔒 Notas de Segurança

  • Use apenas com Macs que você possui ou tem permissão explícita para controlar
  • Senhas VNC são transmitidas de forma segura
  • Chaves de API do LLM são armazenadas apenas no lado do servidor
  • Todas as ações são registradas para depuração

📚 Documentação Original do Servidor MCP

A funcionalidade original do servidor MCP Python permanece totalmente intacta. Veja abaixo a documentação original sobre como usá-lo diretamente com o Claude Desktop.


Documentação Original do Servidor MCP

O primeiro servidor MCP de código aberto que permite à IA controlar totalmente sistemas macOS remotos.

Uma alternativa direta ao OpenAI Operator, otimizada especificamente para agentes de IA autônomos com capacidades completas de desktop, sem exigir instalação de software adicional.

Docker Pulls License: MIT

Demonstrações

  • Pesquisar no Twitter e Publicar no Twitter(https://www.youtube.com/watch?v=--QHz2jcvcs)

    image
  • Usar CapCut para criar vídeo curto de destaques(https://www.youtube.com/watch?v=RKAqiNoU8ec)

    image
  • Recrutador de IA: Coleta automatizada de informações de candidatos, qualificação de inscrições e envio de sessões de triagem usando o aplicativo Mail

  • Estagiário de Marketing de IA: Engajamento no LinkedIn - seguir, curtir e comentar automaticamente com usuários relevantes

  • Estagiário de Marketing de IA: Engajamento no Twitter - seguir, curtir e comentar automaticamente com usuários relevantes

Lista de Tarefas (Priorizada)

  1. Otimização de Desempenho - Igualar a velocidade das alternativas de desktop Ubuntu
  2. Geração de Apple Scripts - Reduzir o tempo de execução mantendo a flexibilidade
  3. Visibilidade do Cursor VNC - Melhorar a experiência de depuração e demonstração

Aceitamos contribuições!

Recursos

  • Sem Custos Adicionais de API: Processamento de tela gratuito com seu plano Claude Pro existente
  • Configuração Mínima: Basta ativar o Compartilhamento de Tela no Mac de destino – nenhum software adicional é necessário
  • Compatibilidade Universal: Funciona com todas as versões do macOS, atuais e futuras

Por Que Construímos Isso

Experiência macOS Nativa Sem Compromissos

O ecossistema nativo do macOS permanece incomparável em experiência do usuário hoje e continuará sendo o padrão ouro por muitos anos. É onde as capacidades humanas realmente prosperam, e agora sua IA pode operar neste ambiente com a mesma fluência.

Arquitetura Aberta por Design

  • Compatibilidade Universal com LLM: Funcione com qualquer Cliente MCP de sua escolha
  • Flexibilidade de Modelo: Integre-se perfeitamente com OpenAI, Anthropic ou qualquer outro provedor de LLM
  • Integração à Prova do Futuro: Projetado para evoluir com o ecossistema MCP

Implantação Sem Esforço

  • Zero Configuração nas Máquinas de Destino: Sem aplicativos em segundo plano ou agentes necessários no macOS
  • Compartilhamento de Tela é Tudo que Você Precisa: Controle qualquer Mac com Compartilhamento de Tela ativado
  • Elimine a Complexidade do Backend: Diferente de outras soluções que exigem executar aplicativos Python ou serviços em segundo plano

Processo de Inicialização Simplificado

  • Aproveite a Interface Polida do Claude Desktop: Sem necessidade de interfaces Python estilo desenvolvedor
  • Experiência de Usuário Intuitiva: Interaja com seu Mac controlado por IA através de uma interface familiar e amigável
  • Produtividade Imediata: Comece a trabalhar imediatamente sem complicações de configuração

Arquitetura

remote_macos_use_system_architecture

Instalação

{
  "mcpServers": {
    "remote-macos-use": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-e",
        "MACOS_USERNAME=your_macos_username",
        "-e",
        "MACOS_PASSWORD=your_macos_password",
        "-e",
        "MACOS_HOST=your_macos_hostname_or_ip",
        "--rm",
        "buryhuang/mcp-remote-macos-use:latest"
      ]
    }
  }
}

Suporte WebRTC via LiveKit

Este servidor agora inclui suporte WebRTC através da integração com LiveKit, permitindo:

  • Compartilhamento de tela em tempo real com baixa latência
  • Desempenho e capacidade de resposta melhorados
  • Melhor eficiência de rede comparado ao VNC tradicional
  • Adaptação automática de qualidade com base nas condições da rede

Para usar os recursos WebRTC, você precisará:

  1. Configurar um servidor LiveKit ou usar o LiveKit Cloud
  2. Configurar as variáveis de ambiente do LiveKit conforme mostrado no exemplo de configuração acima

Instruções para Desenvolvedores

Clonar o repositório

# Clone the repository
git clone https://github.com/yourusername/mcp-remote-macos-use.git
cd mcp-remote-macos-use

Construindo a Imagem Docker

# Build the Docker image
docker build -t mcp-remote-macos-use .

Publicação Multi-Plataforma

Para publicar a imagem Docker para múltiplas plataformas, você pode usar o comando docker buildx. Siga estes passos:

  1. Criar uma nova instância de builder (se ainda não tiver):

    docker buildx create --use
    
  2. Construir e enviar a imagem para múltiplas plataformas:

    docker buildx build --platform linux/amd64,linux/arm64 -t buryhuang/mcp-remote-macos-use:latest --push .
    
  3. Verificar se a imagem está disponível para as plataformas especificadas:

    docker buildx imagetools inspect buryhuang/mcp-remote-macos-use:latest
    

Uso

O servidor fornece funcionalidade de macOS Remoto através de ferramentas MCP.

Especificações das Ferramentas

O servidor fornece as seguintes ferramentas para controle remoto de macOS:

remote_macos_get_screen

Conecta a uma máquina macOS remota e obtém uma captura de tela da área de trabalho remota. Usa variáveis de ambiente para detalhes de conexão.

remote_macos_send_keys

Envia entrada de teclado para uma máquina macOS remota. Usa variáveis de ambiente para detalhes de conexão.

remote_macos_mouse_move

Move o cursor do mouse para coordenadas especificadas em uma máquina macOS remota, com dimensionamento automático de coordenadas. Usa variáveis de ambiente para detalhes de conexão.

remote_macos_mouse_click

Realiza um clique do mouse em coordenadas especificadas em uma máquina macOS remota, com dimensionamento automático de coordenadas. Usa variáveis de ambiente para detalhes de conexão.

remote_macos_mouse_double_click

Realiza um clique duplo do mouse em coordenadas especificadas em uma máquina macOS remota, com dimensionamento automático de coordenadas. Usa variáveis de ambiente para detalhes de conexão.

remote_macos_mouse_scroll

Realiza uma rolagem do mouse em coordenadas especificadas em uma máquina macOS remota, com dimensionamento automático de coordenadas. Usa variáveis de ambiente para detalhes de conexão.

remote_macos_open_application

Abre/ativa um aplicativo e retorna seu PID para interações adicionais.

remote_macos_mouse_drag_n_drop

Realiza uma operação de arrastar do ponto inicial e soltar no ponto final em uma máquina macOS remota, com dimensionamento automático de coordenadas.

Todas as ferramentas usam as variáveis de ambiente configuradas durante a instalação em vez de exigir parâmetros de conexão.

Limitações

  • Suporte de Autenticação:
    • Apenas Autenticação Apple (protocolo 30) é suportada

Nota de Segurança

https://support.apple.com/guide/remote-desktop/encrypt-network-data-apdfe8e386b/mac https://cafbit.com/post/apple_remote_desktop_quirks/

Suportamos apenas o protocolo 30, que usa o protocolo de acordo de chave Diffie-Hellman com um primo de 512 bits. Este protocolo é usado pelo macOS 11 ao macOS 12 ao se comunicar com clientes OS X 10.11 ou anteriores.

Aqui estão as informações convertidas em uma tabela markdown:

Versão do macOS executando o Remote DesktopVersão do cliente macOSAutenticaçãoControle e ObservaçãoCopiar itens ou instalar pacoteTodas as outras tarefasVersão do Protocolo
macOS 13macOS 13Chaves de host RSA de 2048 bitsChaves de host RSA de 2048 bitsChaves de host RSA de 2048 bits para autenticar, depois AES de 128 bitsChaves de host RSA de 2048 bits36
macOS 13macOS 10.12Protocolo Secure Remote Password (SRP) apenas para local. Diffie-Hellman (DH) se vinculado a LDAP ou servidor macOS versão 10.11 ou anteriorSRP ou DH, AES de 128 bitsSRP ou DH para autenticar, depois AES de 128 bitsChaves de host RSA de 2048 bits35
macOS 11 ao macOS 12macOS 10.12 ao macOS 13Protocolo Secure Remote Password (SRP) apenas para local, Diffie-Hellman se vinculado a LDAPSRP ou DH de 1024 bits, AES de 128 bitsChaves de host RSA de 2048 bits macOS 13 ao macOS 10.13Chaves de host RSA de 2048 bits macOS 10.13 ou posterior33
macOS 11 ao macOS 12OS X 10.11 ou anteriorDH de 1024 bitsDH de 1024 bits, AES de 128 bitsProtocolo de acordo de chave Diffie-Hellman com um primo de 512 bitsProtocolo de acordo de chave Diffie-Hellman com um primo de 512 bits30

Sempre use conexões seguras e autenticadas ao acessar máquinas macOS remotas. Esta ferramenta deve ser usada apenas com servidores em que você confia e tem permissão para acessar.

Licença

Consulte o arquivo LICENSE para detalhes.