MCP4E MCP Servers are started, updated, and managed via the MCP4E Launcher application. This application assists with fetching configuration, validating licensing, downloading the latest release for an MCP Server, and automatically applying updates as they become available.
The current architecture of the MCP4E Launcher is intended to launch one MCP Server (or cluster of MCP Servers) with one simple command:
LICENSE_KEY=YOUR_LICENSE_KEY ./mcp4e-launcher
With this one-line launch command, the MCP4E launcher application will pull configuration from MCP4E's website and passes those merged environment vairables (from the parent process) and pulled-variables as ENVIRONMENT variables into the sub-process (which will be the licensed MCP Server). Local variables supercede what's configured online.
For customers who do not want to publish particularly private fields on MCP4E.com's license management
page, you can directly pass the SECRET_KEY=SECRET_VALUE as an additional environment
variable. Environment variables are separated by spaces. E.g., SECRET_1=SOMETHING
SECRET_2=ANOTHER_SECRET LICENSE_KEY=SOME_KEY ./mcp4e-launcher.
One of the main benefits of deploying MCP4E-powered MCP Servers via docker is network port flexibility.
Because we follow specific conventions when buliding our sub-processes (MCP Servers), running multiple
MCP-Server applications naturally leads to port collisions. This is entirely avoided by leveraging Docker's port
mapping capabilities.
It is possible to run multiple MCP servers on the same virtual machine due to Docker's convenient
port re-mapping
capabilities and localized networking. When running multiple MCP servers on the same system, we
recommend using Docker with a corresponding compose.yaml file that manages all of those
containers in one convenient location.
Dockerization process: customization may be desired depending on your specific MCP Server's usage of local filesystem resources or otherwise. Adjust this script per your environment's needs.
FROM scratch
COPY mcp4e-launcher /usr/local/bin/mcp4e-launcher
RUN chmod +x /usr/local/bin/mcp4e-launcher
USER 1000:1000
EXPOSE 8080
EXPOSE 8081
EXPOSE 9000
EXPOSE 9001
ENTRYPOINT ["mcp4e-launcher"]
Likewise, a sample corresponding compose.yaml file might look like:
services:
some-mcp-server-name:
image: "your_custom_image:latest"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/actuator/health"]
environment:
- LICENSE_KEY=YOUR_LICENSE_KEY
- SECRETS_GO=HERE
ports:
- "8080:8080"
- "9000:9000"
- "9001:9001"
| Port | Purpose |
|---|---|
| 8080 | MCP4E Health Checker (management port, prometheus metrics, etc) |
| 9000 | MCP Server port |
| 9001 | MCP Server management port (if applicable) |
xattr -d com.apple.quarantine mcp4e-darwin-aarch64