MCP Manager is an open-source tool that provides a single control point to organize, activate, and dynamically manage groups of Model Context Protocol (MCP) services so users can quickly switch between clean, purpose-built environments for their different workflows.
- 🔧 Manage MCP Definitions - Store and manage multiple MCP server configurations
- 📦 Workspace Management - Group MCPs into workspaces for different workflows
- 🚀 Workspace Aggregator - Serve multiple MCPs as a single aggregated endpoint
- 🎯 Easy Integration - Works seamlessly with Cursor, Claude, and other MCP clients
- 🔄 Dynamic Routing - Automatically routes requests to the appropriate MCP server
npm install -g @flemzord/mcp-managernpx @flemzord/mcp-manager --helpgit clone https://github.com/flemzord/mcp-manager.git
cd mcp-manager
npm install
npm run build
npm link  # Makes 'mcp-manager' available globallyFirst, define the MCP servers you want to use:
# Add a memory server for temporary storage
mcp-manager mcp add memory \
  --command "npx" \
  --arg "@modelcontextprotocol/server-memory"
# Add a filesystem server with access to your projects
mcp-manager mcp add filesystem \
  --command "npx" \
  --arg "@modelcontextprotocol/server-filesystem" \
  --arg "/path/to/projects"
# Add a GitHub server (requires GITHUB_TOKEN environment variable)
mcp-manager mcp add github \
  --command "npx" \
  --arg "@modelcontextprotocol/server-github" \
  --env "GITHUB_TOKEN=$GITHUB_TOKEN"Group MCPs into workspaces for different use cases:
# Development workspace
mcp-manager workspace add dev \
  --description "Development environment" \
  --member memory \
  --member filesystem \
  --member github
# Data analysis workspace
mcp-manager workspace add data \
  --description "Data analysis tools" \
  --member postgres \
  --member elasticsearchServe a workspace as a single aggregated MCP endpoint:
# Serve the dev workspace
mcp-manager workspace serve dev
# Test with dry run first
mcp-manager workspace serve dev --dry-runAdd to your Cursor MCP configuration (.cursorrules or settings):
{
  "mcpServers": {
    "dev-workspace": {
      "command": "mcp-manager",
      "args": ["workspace", "serve", "dev"]
    }
  }
}Or using npx:
{
  "mcpServers": {
    "dev-workspace": {
      "command": "npx",
      "args": ["mcp-manager", "workspace", "serve", "dev"]
    }
  }
}# List all stored MCP definitions
mcp-manager mcp list
# Show details of a specific MCP
mcp-manager mcp show memory
# Update an MCP definition
mcp-manager mcp add memory \
  --command "npx" \
  --arg "@modelcontextprotocol/server-memory" \
  --arg "--enhanced"  # Updates the existing definition
# Remove an MCP definition
mcp-manager mcp remove memory
# Test run an MCP directly
mcp-manager mcp run memory# List all workspaces
mcp-manager workspace list
# Show workspace details
mcp-manager workspace show dev
# Interactively manage workspace members
mcp-manager workspace manage dev
# List members of a workspace
mcp-manager workspace members dev
# Run all MCPs in a workspace sequentially (for testing)
mcp-manager workspace run dev
# Remove a workspace
mcp-manager workspace remove dev# Serve with additional environment variables
mcp-manager workspace serve dev \
  --env API_KEY=xxx \
  --env DEBUG=true
# Serve with custom working directory
mcp-manager workspace serve dev --cwd /path/to/project
# See what would be served without starting
mcp-manager workspace serve dev --dry-runThe workspace aggregator allows you to combine multiple MCP servers into a single endpoint. This is particularly useful for:
- Simplified Configuration - Configure once in your editor instead of multiple times
- Unified Interface - Access all tools through a single connection
- Resource Sharing - MCPs in the same workspace can complement each other
- Easy Switching - Switch between different workspace configurations quickly
- 
Tool Prefixing: Tools from each MCP are prefixed with the MCP ID - memoryserver's- storetool becomes- memory.store
- githubserver's- search_issuestool becomes- github.search_issues
 
- 
Automatic Routing: The aggregator automatically routes requests to the correct MCP 
- 
Combined Manifests: All tools, prompts, and resources are merged into a single manifest 
# Setup a comprehensive development workspace
mcp-manager mcp add memory --command "npx" --arg "@modelcontextprotocol/server-memory"
mcp-manager mcp add github --command "npx" --arg "@modelcontextprotocol/server-github"
mcp-manager mcp add filesystem --command "npx" --arg "@modelcontextprotocol/server-filesystem" --arg "."
mcp-manager mcp add postgres --command "npx" --arg "@modelcontextprotocol/server-postgres"
# Create and serve the workspace
mcp-manager workspace add fullstack \
  --member memory \
  --member github \
  --member filesystem \
  --member postgres
mcp-manager workspace serve fullstackNow in Cursor, you have access to all tools through a single connection:
- memory.create_entities- Store information in memory
- github.search_issues- Search GitHub issues
- filesystem.read_file- Read local files
- postgres.query- Execute database queries
MCP Manager supports environment variables at multiple levels:
# MCP-level environment variables
mcp-manager mcp add github --env "GITHUB_TOKEN=$GITHUB_TOKEN"
# Workspace-level environment variables (shared by all MCPs)
mcp-manager workspace add dev --env "LOG_LEVEL=debug"
# Runtime environment variables (override for this session)
mcp-manager workspace serve dev --env "API_KEY=xxx"Priority order (later overrides earlier):
- MCP-level environment variables
- Workspace-level environment variables
- Runtime environment variables
MCP Manager stores its configuration in platform-specific locations:
- macOS: ~/Library/Application Support/mcp-manager/config.yaml
- Linux: ~/.config/mcp-manager/config.yaml
- Windows: %APPDATA%\mcp-manager\config.yaml
You can manually edit this file if needed, but using the CLI commands is recommended.
If an MCP fails to start:
- Check error messages in stderr
- Verify the command works standalone: mcp-manager mcp run <id>
- Ensure required environment variables are set
- Check that the MCP package is installed
If tools aren't showing up:
- Verify the MCP supports the tools capability
- Check that the MCP started successfully
- Use --dry-runto inspect the manifest
- Look for errors in the aggregator logs
If Cursor/Claude can't connect:
- Ensure mcp-manageris in your PATH
- Try using the full path to mcp-manager
- Check that the workspace exists: mcp-manager workspace list
- Test the workspace directly: mcp-manager workspace serve <id>
Contributions are welcome! Please feel free to submit issues and pull requests.
MIT