MCP Perforce Server
Um servidor para operações de controle de versão Perforce (P4), encapsulando comandos P4 para uso mais fácil e confiável.
Documentação
MCP Perforce Server
Um servidor Model Context Protocol (MCP) que fornece uma interface limpa para operações Perforce (P4) no Claude Desktop. Este servidor encapsula comandos P4 para torná-los mais confiáveis e fáceis de usar pelo Claude, eliminando problemas com prompts interativos e gerenciamento complexo de estado.
Recursos
- Operações não interativas: Todos os comandos são encapsulados para evitar prompts interativos
- Respostas estruturadas: Saída limpa e analisável em vez da saída bruta do P4
- Suporte a múltiplos projetos: Usa automaticamente arquivos
.p4configpara configurações por projeto - Operações comuns: Adicionar, editar, excluir, submeter, reverter, sincronizar e mais
- Gerenciamento de changelists: Criar e submeter changelists com parâmetros explícitos
- Tratamento de erros: Tratamento gracioso de erros com mensagens claras
Instalação
Pré-requisitos
- Node.js 18+ instalado
- Cliente de linha de comando Perforce (p4) instalado e no seu PATH
- Arquivos
.p4confignos diretórios do seu projeto (recomendado)
Instalação rápida com Claude Code
# Install the package globally
npm install -g @cocoon-ai/mcp-perforce
# Add to Claude Code
claude mcp add perforce @cocoon-ai/mcp-perforce
É isso! O Claude Code configurará automaticamente o servidor para você.
Instalação manual
Via NPM (quando publicado)
npm install -g @cocoon-ai/mcp-perforce
Instalar a partir do código-fonte
git clone https://github.com/Cocoon-AI/mcp-perforce.git
cd mcp-perforce
npm install
npm run build
npm link # Makes 'mcp-perforce' available globally
Configuração
Configuração básica
Adicione o servidor ao seu arquivo de configuração do Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"perforce": {
"command": "npx",
"args": ["-y", "@cocoon-ai/mcp-perforce"],
"env": {
"P4CONFIG": ".p4config"
}
}
}
}
Configurando arquivos .p4config
O servidor usa o mecanismo P4CONFIG integrado do Perforce para alternar automaticamente entre diferentes servidores Perforce com base no seu diretório atual. Crie um arquivo .p4config na raiz de cada projeto:
# ~/projects/gamedev/.p4config
P4PORT=perforce-game.company.com:1666
P4CLIENT=gamedev-workspace
P4USER=your-username
# ~/projects/web/.p4config
P4PORT=perforce-web.company.com:1666
P4CLIENT=web-workspace
P4USER=your-username
Agora o servidor MCP usará automaticamente as configurações corretas do Perforce com base no diretório do projeto em que você está trabalhando!
Comandos disponíveis
Depois de configurado, você pode pedir ao Claude para usar estas operações P4. Todos os comandos usarão automaticamente as configurações .p4config do diretório do seu projeto atual.
Operações básicas de arquivo
-
p4_status: Verificar o status do workspace e alterações pendentes"Show me my pending P4 changes" "Check P4 status in the gamedev directory" -
p4_add: Adicionar arquivos ao Perforce"Add all .js files in the src directory to Perforce" -
p4_edit: Abrir arquivos para edição"Open config.json for editing in Perforce" -
p4_delete: Marcar arquivos para exclusão"Delete the old_module.py file from Perforce" -
p4_sync: Sincronizar arquivos do depot"Sync all files in the project" "Force sync the src directory" -
p4_revert: Reverter arquivos ou changelists inteiros"Revert all files in changelist 12345" "Revert changes to config.json" -
p4_diff: Mostrar diferenças de arquivos"Show me the diff for all my open files"
Operações de changelist
-
p4_changelist_create: Criar uma nova changelist"Create a new changelist with description 'Fix login bug'" -
p4_changelist_submit: Submeter uma changelist"Submit changelist 12345" -
p4_move_to_changelist: Mover arquivos entre changelists"Move all my open files to changelist 12345"
Operações de stream
-
p4_stream_list: Listar streams em um depot"List all streams in //depot" "Show me development streams matching 'feature'" -
p4_stream_info: Obter informações detalhadas do stream"Show me details about //depot/main stream" -
p4_stream_switch: Alternar o workspace para um stream diferente"Switch to the //depot/dev stream" "Force switch to //depot/release-2.0" -
p4_stream_create: Criar um novo stream"Create a development stream //depot/feature-xyz from //depot/main" -
p4_stream_edit: Editar a especificação do stream"Edit the //depot/feature-xyz stream spec" -
p4_stream_graph: Mostrar a hierarquia de streams"Show the stream hierarchy for //depot"
Operações de cliente/workspace
-
p4_client_list: Listar todos os clientes/workspaces"List all my Perforce workspaces" "Show clients for user jsmith" -
p4_client_info: Obter detalhes do cliente/workspace"Show me details about my current workspace" "Show info for client gamedev-workspace" -
p4_client_create: Criar um novo cliente/workspace"Create a new workspace called dev-feature in /home/user/p4/feature" "Create a stream client for //depot/main-stream" -
p4_client_edit: Editar a especificação do cliente"Edit the view mappings for client dev-workspace" -
p4_client_delete: Excluir um cliente/workspace"Delete the old-feature workspace" "Force delete the broken-client workspace" -
p4_client_switch: Alternar para um cliente diferente"Switch to the production-client workspace"
Operações de informação
-
p4_info: Mostrar a configuração atual do Perforce"Show me which P4 server and workspace I'm using" -
mcp_perforce_version: Mostrar a versão do servidor MCP Perforce"What version of mcp-perforce is running?"
Exemplo de uso no Claude
Aqui estão alguns exemplos de conversas com o Claude:
Exemplo 1: Criando e submetendo uma alteração
You: "I've modified server.js and config.json. Create a changelist for these fixes"
Claude: I'll help you create a changelist for your changes. Let me first check the status...
[Uses p4_status, p4_changelist_create, p4_submit]
Exemplo 2: Sincronizando e revisando alterações
You: "Sync the latest changes and show me what files I have open"
Claude: I'll sync your workspace and check your open files...
[Uses p4_sync, p4_status]
Solução de problemas
Servidor não aparecendo no Claude
- Reinicie o Claude Desktop após modificar a configuração
- Verifique se o arquivo de configuração é um JSON válido
- Verifique se o servidor MCP está instalado:
npm list -g @cocoon-ai/mcp-perforce
Erros de autenticação do Perforce
- Verifique se o arquivo
.p4configexiste e tem as configurações corretas - Teste sua conexão fora do Claude:
p4 info - Certifique-se de que você está conectado:
p4 login - Verifique se o P4CONFIG está sendo reconhecido:
p4 set P4CONFIG
Servidor Perforce errado em uso
- Verifique em qual diretório você está - o servidor usa
.p4configdo diretório atual ou dos diretórios pai - Execute
p4 infopara ver qual configuração está sendo usada - Use o comando
p4_infono Claude para depurar: "Mostre-me minha configuração P4"
Comando não funcionando como esperado
- Verifique a resposta do Claude para mensagens de erro
- Verifique se o comando P4 funciona no seu terminal a partir do mesmo diretório
- Ative o registro de depuração (veja abaixo)
Registro de depuração
Para ativar a saída de depuração, adicione à sua configuração:
{
"mcpServers": {
"perforce": {
"command": "npx",
"args": ["-y", "@cocoon-ai/mcp-perforce"],
"env": {
"P4CONFIG": ".p4config",
"DEBUG": "mcp:*"
}
}
}
}
Desenvolvimento
Compilando a partir do código-fonte
git clone https://github.com/Cocoon-AI/mcp-perforce.git
cd mcp-perforce
npm install
npm run build
Executando testes
npm test
Adicionando novos comandos
- Adicione a definição da ferramenta no arquivo apropriado em
src/tools/ - Adicione a função de manipulação no arquivo correspondente em
src/handlers/ - Atualize a instrução switch em
src/handlers/index.ts - Siga o padrão existente para validação de parâmetros e tratamento de erros
Contribuindo
Contribuições são bem-vindas! Por favor:
- Faça um fork do repositório
- Crie um branch de funcionalidade (
git checkout -b feature/new-command) - Faça commit das suas alterações (
git commit -am 'Add new P4 command') - Envie para o branch (
git push origin feature/new-command) - Crie um Pull Request
Licença
Licença MIT - consulte o arquivo LICENSE para obter detalhes
Agradecimentos
- Construído com o Model Context Protocol SDK
- Inspirado pela necessidade de melhor integração do Perforce em assistentes de IA
Suporte
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Feito com ❤️ para IAs que enfrentam dificuldades com operações de linha de comando do P4