Unified Diff MCP Server
Visualização de diferenças em HTML e PNG usando diff2html, projetada para saída de dry-run do edit_file do sistema de arquivos com runtime Bun de alto desempenho.
Documentação
Servidor MCP de Diff Unificado
Visualização de diffs bonita para o Claude Desktop. Transforme diffs de código em comparações visuais impressionantes com integração com GitHub Gist e saída para arquivo local.
✨ Recursos
- 🎨 Visualização de diff HTML bonita usando diff2html
- 🌐 Integração com GitHub Gist para compartilhamento instantâneo
- 📁 Saída para arquivo local (PNG/HTML)
- 🔄 Funcionalidade de exclusão automática para diffs temporários
- 🖥️ Suporte multiplataforma (Windows, macOS, Linux)
- ⚡ Alto desempenho com runtime Bun
- 🛡️ Segurança aprimorada com proteção em vários níveis para diffs compartilhados
- 🔒 Segurança em vários níveis (Baixa/Média/Alta) para diferentes casos de uso
🚀 Início Rápido
Instalação via Smithery
bunx @smithery/cli install @gorosun/unified-diff-mcp --client claude --config '{
"defaultAutoOpen": true,
"defaultOutputMode": "html",
"githubUsername": "your_actual_github_username",
"githubToken": "ghp_your_actual_token_here"
}'
Instalação Manual
- Instale o Claude Desktop e o Bun
- Clone e compile:
git clone https://github.com/gorosun/unified-diff-mcp.git cd unified-diff-mcp bun install - Configure o Claude Desktop - veja Configuração abaixo
🛠️ Visão Geral das Ferramentas
| Ferramenta | Finalidade | Saída | Melhor Para |
|---|---|---|---|
visualize_diff_html_content | Exibição no navegador e compartilhamento | GitHub Gist + URL de pré-visualização HTML | Compartilhamento rápido, visualização instantânea |
visualize_diff_output_file | Armazenamento em arquivo local | Arquivos PNG/HTML | Armazenamento local, apresentações |
📖 Exemplos de Uso
🎯 Prompts Ideais por Finalidade
| Finalidade | Prompt Recomendado | Ferramenta Usada | Saída |
|---|---|---|---|
| Pré-visualização Rápida | Please visualize and preview the following diff:以下のdiffを可視化してプレビューしてください | visualize_diff_html_content | GitHub Gist + URL de pré-visualização HTML |
| Armazenamento Local | Please visualize and save the following diff to a file:以下のdiffを可視化してファイルに保存してください | visualize_diff_output_file | Arquivo HTML/PNG local |
| Compartilhar com Outros | Please visualize the following diff and create a shareable link:以下のdiffを可視化して共有リンクを作成してください | visualize_diff_html_content | GitHub Gist com URL compartilhável |
| Exportar Imagem | Please visualize and save the following diff as a PNG image:以下のdiffを可視化してPNG画像で保存してください | visualize_diff_output_file | Imagem PNG local |
| Revisão de Código | Please visualize the following diff in side-by-side format:以下のdiffをside-by-side形式で可視化してください | Qualquer ferramenta | Comparação lado a lado |
| Documentação | Please visualize and save the following diff as an HTML file:以下のdiffを可視化してHTMLファイルで保存してください | visualize_diff_output_file | Arquivo HTML local |
| 🔒 Compartilhamento Seguro | Please visualize this diff with high security:以下のdiffを高セキュリティで可視化してください | visualize_diff_html_content | Gist secreto com exclusão automática |
Compartilhe diff instantaneamente (GitHub Gist)
visualize_diff_html_content:
- Creates temporary GitHub Gist
- Auto-deletes after 30 minutes
- Instant browser-ready URLs
- Perfect for code reviews
Salve diff localmente
visualize_diff_output_file:
- Saves PNG or HTML to local disk
- Auto-opens in browser (optional)
- Perfect for documentation
🎛️ Configuração
Variáveis de Ambiente
| Variável | Descrição | Padrão |
|---|---|---|
GITHUB_TOKEN | Token de Acesso Pessoal do GitHub (para integração com Gist) | Necessário para visualize_diff_html_content |
DEFAULT_AUTO_OPEN | Abrir automaticamente arquivos gerados | false |
DEFAULT_OUTPUT_MODE | Formato de saída padrão (html ou image) | html |
Configuração do Token do GitHub
- Acesse Configurações do GitHub > Tokens de Acesso Pessoal
- Gere um novo token com o escopo
gist - Adicione ao seu ambiente:
export GITHUB_TOKEN="your_token_here"
Configuração do Claude Desktop
macOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows:
code %APPDATA%\Claude\claude_desktop_config.json
Modelo de configuração:
{
"mcpServers": {
"unified-diff-mcp": {
"command": "bun",
"args": ["run", "/path/to/unified-diff-mcp/src/index.ts"],
"env": {
"GITHUB_TOKEN": "your_github_token_here",
"DEFAULT_AUTO_OPEN": "true",
"DEFAULT_OUTPUT_MODE": "html"
}
}
}
}
📋 Referência de Parâmetros
Parâmetros Comuns
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
diff | string | (obrigatório) | Texto do diff unificado |
format | string | side-by-side | Formato de exibição (line-by-line ou side-by-side) |
showFileList | boolean | true | Mostrar resumo da lista de arquivos |
highlight | boolean | true | Ativar realce de sintaxe |
oldPath | string | file.txt | Caminho do arquivo original |
newPath | string | file.txt | Caminho do arquivo modificado |
autoOpen | boolean | false | Abrir automaticamente no navegador |
Específico do GitHub Gist
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
expiryMinutes | number | 30 | Tempo de exclusão automática (1-1440 minutos) |
public | boolean | false | Gist público vs. secreto |
Específico de Arquivo Local
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
outputType | string | html | Formato de saída (html ou image) |
🌍 Suporte a Plataformas
| Plataforma | Abertura Automática | Comandos |
|---|---|---|
| Windows | ✅ | start (principal), explorer (alternativo) |
| macOS | ✅ | open (principal), AppleScript (alternativo) |
| Linux | ✅ | xdg-open |
🔧 Desenvolvimento
Modo de desenvolvimento (com recarga automática):
{
"command": "bun",
"args": ["--watch", "/path/to/unified-diff-mcp/src/index.ts"]
}
Modo de produção:
{
"command": "bun",
"args": ["run", "/path/to/unified-diff-mcp/src/index.ts"]
}
📚 Uso Avançado
🔒 Níveis de Segurança Aprimorados
Quando o Token do GitHub não está disponível ou para compartilhamento seguro, você pode escolher entre vários níveis de segurança:
| Nível de Segurança | Configuração | Recursos | Casos de Uso |
|---|---|---|---|
| 🟢 Baixo | Gist secreto + exclusão automática em 60min | Acesso somente por URL | Exemplos de código, aprendizado |
| 🟡 Médio | Gist secreto + Senha + exclusão automática em 30min | URL + código de acesso necessários | Revisões em equipe |
| 🔴 Alto | Gist secreto + Senha + exclusão automática em 15min | URL + código de acesso + curta duração | Código sensível |
Exemplo de Uso
Please visualize this diff with high security:
--- a/config.js
+++ b/config.js
@@ -1,3 +1,4 @@
const config = {
- apiKey: 'old-key'
+ apiKey: 'new-secure-key',
+ timeout: 5000
};
Exemplo de Resposta:
🔒 **Secure Diff Visualization**
🔴 **Security Level**: High Security - Secret Gist + Password (15min auto-delete)
📋 **Preview Link**: https://htmlpreview.github.io/?...
🔑 **Access Code**: `a7x9k2`
⏰ **Auto-delete**: 15 minutes
🔄 Funcionalidade Alternativa
Quando o Token do GitHub não está disponível, o sistema usa arquivos locais como alternativa:
- HTML salvo como arquivo temporário
- Abertura automática no navegador
- Gerenciamento de arquivos baseado em segurança
Para guias detalhados de configuração e integração:
- 🇺🇸 Inglês: CLAUDE_CODE_INTEGRATION.md
- 🇯🇵 Japonês: CLAUDE_CODE_INTEGRATION_JP.md
🤝 Clientes Suportados
- Claude Desktop (Principal)
- Claude Code (CLI)
- VS Code + Extensão MCP
- Cline e outros clientes MCP
📄 Licença
Licença MIT - veja o arquivo LICENSE para detalhes.
Dependências
| Biblioteca | Licença | Finalidade |
|---|---|---|
| diff2html | MIT | Geração de diff HTML |
| playwright-core | Apache 2.0 | Automação de navegador |
| @modelcontextprotocol/sdk | MIT | Integração MCP |
Feito com ❤️ para a comunidade do Claude Desktop