mcpField
M
Multiverse MCP Server

Multiverse MCP Server

本地服务
github.com/lamemind开发工具8230 周前更新

关于 Multiverse MCP Server

Multiverse MCP Server 是一个中间件服务,可让同一 MCP 服务的多个相互隔离的实例同时运行,各自拥有独立的命名空间和配置。适合需要在不同项目或上下文之间分开使用同类服务的开发者。

主要功能

  1. 01同一 MCP 服务的多实例并行运行
  2. 02每个实例独立的命令、参数与环境变量
  3. 03基于 JSON 的多实例配置
  4. 04可选的路径解析与文件监视自动重启
  5. 05可隐藏指定工具的 hideFunctions 选项

适用场景

  1. 01为不同数据库分别运行多个 MySQL 服务
  2. 02为不同项目设置各自的文件系统根路径
  3. 03开发 MCP 服务时自动重启以便测试

MCP 相关

该项目作为 MCP 服务运行,并在内部包装多个下游 MCP 服务,将其工具以带前缀的名称暴露给 Claude Desktop 等客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"multiverse": {
"command": "npx",
"args": [
"-y",
"@lamemind/mcp-server-multiverse"
]
}
}
}
启动命令npx -y @lamemind/mcp-server-multiverse

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@lamemind/mcp-server-multiverse

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Multiverse MCP Server

一个中间件服务,可让同一 MCP 服务的多个隔离实例通过独立的命名空间和配置共存。

Multiverse MCP Server 会创建隔离的运行空间,让相同的 MCP 服务可以同时运行而互不冲突。每个“宇宙”都有自己的配置、文件系统访问权限和函数命名方式,开发者可以运行多个相同类型的服务实例,同时确保不同上下文或项目之间完全隔离。

主要功能

运行多个实例

独立且同时运行多个相同类型的 MCP 服务实例。每个实例都在独立的宇宙中运行,拥有单独的配置。适用场景包括:

  • 多个指向不同数据库的 MySQL 服务 mcp-server-mysql
  • 多个使用不同个人访问令牌的 Git 服务 mcp-server-git
  • 多个访问不同根路径的文件系统服务 mcp-server-filesystem
自动重启服务

在开发期间,通过文件监视功能注册 MCP 服务。启用后,服务会自动检测指定目录中的更改并执行平稳重启,让开发和测试更加顺畅。

基于 JSON 的配置系统

使用简单灵活的 JSON 配置格式定义 multiverse 设置。每个服务实例都可以单独配置:

  • 命令和参数
  • 环境变量
  • 路径解析规则
  • 文件监视设置

托管部署

可通过 Fronteir AI 使用托管部署。

安装

首先,确保已下载并安装 Claude 桌面应用,并且已安装 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

现在添加要运行的 multiverse 服务数量。例如,如果你想运行两个 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 实例。

demo.png

配置示例

创建两个使用不同数据库的隔离 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 标志停用特定服务

你可以在配置中选择性地停用特定服务,而无需将其从 JSON 文件中移除,只需将 enabled 标志设为 false。在开发或测试期间临时停用服务时,这会很有用。

{
  "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 文件完整示例

此示例演示如何创建一个包含多种不同服务类型实例的 multiverse 服务。

请注意,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 的支持
  • 添加用于管理 multiverse 服务的图形用户界面

已验证的平台

  • Windows
  • macOS
  • Linux

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。