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. 03JSON による複数インスタンスの設定
  4. 04パス解決とファイル監視による自動再起動
  5. 05hideFunctions による特定ツールの非表示

活用シーン

  1. 01異なるデータベースごとに MySQL サーバーを分けて実行
  2. 02プロジェクトごとにファイルシステムのルートパスを設定
  3. 03開発中のサーバーをファイル変更時に自動再起動

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 サーバー

同じ MCP サーバーの複数の分離されたインスタンスを、固有の名前空間と設定で独立して共存させるミドルウェアサーバーです。

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

主な機能

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

同じ種類の MCP サーバーの複数のインスタンスを、独立して同時に実行できます。各インスタンスは、それぞれ異なる設定を持つ独自の分離されたユニバースで動作します。これにより、次のようなシナリオが可能になります。

  • 異なるデータベースを参照する複数の MySQL サーバー mcp-server-mysql
  • 異なる Personal Access Token を使う複数の Git サーバー mcp-server-git
  • 異なるルートパスにアクセスする複数のファイルシステムサーバー mcp-server-filesystem
サーバーの自動再起動

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

JSON ベースの設定システム

シンプルで柔軟な JSON 設定形式を使用して、マルチバースの設定を定義できます。各サーバーインスタンスには、次の項目を個別に設定できます。

  • コマンドと引数
  • 環境変数
  • パス解決ルール
  • ファイル監視設定

ホステッドデプロイ

Fr​onteir AI でホステッドデプロイを利用できます。

インストール

まず、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 のインスタンスを 2 つ実行する場合は、次の設定を追加できます。

{
  "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 のインスタンスを 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_read_file、side-project_write_file のように、side-project のプレフィックスを付けて公開されます。
  • 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"
      ]
    }
  ]
}

この例では、1 つ目のサーバー(filesystem)は起動しますが、関数 write_file は非表示になります。2 つ目のサーバー(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 サーバーを管理する GUI を追加

動作確認済みプラットフォーム

  • Windows
  • macOS
  • Linux

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。