# πŸ”Œ MCPX > **Uma config para dominar todas.** Configure seus servidores MCP uma vez e distribua para todas as CLIs de IA automaticamente. [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D20-339933?logo=node.js&logoColor=white)](https://nodejs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) --- ## 😩 O Problema Cada CLI de IA usa um **formato de arquivo diferente** para configurar servidores MCP (Model Context Protocol): | CLI de IA | Arquivo de Config | Formato | |-----------|------------------|---------| | Claude Code | `.mcp.json` | JSON | | Gemini CLI | `.gemini/settings.json` | JSON | | Kimi CLI | `~/.kimi/mcp.json` | JSON | | OpenAI Codex | `.codex/config.toml` | **TOML** | | OpenCode | `opencode.json` | JSON | | GitHub Copilot CLI | `.copilot/mcp-config.json` | JSON | | VS Code | `.vscode/mcp.json` | JSON | | IntelliJ IDEA | `.idea/mcp.json` | JSON | Se voce usa multiplas ferramentas de IA (e provavelmente usa), precisa **manter manualmente 8 arquivos de config diferentes** com estruturas, nomes de campos e particularidades distintas. Para **cada projeto**. --- ## ✨ A Solucao O **MCPX** mantem um unico arquivo canonico (`.mcpx.json`) por projeto e **gera automaticamente** o arquivo de config correto para cada provider de IA que voce usa. ``` .mcpx.json ──────► .mcp.json (Claude Code) β”‚ ──────► .gemini/settings.json (Gemini CLI) β”‚ ──────► ~/.kimi/mcp.json (Kimi CLI) β”‚ ──────► .codex/config.toml (OpenAI Codex) β”‚ ──────► opencode.json (OpenCode) β”‚ ──────► .copilot/mcp-config.json (Copilot CLI) β”‚ ──────► .vscode/mcp.json (VS Code) └───── ──────► .idea/mcp.json (IntelliJ IDEA) ``` --- ## πŸš€ Inicio Rapido ### πŸ“¦ Instalacao ```bash npm install -g mcpx-cli ``` ### ⚑ Primeira Configuracao Navegue ate o diretorio do seu projeto e execute: ```bash mcpx ``` O wizard interativo vai te guiar por: 1. πŸ” **Deteccao** β€” Detecta automaticamente configs MCP existentes no seu projeto 2. πŸ“₯ **Importacao** β€” Oferece importar servidores das configs detectadas 3. βž• **Adicionar servidores** β€” Wizard interativo para configurar novos servidores MCP 4. 🎯 **Selecionar providers** β€” Escolha para quais CLIs de IA gerar configs 5. βš™οΈ **Gerar** β€” Cria o `.mcpx.json` e todos os arquivos dos providers --- ## πŸ“‹ Comandos | Comando | Descricao | |---------|-----------| | `mcpx` ou `mcpx init` | πŸ§™ Wizard interativo de configuracao | | `mcpx add [nome]` | βž• Adicionar um novo servidor MCP | | `mcpx remove [nome]` | βž– Remover um servidor MCP | | `mcpx list` | πŸ“„ Listar servidores MCP configurados | | `mcpx sync` | πŸ”„ Regenerar todos os arquivos de config dos providers | | `mcpx import [provider]` | πŸ“₯ Importar config de um provider existente | | `mcpx status` | πŸ“Š Mostrar estado de sincronizacao dos providers | ### 🏳️ Flags Globais | Flag | Descricao | |------|-----------| | `--dir, -d ` | πŸ“ Diretorio do projeto (padrao: diretorio atual) | | `--verbose` | πŸ”Š Exibir logs detalhados | | `--version, -V` | 🏷️ Exibir versao | | `--help, -h` | ❓ Exibir ajuda | --- ## πŸ“ Formato Canonico O MCPX usa um unico arquivo `.mcpx.json` como fonte da verdade: ```json { "version": 1, "providers": ["claude-code", "gemini-cli", "openai-codex", "copilot-cli"], "servers": { "jira": { "description": "Jira Atlassian", "transport": "stdio", "command": "uvx", "args": ["mcp-atlassian"], "env": { "JIRA_URL": "https://minhaorg.atlassian.net", "JIRA_USERNAME": "usuario@exemplo.com", "JIRA_API_TOKEN": "seu-token" } }, "github": { "description": "GitHub MCP Server", "transport": "stdio", "command": "npx", "args": ["-y", "@anthropic-ai/mcp-github-server"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx" } } } } ``` ### πŸ“ Campos do Servidor | Campo | Tipo | Obrigatorio | Descricao | |-------|------|-------------|-----------| | `transport` | `"stdio"` \| `"http"` | βœ… Sim | Protocolo de transporte | | `command` | `string` | stdio | Comando executavel | | `args` | `string[]` | β€” | Argumentos do comando | | `env` | `Record` | β€” | Variaveis de ambiente | | `cwd` | `string` | β€” | Diretorio de trabalho | | `url` | `string` | http | URL do servidor | | `headers` | `Record` | β€” | Headers HTTP | | `description` | `string` | β€” | Descricao legivel | | `enabled` | `boolean` | β€” | Ativar/desativar (padrao: `true`) | --- ## πŸ€– Providers Suportados ### πŸ“ Providers com Escopo de Projeto Estes providers geram arquivos de config **dentro do diretorio do projeto**. Cada projeto tem sua propria config independente. #### 🟣 Claude Code | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `.mcp.json` | | **Formato** | JSON | | **Chave raiz** | `mcpServers` | | **Exige `type`** | Sim `"stdio"` | #### πŸ”΅ Gemini CLI | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `.gemini/settings.json` | | **Formato** | JSON | | **Chave raiz** | `mcpServers` | | **Exige `type`** | Nao | #### 🟒 OpenAI Codex | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `.codex/config.toml` | | **Formato** | **TOML** | | **Chave raiz** | `mcp_servers` | | **Merge inteligente** | Sim β€” Preserva configuracoes existentes do Codex (`model`, `approval_mode`, etc.) | #### 🟠 OpenCode | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `opencode.json` | | **Formato** | JSON | | **Chave raiz** | `mcp` | | **Particularidades** | `command` e um array (comando + args juntos), usa `environment` em vez de `env`, `type: "local"` | #### ⚫ GitHub Copilot CLI | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `.copilot/mcp-config.json` | | **Formato** | JSON | | **Chave raiz** | `mcpServers` | | **Particularidades** | Exige campo `tools: ["*"]`, precisa de alias no shell para config por projeto | > **πŸ“Œ Nota:** O Copilot CLI nao detecta automaticamente configs MCP a nivel de projeto. O MCPX configura automaticamente um alias no shell (`copilot='copilot --additional-mcp-config @.copilot/mcp-config.json'`) no seu `.zshrc`, `.bashrc` ou `config.fish` para que a config do projeto seja carregada ao executar `copilot`. #### πŸ”· VS Code | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `.vscode/mcp.json` | | **Formato** | JSON | | **Chave raiz** | `servers` | | **Particularidades** | Campo `type` obrigatorio (`"stdio"` ou `"sse"`), HTTP mapeado como `"sse"` | #### 🟧 IntelliJ IDEA | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `.idea/mcp.json` | | **Formato** | JSON | | **Chave raiz** | `mcpServers` | | **Particularidades** | Sem campo `type`, infere pelo `command` vs `url` | ### 🌍 Providers Globais Estes providers usam um **unico arquivo global** compartilhado entre todos os projetos. Executar `mcpx sync` sobrescreve o arquivo global com os servidores do projeto atual. #### πŸ”΄ Kimi CLI | Aspecto | Detalhe | |---------|---------| | **Arquivo** | `~/.kimi/mcp.json` | | **Formato** | JSON | | **Chave raiz** | `mcpServers` | | **Escopo** | Global β€” afeta todos os projetos | --- ## πŸ”„ Sincronizacao e Gerenciamento de Providers ### πŸ” Sincronizando Apos modificar o `.mcpx.json` (manualmente ou via comandos), regenere todas as configs dos providers: ```bash mcpx sync ``` ### πŸ”€ Alterando Providers Use o wizard interativo para adicionar ou remover providers: ```bash mcpx init # Selecione "Alterar providers" ``` Quando um provider e **removido**, o MCPX **exclui** o arquivo de config correspondente. Para providers globais, arquivos legados a nivel de projeto tambem sao limpos. ### πŸ“₯ Importando de Configs Existentes Ja tem servidores MCP configurados em uma das suas ferramentas de IA? Importe-os: ```bash mcpx import ``` O MCPX detecta configs existentes a nivel de projeto (`.mcp.json`, `.gemini/settings.json`, etc.) e permite selecionar quais servidores importar para o `.mcpx.json`. --- ## πŸ—οΈ Arquitetura ``` src/ β”œβ”€β”€ cli.ts # Setup Commander e roteamento β”œβ”€β”€ types/ β”‚ β”œβ”€β”€ canonical.ts # McpConfigFile, McpServerConfig (schemas Zod) β”‚ β”œβ”€β”€ providers.ts # Interface Provider β”‚ └── common.ts # CommandContext, SyncResult β”œβ”€β”€ commands/ β”‚ β”œβ”€β”€ init.ts # Wizard interativo β”‚ β”œβ”€β”€ add.ts / remove.ts # Gerenciamento de servidores β”‚ β”œβ”€β”€ list.ts / status.ts # Exibicao de informacoes β”‚ β”œβ”€β”€ sync.ts # Regenerar configs β”‚ └── import.ts # Importar de providers β”œβ”€β”€ providers/ β”‚ β”œβ”€β”€ base.ts # Interface Provider β”‚ β”œβ”€β”€ registry.ts # Registry de providers (factory) β”‚ β”œβ”€β”€ claude-code.ts # .mcp.json β”‚ β”œβ”€β”€ gemini-cli.ts # .gemini/settings.json β”‚ β”œβ”€β”€ kimi-cli.ts # ~/.kimi/mcp.json β”‚ β”œβ”€β”€ openai-codex.ts # .codex/config.toml β”‚ β”œβ”€β”€ opencode.ts # opencode.json β”‚ β”œβ”€β”€ copilot-cli.ts # .copilot/mcp-config.json β”‚ β”œβ”€β”€ vscode.ts # .vscode/mcp.json β”‚ └── intellij.ts # .idea/mcp.json β”œβ”€β”€ core/ β”‚ β”œβ”€β”€ config-store.ts # Leitura/escrita do .mcpx.json β”‚ β”œβ”€β”€ detector.ts # Deteccao de configs existentes β”‚ └── merger.ts # Sync inteligente com suporte a merge β”œβ”€β”€ wizard/ β”‚ β”œβ”€β”€ main-wizard.ts # Fluxo interativo principal β”‚ β”œβ”€β”€ server-wizard.ts # Wizard de criacao de servidor β”‚ β”œβ”€β”€ provider-wizard.ts # Selecao de providers β”‚ └── step-runner.ts # Navegacao entre etapas (suporte a voltar) └── utils/ β”œβ”€β”€ fs.ts # Helpers de filesystem β”œβ”€β”€ logger.ts # Logger com cores └── validation.ts # Validacao Zod ``` --- ## πŸ§ͺ Testes ```bash # Rodar todos os testes npm test # Rodar uma vez (CI) npm run test:run # Checagem de tipos npm run typecheck ``` --- ## πŸ› οΈ Stack Tecnica | Categoria | Biblioteca | |-----------|-----------| | πŸ’» Linguagem | TypeScript 5.x (ESM) | | πŸ“¦ Build | tsup (esbuild) | | ⌨️ CLI Framework | commander | | πŸ’¬ Prompts Interativos | @clack/prompts | | 🎨 Cores | picocolors | | πŸ“„ TOML | smol-toml | | βœ… Validacao | zod | | πŸ§ͺ Testes | vitest | | 🟒 Node minimo | >= 20 | --- ## πŸ“„ Licenca MIT ---

πŸ‡ΊπŸ‡Έ Read in English (en-US)