This repository contains Docker images for various MCP (Model Context Protocol) servers that can be deployed on the Stigen.io orchestrator platform.
MCP servers come in different varieties:
- Python-based: Run via
uvx
(uv execution) - Node-based: Run via
npx
(node execution) - Docker-based: Pre-built containers
This repository provides a standardized way to containerize Python and Node-based MCP servers, while also supporting custom Docker images.
servers/
├── python/ # Python-based MCP servers
│ ├── base/ # Base Python Docker image
│ └── time/ # Time server implementation
├── node/ # Node-based MCP servers
│ ├── base/ # Base Node Docker image
│ └── playwright/ # Playwright automation server
└── registry.json # Server registry metadata
Server | Type | Description | Image |
---|---|---|---|
time | PYTHON | Provides time and timezone functionality | ghcr.io/stigenai/mcp-time:latest |
playwright | NODE | Browser automation and web scraping with Playwright | ghcr.io/stigenai/mcp-playwright:latest |
zettelkasten | PYTHON | Implements the Zettelkasten methodology with SQLite storage for knowledge management | ghcr.io/stigenai/mcp-zettelkasten:latest |
Users can also bring their own Docker containers by specifying serverType: "custom"
and providing their own containerImage
.
- Docker
- Bash
- jq
- yq
./scripts/build.sh time
./scripts/build-all.sh
The repository includes GitHub Actions workflows for automated building:
- build-all.yml: Builds all supported servers on push to main
- build-python.yml: Builds Python servers only
- build-node.yml: Builds Node servers only
Each server has a config.yml
file that defines:
- name: Server identifier
- type: python, node, or docker
- version: Semantic version
- environment: Environment variables with defaults
- resources: CPU and memory requirements
Example:
name: mcp-time
type: python
version: 1.0.0
description: "MCP server that provides time and timezone functionality"
environment:
- name: MCP_PORT
default: "3000"
required: false
secret: false
resources:
cpu: 0.25
memory: 256
Servers can define environment variables in their config:
- required: Whether the variable must be provided
- secret: Whether the variable contains sensitive data
- default: Default value if not provided
Secrets are stored encrypted per user/organization and injected at runtime.
The server registry is available in two ways:
# Pull the registry image
docker pull ghcr.io/stigenai/mcp-servers-registry:latest
# Extract registry.json using the provided script
./scripts/get-registry.sh
# Or manually extract
docker create --name temp-registry ghcr.io/stigenai/mcp-servers-registry:latest
docker cp temp-registry:/registry.json ./registry.json
docker rm temp-registry
https://raw.githubusercontent.com/stigenai/mcp-servers/main/servers/registry.json
This allows the orchestrator to:
- List available server types
- Get default configurations
- Validate server deployments
- Auto-populate container images
To add a new MCP server:
- Create a new directory under
servers/[type]/[name]
- Add a
Dockerfile
- Add a
config.yml
- Update
servers/registry.json
- Test locally with
./scripts/build.sh [name]
- Submit a pull request
[Add license information]