Multiverse Server creates isolated operational spaces where identical MCP servers can run simultaneously without conflicts. Each "universe" maintains its own configuration, filesystem access, and function naming, enabling developers to run multiple instances of the same server type while maintaining complete separation between different contexts or projects. With Multiverse, you can run multiple instances of the same MCP server type independently, each with its own configuration. This solves the common problem of needing to work with multiple databases, repositories, or file systems within the same Claude session.
Multiverse Server is a powerful middleware solution that allows you to run multiple instances of the same MCP servers simultaneously, each in its own isolated environment. This is particularly useful when you need to work with multiple databases, repositories, or file systems within the same Claude session.
Ensure you've downloaded and installed the Claude Desktop app or another compatible MCP client.
Add an entry to your client's configuration file. For Claude Desktop, this is located at:
~/Library/Application\ Support/Claude/claude_desktop_config.json
C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json
Create a configuration file for each multiverse you want to run (see examples below).
Create a file named my-multiverse.json
with the following structure:
{
"serverName": "MyMultiverse",
"functionsPrefix": "my",
"servers": [
{
"command": "npx",
"args": [
"-y",
"@some-package/mcp-server-example"
],
"env": {
"EXAMPLE_VAR": "value"
}
}
]
}
To run two MySQL servers pointing to different databases:
{
"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"
}
}
]
}
And in a separate file for your side project:
{
"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"
}
}
]
}
{
"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"
]
}
}
]
}
{
"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/"
}
}
]
}
{
"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"
]
}
]
}
Once configured, the Multiverse Server will start the specified MCP servers and expose their functions with the configured prefixes. For example, if you have a MySQL server with the prefix "job", you would call its functions like job_query
, job_execute
, etc.
The functions from each server are isolated from each other, allowing you to work with multiple instances of the same server type without conflicts.