Skip to main content
Glama

マルチバース MCP サーバー

同じ MCP サーバーの複数の分離されたインスタンスが、固有の名前空間と構成で独立して共存できるようにするミドルウェア サーバー。

Multiverse MCPサーバーは、同一のMCPサーバーが競合なく同時に実行できる、独立した運用空間を構築します。各「ユニバース」は独自の構成、ファイルシステムへのアクセス、関数の命名規則を維持するため、開発者は異なるコンテキストやプロジェクト間の完全な分離を維持しながら、同じサーバータイプの複数のインスタンスを実行できます。

主な特徴

複数のインスタンスを実行する

同じMCPサーバータイプのインスタンスを複数、独立して同時に実行します。各インスタンスは、それぞれ独立した構成で動作します。これにより、次のようなシナリオが可能になります。

  • 複数の MySQL サーバーmcp-server-mysqlが異なるデータベースを指している

  • 異なる個人アクセストークンを持つ複数の Git サーバーmcp-server-git

  • 複数のファイルシステムサーバーmcp-server-filesystem異なるルートパスにアクセスする

自動サーバー再起動

開発中にMCPサーバーにファイル監視機能を登録してください。有効にすると、サーバーは指定されたディレクトリの変更を自動的に検出し、正常な再起動を実行するため、開発とテストがシームレスになります。

JSONベースの構成システム

シンプルで柔軟なJSON設定フォーマットを使用して、マルチバースの設定を定義します。各サーバーインスタンスはそれぞれ独自の設定で設定できます。

  • コマンドと引数

  • 環境変数

  • パス解決ルール

  • ファイル監視設定

Related MCP server: MCP Server

インストール

まず、 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にあります。

次に、実行するマルチバースサーバーの数を追加します。例えば、 mcp-server-multiverseのインスタンスを2つ実行し、1つはジョブ用、もう1つはサイドプロジェクト用としたい場合は、以下の設定を追加します。

{
  "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インスタンスを自動的に起動できるようになります。

デモ.png

設定例

異なるデータベースを持つmcp-server-mysqlの 2 つの独立したインスタンスを作成します。

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_fileside-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_repositorydelete_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"
      ]
    }
  ]
}

この例では、最初のサーバー (ファイルシステム) は起動しますが、関数write_file非表示になっており、2 番目のサーバー (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を追加する

検証済みプラットフォーム

  • [x] ウィンドウズ

  • [ ] macOS

  • [ ] リナックス

ライセンス

マサチューセッツ工科大学

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lamemind/mcp-server-multiverse'

If you have feedback or need assistance with the MCP directory API, please join our Discord server