MCP Director: Rust proxy/aggregator for Model Context Protocol servers - single entry point for AI clients (Claude, Cursor, Gemini), ACL, projects, analytics.
MCP Director
Centralized hub for managing MCP (Model Context Protocol) servers. Acts as a proxy/aggregator, providing a single entry point for AI clients (Claude Desktop, Claude Code, Cursor, etc.).
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Claude Desktop │ │ Claude Code │ │ Cursor │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
│ STDIO │ STDIO │ HTTP/SSE
│ │ │
└───────────────────────┴───────────────────────┘
│
┌────────────▼────────────┐
│ MCP Director │
│ ┌───────────────────┐ │
│ │ Router + ACL │ │
│ │ Profiles/Projects│ │
│ │ Analytics │ │
│ └───────────────────┘ │
└────────────┬────────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Server 1 │ │ MCP Server 2 │ │ MCP Server N │
│ (filesystem) │ │ (github) │ │ (custom) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Key Features
- Aggregation: Combine multiple MCP servers into one endpoint
- Transports: Support for STDIO and HTTP (SSE) transports for clients
- Access Control: Flexible profiles with white/black lists (glob patterns), rate limiting, and time restrictions
- Projects: Ability to create different sets of servers for different projects
- Web Interface: Integrated web interface for managing servers and viewing analytics
- Analytics: Logging of all requests with performance metrics
Quick Start
Requirements
- Rust (latest stable)
- Node.js (required for web interface and some MCP servers)
Installation
cargo install --path apps/mcp-director-cli
Docker
docker-compose up -d
Running
mcp-director serve --config config/default.yaml
Global options: --json (machine-readable output), --dry-run (preview changes), --yes (auto-confirm).
Usage with Clients
Single Client Mode
For a single AI client, use serve directly:
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"director": {
"command": "mcp-director",
"args": ["serve"]
}
}
}
Multi-Client Mode
For multiple AI clients sharing the same MCP Director instance:
Step 1: Start the daemon:
mcp-director serve --no-stdio
Step 2: Configure clients to use connect:
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"director": {
"command": "mcp-director",
"args": ["connect", "--project", "my-project"]
}
}
}
Claude Code (.mcp.json):
{
"mcpServers": {
"director": {
"command": "mcp-director",
"args": ["connect", "--project", "my-project"]
}
}
}
HTTP Mode (Cursor, etc.)
- Go to MCP settings in Cursor
- Add a new server:
- URL:
http://localhost:3000/sse - Transport:
SSE - Optional: append
?project=your-project&profile=your-profile
- URL:
Documentation
Full documentation is available at ursul.github.io/mcp-director
- Installation
- Configuration
- HTTP API
- OpenAPI Spec
- CLI Reference
- Architecture
- Development
- Testing
- Troubleshooting
Contributing
We welcome contributions! Please see our CONTRIBUTING.md for details on our code of conduct, development workflow, and how to submit pull requests.
License
MIT