This project runs multiple MCP servers using Supergateway to expose each server over SSE (Server-Sent Events). Each server runs in its own container on a dedicated port.
# Copy environment file
cp .env.example .env
# Edit your API tokens
vim .env
# Start all services
docker-compose up -d- Multiple containers, each running a specific MCP server via Supergateway
- Each server exposed on a unique port (9001-9006)
- Servers can be connected to individually or all at once
- Persistent data stored in mounted volumes
# Start all services
docker-compose up -d
# Stop all services
docker-compose down
# Restart all services
docker-compose restart
# Check status
docker-compose ps
# View logs from all services
docker-compose logs -f
# View logs from specific service
docker-compose logs -f mcp-filesystem
docker-compose logs -f mcp-github# Restart specific service
docker-compose restart mcp-filesystem
docker-compose restart mcp-github
# Shell into specific container
docker-compose exec mcp-filesystem sh
docker-compose exec mcp-github sh
# View logs from last 50 lines
docker-compose logs --tail=50# Stop and remove containers
docker-compose down
# Stop and remove containers + volumes
docker-compose down -v
# Pull latest images
docker-compose pull| Service | Port | Description | Environment Variables |
|---|---|---|---|
| mcp-github | 9001 | GitHub repository access | GITHUB_TOKEN, GITHUB_OWNER |
| mcp-linear | 9002 | Linear issue tracking | LINEAR_API_KEY, GITHUB_TOKEN |
| mcp-notion | 9003 | Notion workspace access | NOTION_TOKEN |
| mcp-filesystem | 9004 | File system operations | - |
| mcp-memory | 9005 | Persistent memory | - |
| mcp-sequential-thinking | 9006 | Step-by-step reasoning | - |
| mcp-context7 | 9007 | Up-to-date documentation | DEFAULT_MINIMUM_TOKENS |
| mcp-prisma | 9009 | Prisma database management | - |
- Copy the example:
make setup(orcp .env.example .env) - Edit
.envwith your actual API tokens:GITHUB_OWNER- Your GitHub usernameGITHUB_TOKEN- GitHub Personal Access TokenNOTION_TOKEN- Notion API tokenLINEAR_API_KEY- Linear API key
Each server is available via SSE at:
- SSE Endpoint:
http://localhost:900X/sse - POST Messages:
http://localhost:900X/message
Connect to individual servers:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9001/sse"]
},
"linear": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9002/sse"]
},
"notion": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9003/sse"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9004/sse"]
},
"memory": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9005/sse"]
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9006/sse"]
},
"context7": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9007/sse"]
},
"prisma": {
"command": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9009/sse"]
}
}
}{
"context_servers": {
"github": {
"command": {
"path": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9001/sse"]
}
},
"filesystem": {
"command": {
"path": "npx",
"args": ["-y", "supergateway", "--sse", "http://localhost:9004/sse"]
}
}
}
}- Repository operations (clone, create, update)
- Issue and PR management
- File operations within repositories
- Requires:
GITHUB_TOKEN,GITHUB_OWNER
- Issue creation and management
- Project and team operations
- Integration with GitHub repositories
- Requires:
LINEAR_API_KEY,GITHUB_TOKEN
- Database queries and updates
- Page creation and modification
- Block-level operations
- Requires:
NOTION_TOKEN
- File and directory operations
- Mounted to
/workspace(maps to/home/vagrant/projects) - Read, write, create, delete operations
- Persistent memory across sessions
- Data stored in
/home/vagrant/.shared-memory - Key-value storage for context retention
- Step-by-step reasoning and planning
- Multi-step problem solving
- No external dependencies
- Fetches up-to-date, version-specific documentation
- Pulls code examples straight from the source
- Helps avoid outdated training data and hallucinated APIs
- Usage: Add "use context7" to your prompts
- Environment:
DEFAULT_MINIMUM_TOKENS(default: 10000)
- Prisma database management and schema operations
- Database instance management for Postgres
- Schema migrations and database operations
- Early access features for Prisma Platform
- No API key required (uses Prisma CLI authentication)
Check container status:
docker-compose psView logs from all services:
docker-compose logs -fView logs from specific service:
docker-compose logs -f mcp-github # GitHub server logs
docker-compose logs -f mcp-filesystem # Filesystem server logs
# etc.Test individual server connectivity:
curl http://localhost:9001/sse # Should return SSE stream
curl http://localhost:9004/sse # Filesystem serverFull restart:
docker-compose down
docker-compose up -dShell into specific container:
docker-compose exec mcp-github sh
docker-compose exec mcp-filesystem shAdd a new MCP server:
- Add service to
docker-compose.yml - Choose next available port (9007+)
- Add environment variables to
.env.exampleif needed - Update this README with server details
Monitor all services:
docker-compose up -d && docker-compose logs -f