Multiverse MCP Server

Um servidor intermediário para executar múltiplas instâncias isoladas de servidores MCP com namespaces e configurações únicas.

Documentação

Multiverse MCP Server

Um servidor de middleware que permite que múltiplas instâncias isoladas dos mesmos servidores MCP coexistam de forma independente com namespaces e configurações únicos.

O Multiverse MCP Server cria espaços operacionais isolados onde servidores MCP idênticos podem ser executados simultaneamente sem conflitos. Cada "universo" mantém sua própria configuração, acesso ao sistema de arquivos e nomenclatura de funções, permitindo que desenvolvedores executem múltiplas instâncias do mesmo tipo de servidor, mantendo separação completa entre diferentes contextos ou projetos.

Principais Recursos

Executar Múltiplas Instâncias

Execute múltiplas instâncias do mesmo tipo de servidor MCP de forma independente e simultânea. Cada instância opera em seu próprio universo isolado com configurações separadas. Isso permite cenários como:

  • Múltiplos servidores MySQL mcp-server-mysql apontando para diferentes bancos de dados
  • Múltiplos servidores Git mcp-server-git com diferentes Personal Access Tokens
  • Múltiplos servidores de sistema de arquivos mcp-server-filesystem acessando diferentes caminhos raiz

Reinício Automático do Servidor

Registre seu servidor MCP com capacidade de monitoramento de arquivos durante o desenvolvimento. Quando habilitado, o servidor detecta automaticamente alterações no diretório especificado e realiza um reinício gracioso, tornando o desenvolvimento e os testes contínuos.

Sistema de Configuração Baseado em JSON

Defina sua configuração multiverse usando um formato de configuração JSON simples e flexível. Cada instância de servidor pode ser configurada com seus próprios:

  • Comando e argumentos
  • Variáveis de ambiente
  • Regras de resolução de caminho
  • Configurações de monitoramento de arquivos

Implantação hospedada

Uma implantação hospedada está disponível em Fronteir AI.

Instalação

Primeiro, certifique-se de ter baixado e instalado o aplicativo Claude Desktop e de ter o npm instalado.

Em seguida, adicione esta entrada ao seu claude_desktop_config.json

  • no Mac, encontrado em ~/Library/Application\ Support/Claude/claude_desktop_config.json
  • no Windows, encontrado em C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json

Agora adicione quantos servidores multiverse você deseja executar. Por exemplo, se você quiser executar duas instâncias de mcp-server-multiverse, uma para o seu trabalho e uma para o seu projeto paralelo, você pode adicionar a seguinte configuração:

{
  "mcpServers": {
    "job-multiverse": {
      "command": "npx",
      "args": [
        "-y",
        "@lamemind/mcp-server-multiverse@latest",
        "/path/to/your/job-multiverse.json"
      ]
    },
    "side-project-multiverse": {
      "command": "npx",
      "args": [
        "-y",
        "@lamemind/mcp-server-multiverse@latest",
        "/path/to/your/side-project-multiverse.json"
      ]
    }
  }
}

Esta configuração permite que o Claude Desktop inicie automaticamente as instâncias mcp-server-multiverse quando você iniciar o aplicativo.

demo.png

Exemplos de Configuração

Criar duas instâncias isoladas de mcp-server-mysql com diferentes bancos de dados

Seu arquivo job-multiverse.json

{
  "serverName": "JobMultiverse",
  "functionsPrefix": "job",
  "servers": [
    {
      "command": "npx",
      "args": [
        "-y",
        "@benborla29/mcp-server-mysql"
      ],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASS": "",
        "MYSQL_DB": "my-job-db"
      }
    }
  ]
}

Seu arquivo side-project-multiverse.json

{
  "serverName": "SideProjectMultiverse",
  "functionsPrefix": "side-project",
  "servers": [
    {
      "command": "npx",
      "args": [
        "-y",
        "@benborla29/mcp-server-mysql"
      ],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASS": "",
        "MYSQL_DB": "side-project-db"
      }
    }
  ]
}

Criar uma instância isolada de mcp-server-filesystem

  • As funções do mcp-server-filesystem serão expostas com o prefixo side-project, por exemplo, side-project_read_file, side-project_write_file.
  • O caminho raiz pode ser ocultado do cliente (por exemplo, Claude Desktop) usando a configuração pathResolution.

Observe que pathResolution é opcional e só é necessário se você quiser ocultar o caminho raiz do cliente.

