🚀 MCP Server with Docker, Redis, and TimescaleDB
This repository sets up a Model Context Protocol (MCP) Server using Docker, integrating Redis and TimescaleDB for efficient data management.
🛠️ Features
- FastAPI: Serves as the web framework for the MCP server.
- Redis: Provides caching mechanisms.
- TimescaleDB: A time-series database built on PostgreSQL.
- Docker Compose: Orchestrates multi-container Docker applications.
- Environment Variables: Configurable via
.envfile. - Systemd Service: Ensures the server auto-starts on reboot.
📋 Prerequisites
- Docker and Docker Compose installed on your system.
- Git for version control.
- Zsh with Oh-My-Zsh (optional, for enhanced shell experience).
📂 Repository Structure
mcp-server-docker/
├── app/
│ └── app.py
├── .env.example
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── scripts/
│ ├── bootstrap-mcp.sh
│ ├── full-bootstrap-mcp.sh
│ ├── init-repo.sh
│ ├── push-repo.sh
│ └── setup-mcpserver.sh
└── README.md
🚀 Setup Instructions
-
Clone the Repository:
git clone https://github.com/chuckwilliams37/mcp-server-docker.git cd mcp-server-docker
-
Configure Environment Variables:
cp .env.example .env
Modify
.envas needed. -
Build and Start the Containers:
docker compose build docker compose up -d
-
Access the MCP Server:
http://localhost:8080
🔄 Auto-Restart on Reboot
Create a systemd service to keep your app alive:
sudo nano /etc/systemd/system/mcp-docker.service
Paste:
[Unit]
Description=MCP Docker Compose App
Requires=docker.service
After=docker.service
[Service]
WorkingDirectory=/home/youruser/mcp-server-docker
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
Restart=always
TimeoutStartSec=0
[Install]
WantedBy=multi-user.target
Enable it:
sudo systemctl daemon-reload
sudo systemctl enable mcp-docker
sudo systemctl start mcp-docker
🧪 Scripts
The scripts/ directory contains utility scripts to automate infrastructure tasks.
🛠️ scripts/full-bootstrap-mcp.sh
💡 Use this on a fresh Ubuntu VM to fully prepare it for MCP deployment. It:
- Installs system dependencies (Docker, Git, Zsh, UFW, Fail2Ban, etc.)
- Sets up
oh-my-zshwith thejonathantheme - Configures Remote Desktop with XFCE + XRDP
- Clones the MCP repo
- Builds and launches the app with
docker compose - Adds a systemd service to relaunch containers on reboot
chmod +x scripts/full-bootstrap-mcp.sh
./scripts/full-bootstrap-mcp.sh
📜 scripts/init-repo.sh
Initializes a new local Git repository and commits the current directory:
chmod +x scripts/init-repo.sh
./scripts/init-repo.sh
📤 scripts/push-repo.sh
Pushes your local repo to a remote (update URL first):
chmod +x scripts/push-repo.sh
./scripts/push-repo.sh
🧠 scripts/setup-mcpserver.sh
Configures your local SSH environment to access a remote MCP server:
- Pushes your public key
- Adds an SSH alias
- Prints a sample A-record
chmod +x scripts/setup-mcpserver.sh
./scripts/setup-mcpserver.sh
⚠️ Edit placeholder values (e.g., IPs, usernames, repo URLs) before executing.
🤝 Contributions
Feel free to fork this repository, submit issues, or create pull requests.
📄 License
This project is licensed under the MIT License.
Metadata
Release files for iflow-mcp_chuckwilliams37-mcp-server-docker 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| iflow_mcp_chuckwilliams37_mcp_server_docker-0.1.0.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| iflow_mcp_chuckwilliams37_mcp_server_docker-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.4 kB
Release files / iflow_mcp_chuckwilliams37_mcp_server_docker-0.1.0.tar.gz
| Download URL | iflow_mcp_chuckwilliams37_mcp_server_docker-0.1.0.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
41eda31137bf438f67f8ae1c7e14d000f371ec20e14d0e4eb73954f06912bdd5
|
|
BLAKE2b-256 checksum How to use checksums |
a561771e99eb9615ad13c74b591ff8ceeff76552ffcb2db04a10cf0f845bf170
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / iflow_mcp_chuckwilliams37_mcp_server_docker-0.1.0-py3-none-any.whl
| Download URL | iflow_mcp_chuckwilliams37_mcp_server_docker-0.1.0-py3-none-any.whl |
|---|---|
| Size | 4.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
146f2b2a4ec24891441663fc9390139d98606985f643aca8314a88bb569a0ebd
|
|
BLAKE2b-256 checksum How to use checksums |
7152fbae1c68024e8b0efb2ad3b4229656738147bed4535db6d1bfa6583eeba9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|