MCP Chat Desktop App

Um aplicativo de desktop multiplataforma para interagir com diversos Modelos de Linguagem de Grande Escala (LLMs) através do Protocolo de Contexto de Modelo (MCP).

Documentação

MCP Chat Desktop App

Uma Interface Multiplataforma para LLMs

Este aplicativo de desktop utiliza o MCP (Model Context Protocol) para conectar e interagir perfeitamente com vários Modelos de Linguagem de Grande Porte (LLMs). Construído com Electron, o aplicativo garante total compatibilidade multiplataforma, permitindo operação suave em diferentes sistemas operacionais.

O objetivo principal deste projeto é entregar uma base de código limpa e minimalista que simplifica a compreensão dos princípios fundamentais do MCP. Além disso, fornece uma maneira rápida e eficiente de testar múltiplos servidores e LLMs, tornando-o uma ferramenta ideal para desenvolvedores e pesquisadores.

Novidades

Este projeto originou-se como uma versão modificada do Chat-UI, adotando inicialmente uma abordagem de código minimalista para implementar a funcionalidade central do MCP para fins educacionais.

Através de atualizações iterativas do MCP, recebi feedback da comunidade defendendo uma arquitetura completamente nova — uma que elimina dependências de CDN de terceiros e estabelece uma estrutura modular mais clara para melhor suportar desenvolvimento derivado e fluxos de trabalho de depuração.

Isso levou à criação do Tool Unitary User Interface, um aplicativo de desktop reestruturado e otimizado para desenvolvimento com IA. Baseando-se na fundação original, o TUUI serve como um paradigma prático de desenvolvimento assistido por IA; se você estiver interessado, também pode aproveitar a IA para desenvolver novos recursos para o TUUI. A plataforma emprega um sistema rigoroso de linting e formatação para garantir que o código gerado por IA esteja em conformidade com os padrões de codificação.

📢 Atualização: Junho de 2025
A refatoração atual do projeto foi amplamente concluída, e uma versão de pré-lançamento já está disponível. Consulte a seguinte documentação para detalhes:

Recursos

  • Compatibilidade Multiplataforma: Suporta Linux, macOS e Windows.

  • Licença Apache-2.0 Flexível: Permite fácil modificação e construção dos seus próprios aplicativos de desktop.

  • Configuração Dinâmica de LLM: Compatível com todos os LLMs suportados pelo SDK da OpenAI, permitindo testes rápidos de múltiplos backends através de configurações manuais ou predefinidas.

  • Gerenciamento Multi-Client: Configure e gerencie múltiplos clientes para conectar a múltiplos servidores usando a configuração do MCP.

  • Adaptabilidade da UI: A UI pode ser diretamente extraída para uso na web, garantindo ecossistema e lógica de interação consistentes entre as versões web e desktop.

Arquitetura

Adotou uma arquitetura direta e consistente com a documentação do MCP para facilitar uma compreensão clara dos princípios do MCP:

DeepWiki

Como usar

Após clonar ou baixar este repositório:

  1. Por favor, modifique o arquivo config.json localizado em src/main.
    Certifique-se de que o command e o path especificados no args sejam válidos.

  2. Certifique-se de que o Node.js esteja instalado no seu sistema.
    Você pode verificar isso executando node -v e npm -v no seu terminal para verificar as respectivas versões.

  3. npm install

  4. npm start

Configuração

Crie um arquivo .json e cole o seguinte conteúdo nele. Este arquivo pode então ser fornecido como a configuração de interface para o Chat UI.

  • gtp-api.json

    {
        "chatbotStore": {
            "apiKey": "",
            "url": "https://api.aiql.com",
            "path": "/v1/chat/completions",
            "model": "gpt-4o-mini",
            "max_tokens_value": "",
            "mcp": true
        },
        "defaultChoiceStore": {
            "model": [
                "gpt-4o-mini",
                "gpt-4o",
                "gpt-4",
                "gpt-4-turbo"
            ]
        }
    }
    

Você pode substituir a 'url' se tiver acesso direto à API da OpenAI.

