MCP Server 多元宇宙
# 翻译 一个中间件服务器,它使同一MCP服务器的多个隔离实例能够独立共存,并具有唯一的命名空间和配置。
服务介绍
Multiverse MCP Server
一个中间件服务器,允许同一MCP服务器的多个隔离实例独立共存,并拥有独特的命名空间和配置。
Multiverse MCP Server创建了隔离的操作空间,使得相同的MCP服务器可以同时运行而不会发生冲突。每个“宇宙”保持自己的配置、文件系统访问权限以及函数命名,使开发人员能够在不同的上下文或项目之间完全分离的同时运行同一种类型的多个服务器实例。
主要功能
运行多个实例
能够独立且同时运行相同类型MCP服务器的多个实例。每个实例都在自己隔离的“宇宙”中运行,具有独立的配置。这使得以下场景成为可能:
- 多个MySQL服务器
mcp-server-mysql指向不同的数据库 - 多个Git服务器
mcp-server-git使用不同的个人访问令牌 - 多个文件系统服务器
mcp-server-filesystem访问不同的根路径
自动服务器重启
在开发期间,注册带有文件监视能力的MCP服务器。启用后,服务器会自动检测指定目录中的更改并执行优雅重启,使开发和测试无缝衔接。
基于JSON的配置系统
使用简单灵活的JSON配置格式定义你的多宇宙设置。每个服务器实例都可以配置其自身的:
- 命令及参数
- 环境变量
- 路径解析规则
- 文件监视设置
安装
首先,请确保你已经下载并安装了Claude Desktop应用并且安装了npm。
接下来,在你的claude_desktop_config.json中添加如下条目:
- 在Mac上,位于
~/Library/Application\ Support/Claude/claude_desktop_config.json - 在Windows上,位于
C:\Users\<username>\AppData\Roaming\Claude\claude_desktop_config.json
现在添加你想运行的多宇宙服务器的数量。例如,如果你想为工作和副业各运行一个mcp-server-multiverse实例,你可以添加如下配置:
{
"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"
]
}
}
}
此配置允许Claude Desktop在启动应用程序时自动启动mcp-server-multiverse实例。

配置示例
创建两个不同数据库的mcp-server-mysql隔离实例
你的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"
}
}
]
}
你的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"
}
}
]
}
创建一个mcp-server-filesystem的隔离实例
mcp-server-filesystem的功能将以side-project前缀暴露,例如side-project_read_file,side-project_write_file。- 通过使用
pathResolution配置,可以从客户端(如Claude Desktop)隐藏根路径。
请注意,pathResolution是可选的,仅当你希望从客户端隐藏根路径时才需要它。
你的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"
]
}
}
]
}
使用 fileWatch 在文件更改时自动重启服务器
您的 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/"
}
}
]
}
使用 hideFunctions 选项隐藏特定函数
您可以使用 hideFunctions 数组有选择地隐藏封装服务器中的特定函数。当您想使用某个服务器但限制访问某些潜在危险或不必要的函数时,这非常有用。
hideFunctions 数组接受一个应从封装服务器中隐藏的函数名称列表。当一个函数被隐藏时:
- 它不会在主 MCP 服务器上注册
- 客户端(例如 Claude Desktop)将无法访问它
- 它不会出现在可用函数列表中
此功能特别适用于以下情况:
- 限制对潜在危险函数的访问(例如 GitHub 中的
delete_repository) - 通过隐藏很少使用的函数来简化界面
- 为不同的服务器实例创建不同的权限级别
{
"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"
]
}
]
}
在此示例中,GitHub 服务器将正常启动,但 create_repository、delete_repository 和 create_issue 函数将被隐藏且客户端无法访问。
使用 enabled 标志禁用特定服务器
您可以通过将 enabled 标志设置为 false 来有选择地禁用配置中的特定服务器,而无需从 JSON 文件中删除它们。这对于在开发或测试期间临时禁用服务器非常有用。
{
"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"
]
}
]
}
在此示例中,第一个服务器(filesystem)将启动,但 write_file 函数已被隐藏;第二个服务器(GitHub)已禁用且不会启动。
multiverse.json 文件的完整示例
此示例展示了如何创建具有不同类型服务器多个实例的多宇宙服务器。
请注意,pathResolution 是可选的,仅在您希望从客户端隐藏根路径时才需要。
{
"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"
]
}
}
]
}
待办事项
- 添加对
Prompts的支持 - 添加对
Resources的支持 - 添加用于管理多宇宙服务器的 GUI
已验证平台
- Windows
- macOS
- Linux
许可证
MIT