Multiverse MCP Server

Un servidor intermediario para ejecutar múltiples instancias aisladas de servidores MCP con espacios de nombres y configuraciones únicos.

Documentación

Multiverse MCP Server

Un servidor middleware que permite que múltiples instancias aisladas de los mismos servidores MCP coexistan de forma independiente con espacios de nombres y configuraciones únicos.

El Multiverse MCP Server crea espacios operativos aislados donde servidores MCP idénticos pueden ejecutarse simultáneamente sin conflictos. Cada "universo" mantiene su propia configuración, acceso al sistema de archivos y nomenclatura de funciones, lo que permite a los desarrolladores ejecutar múltiples instancias del mismo tipo de servidor manteniendo una separación completa entre diferentes contextos o proyectos.

Características principales

Ejecutar múltiples instancias

Ejecute múltiples instancias del mismo tipo de servidor MCP de forma independiente y simultánea. Cada instancia opera en su propio universo aislado con configuraciones separadas. Esto permite escenarios como:

  • Múltiples servidores MySQL mcp-server-mysql apuntando a diferentes bases de datos
  • Múltiples servidores Git mcp-server-git con diferentes tokens de acceso personal
  • Múltiples servidores de sistema de archivos mcp-server-filesystem accediendo a diferentes rutas raíz

Reinicio automático del servidor

Registre su servidor MCP con capacidad de vigilancia de archivos durante el desarrollo. Cuando está habilitado, el servidor detecta automáticamente los cambios en el directorio especificado y realiza un reinicio elegante, haciendo que el desarrollo y las pruebas sean fluidos.

Sistema de configuración basado en JSON

Defina su configuración multiverse utilizando un formato de configuración JSON simple y flexible. Cada instancia de servidor puede configurarse con su propio:

  • Comando y argumentos
  • Variables de entorno
  • Reglas de resolución de rutas
  • Configuración de vigilancia de archivos

Implementación alojada

Hay una implementación alojada disponible en Fronteir AI.

Instalación

Primero, asegúrese de haber descargado e instalado la aplicación Claude Desktop y de tener npm instalado.

A continuación, agregue esta entrada a su claude_desktop_config.json

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

Ahora agregue cuántos servidores multiverse desea ejecutar. Por ejemplo, si desea ejecutar dos instancias de mcp-server-multiverse, una para su trabajo y otra para su proyecto personal, puede agregar la siguiente configuración:

{
  "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 configuración permite que Claude Desktop inicie automáticamente las instancias de mcp-server-multiverse cuando inicie la aplicación.

demo.png

Ejemplos de configuración

Crear dos instancias aisladas de mcp-server-mysql con diferentes bases de datos

Su archivo 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"
      }
    }
  ]
}

Su archivo 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"
      }
    }
  ]
}

Crear una instancia aislada de mcp-server-filesystem

  • Las funciones de mcp-server-filesystem se expondrán con el prefijo side-project, por ejemplo, side-project_read_file, side-project_write_file.
  • La ruta raíz se puede ocultar del cliente (por ejemplo, Claude Desktop) utilizando la configuración pathResolution.

Tenga en cuenta que pathResolution es opcional y solo es necesario si desea ocultar la ruta raíz del cliente.

Su archivo 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"
        ]
      }
    }
  ]
}

Reinicio automático del servidor ante cambios de archivos con fileWatch

Su archivo 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/"
      }
    }
  ]
}

Ocultar funciones específicas con la opción hideFunctions

Puede ocultar selectivamente funciones específicas de los servidores envueltos utilizando el array hideFunctions. Esto es útil cuando desea usar un servidor pero restringir el acceso a ciertas funciones potencialmente peligrosas o innecesarias.

El array hideFunctions acepta una lista de nombres de funciones que deben ocultarse del servidor envuelto. Cuando una función está oculta:

  • No se registrará con el servidor MCP principal
  • No estará disponible para el cliente (por ejemplo, Claude Desktop)
  • No aparecerá en la lista de funciones disponibles

Esta característica es particularmente útil para:

  • Restringir el acceso a funciones potencialmente peligrosas (por ejemplo, delete_repository en GitHub)
  • Simplificar la interfaz ocultando funciones de uso poco frecuente
  • Crear diferentes niveles de permisos para diferentes instancias 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"
      ]
    }
  ]
}

En este ejemplo, el servidor de GitHub se iniciará normalmente, pero las funciones create_repository, delete_repository y create_issue estarán ocultas y no disponibles para el cliente.

Deshabilitar servidores específicos con la bandera enabled

Puede deshabilitar selectivamente servidores específicos en su configuración sin eliminarlos del archivo JSON estableciendo la bandera enabled en false. Esto es útil para deshabilitar temporalmente servidores durante el desarrollo o las pruebas.

{
  "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"
      ]
    }
  ]
}

En este ejemplo, el primer servidor (sistema de archivos) se iniciará pero la función write_file ha sido ocultada, el segundo servidor (GitHub) está deshabilitado y no se iniciará.

Ejemplo completo de un archivo multiverse.json

Este ejemplo demuestra cómo crear un servidor multiverse con múltiples instancias de diferentes tipos de servidores.

Tenga en cuenta que pathResolution es opcional y solo es necesario si desea ocultar la ruta raíz del 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"
        ]
      }
    }
  ]
}

Pendientes

  • Agregar soporte para Prompts
  • Agregar soporte para Resources
  • Agregar una interfaz gráfica para gestionar servidores multiverse

Plataformas verificadas

  • Windows
  • macOS
  • Linux

Licencia

MIT