Alternativamente, você também pode usar outro endpoint de API que suporte chamadas de função:

  • qwen-api.json

    {
        "chatbotStore": {
            "apiKey": "",
            "url": "https://dashscope.aliyuncs.com/compatible-mode",
            "path": "/v1/chat/completions",
            "model": "qwen-turbo",
            "max_tokens_value": "",
            "mcp": true
        },
        "defaultChoiceStore": {
            "model": [
                "qwen-turbo",
                "qwen-plus",
                "qwen-max"
            ]
        }
    }
    
  • deepinfra.json

    {
        "chatbotStore": {
            "apiKey": "",
            "url": "https://api.deepinfra.com",
            "path": "/v1/openai/chat/completions",
            "model": "meta-llama/Meta-Llama-3.1-70B-Instruct",
            "max_tokens_value": "32000",
            "mcp": true
        },
        "defaultChoiceStore": {
            "model": [
                "meta-llama/Meta-Llama-3.1-70B-Instruct",
                "meta-llama/Meta-Llama-3.1-405B-Instruct",
                "meta-llama/Meta-Llama-3.1-8B-Instruct"
            ]
        }
    }
    

Compilar o Aplicativo

Você pode compilar seu próprio aplicativo de desktop com:

npm run build-app

Este CLI ajuda você a compilar e empacotar seu aplicativo para o seu sistema operacional atual, com artefatos armazenados no diretório /artifacts.

Para usuários Debian/Ubuntu que enfrentam problemas de compilação RPM, tente uma das seguintes soluções:

  • Edite o package.json para pular a etapa de compilação RPM. Ou

  • Instale o rpm usando sudo apt-get install rpm (Você pode precisar executar sudo apt update para garantir que sua lista de pacotes esteja atualizada)

Solução de Problemas

Erro: spawn npx ENOENT - ISSUE 40

Modifique o config.json em src/main

No Windows, o npx pode não funcionar; consulte minha solução alternativa: ISSUE 101

  • Ou você pode usar node no config.json:
    {
        "mcpServers": {
            "filesystem": {
            "command": "node",
            "args": [
                "node_modules/@modelcontextprotocol/server-filesystem/dist/index.js",
                "D:/Github/mcp-test"
            ]
            }
        }
    }
    

Certifique-se de que o caminho fornecido seja válido, especialmente se você estiver usando um caminho relativo. É altamente recomendável fornecer um caminho absoluto para maior clareza e precisão.

Por padrão, instalarei server-everything, server-filesystem e server-puppeteer para fins de teste. No entanto, você pode instalar bibliotecas de servidor adicionais ou usar npx para utilizar outras bibliotecas de servidor conforme necessário.

Tempo limite de instalação

Geralmente, após executar npm install para todo o projeto, o tamanho total dos arquivos no diretório node_modules normalmente excede 500MB.

Se o processo de instalação travar com menos de 300MB e a barra de progresso permanecer estática, provavelmente é devido a um tempo limite durante a instalação da parte final, especificamente o Electron.

Esse problema geralmente surge porque a velocidade de download do servidor padrão do Electron é excessivamente lenta ou até inacessível em certas regiões. Para resolver isso, você pode modificar a variável de ambiente ou global ELECTRON_MIRROR para alternar para um site espelho do Electron que seja acessível da sua localização.

Tempo limite do electron-builder

Ao usar o electron-builder para empacotar arquivos, ele baixa automaticamente vários pacotes de lançamento grandes do GitHub. Se a conexão de rede estiver instável, esse processo pode ser interrompido ou atingir o tempo limite.

No Windows, você pode precisar limpar o cache localizado nos diretórios electron e electron-builder dentro de C:\Users\YOURUSERNAME\AppData\Local antes de tentar novamente.

Devido a possíveis problemas de permissão do terminal, é recomendável usar o terminal shell padrão em vez do terminal integrado do VSCode.

Demo

Suporte Multimodal

Suporte a Raciocínio e LaTeX

Visualização de Ferramentas MCP

Visão Geral do Processo de Chamada de Ferramentas MCP

Modelo de Prompts MCP

Configuração Dinâmica de LLM

Solução de Problemas do DevTool