Seu arquivo multiverse.json

{
  "serverName": "MySideProject",
  "functionsPrefix": "side-project",
  "servers": [
    {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem@latest",
        "/full/path/to/side-project"
      ],
      "pathResolution": {
        "root": "/full/path/to/side-project",
        "applyTo": [
          "path",
          "paths"
        ]
      }
    }
  ]
}

Reinício automático do servidor em alterações de arquivos com fileWatch

Seu arquivo multiverse.json

{
  "serverName": "MySideProject",
  "functionsPrefix": "side-project",
  "servers": [
    {
      "command": "node",
      "args": [
        "/my-own/mcp-server/i-m-working-on/build/index.js"
      ],
      "fileWatch": {
        "enabled": true,
        "path": "/my-own/mcp-server/i-m-working-on/build/"
      }
    }
  ]
}

Ocultando funções específicas com a opção hideFunctions

Você pode ocultar seletivamente funções específicas de servidores encapsulados usando o array hideFunctions. Isso é útil quando você deseja usar um servidor, mas restringir o acesso a certas funções potencialmente perigosas ou desnecessárias.

O array hideFunctions aceita uma lista de nomes de funções que devem ser ocultadas do servidor encapsulado. Quando uma função é ocultada:

  • Ela não será registrada no servidor MCP principal
  • Ela não estará disponível para o cliente (por exemplo, Claude Desktop)
  • Ela não aparecerá na lista de funções disponíveis

Este recurso é particularmente útil para:

  • Restringir o acesso a funções potencialmente perigosas (por exemplo, delete_repository no GitHub)
  • Simplificar a interface ocultando funções raramente usadas
  • Criar diferentes níveis de permissão para diferentes instâncias de servidor
{
  "serverName": "GitHubWithRestrictions",
  "functionsPrefix": "github",
  "servers": [
    {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github@latest"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-personal-access-token>"
      },
      "hideFunctions": [
        "create_repository",
        "delete_repository",
        "create_issue"
      ]
    }
  ]
}

Neste exemplo, o servidor GitHub iniciará normalmente, mas as funções create_repository, delete_repository e create_issue serão ocultadas e indisponíveis para o cliente.

Desabilitando servidores específicos com a flag enabled

Você pode desabilitar seletivamente servidores específicos em sua configuração sem removê-los do arquivo JSON, definindo a flag enabled como false. Isso é útil para desabilitar temporariamente servidores durante o desenvolvimento ou testes.

{
  "serverName": "MySideProject",
  "functionsPrefix": "side-project",
  "servers": [
    {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem@latest",
        "/full/path/to/side-project"
      ],
      "hideFunctions": [ "write_file" ]
    },
    {
      "enabled": false,
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github@latest"
      ]
    }
  ]
}

Neste exemplo, o primeiro servidor (filesystem) iniciará, mas a função write_file foi ocultada; o segundo servidor (GitHub) está desabilitado e não será iniciado.

Exemplo completo de um arquivo multiverse.json

Este exemplo demonstra como criar um servidor multiverse com múltiplas instâncias de diferentes tipos de servidor.

Observe que pathResolution é opcional e só é necessário se você quiser ocultar o caminho raiz do cliente.

{
  "serverName": "HugeProjectWithALotOfResources",
  "functionsPrefix": "huge-project",
  "servers": [
    {
      "command": "node",
      "args": [
        "/my-own/mcp-server/i-m-working-on/build/index.js"
      ],
      "fileWatch": {
        "enabled": true,
        "path": "/my-own/mcp-server/i-m-working-on/build/"
      }
    },
    {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem@latest",
        "/full/path/to/huge-project"
      ],
      "pathResolution": {
        "root": "/full/path/to/huge-project",
        "applyTo": [
          "path",
          "paths"
        ]
      }
    },
    {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github@latest"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<your-personal-access-token>"
      }
    },
    {
      "command": "uvx",
      "args": [
        "mcp-server-git",
        "--repository",
        "/full/path/to/huge-project"
      ],
      "pathResolution": {
        "root": "/full/path/to/huge-project",
        "applyTo": [
          "repo_path"
        ]
      }
    }
  ]
}

A Fazer

  • Adicionar suporte para Prompts
  • Adicionar suporte para Resources
  • Adicionar uma GUI para gerenciar servidores multiverse

Plataformas Verificadas

  • Windows
  • macOS
  • Linux

Licença

MIT