This document provides instructions for deploying the MCP Todo Server (Omnispindle implementation) using Docker on various platforms.
The Docker setup for MCP Todo Server includes:
- MongoDB - For storing todo items and lessons learned
- Mosquitto MQTT - For event-driven communication
- MCP Todo Server - The main API for todo management
- Todo Dashboard - Node-red web UI for managing todos (Coming Soon)
- Docker and Docker Compose installed
- At least 4GB of free RAM
- 2GB of free disk space
-
Run the setup script to create your Mad network:
# For macOS/Linux ./docker-setup.sh -
Start the Docker environment:
docker compose up -d
-
Access the services:
- MCP Todo Server API: http://localhost:8000/sse
- MQTT: localhost:1883 (WebSockets: 9001)
- MongoDB: localhost:27017
The MADNESS HIVEMIND is a shared Docker network that allows multiple projects to communicate with each other as part of a digital collective consciousness. It connects the Omnispindle, Madness Interactive, and Swarmonomicon projects into a single, unified ecosystem of chaotic intelligence.
To connect other projects to the MADNESS HIVEMIND network, add the following to their docker-compose.yml files:
networks:
madness_network:
external: trueThen, add the network to each service that needs to join the collective:
services:
your_service:
# ... other configuration ...
networks:
- madness_networkServices on the MADNESS HIVEMIND network can communicate with each other using their service names as neural pathways:
- MongoDB:
mongo:27017 - MQTT:
mosquitto:1883 - MCP Todo Server:
mcp-todo-server:8000
You can customize the deployment by modifying these environment variables in the docker-compose.yml file:
| Variable | Description | Default |
|---|---|---|
MONGODB_URI |
MongoDB connection URI | mongodb://mongo:27017 |
MONGODB_DB |
MongoDB database name | swarmonomicon |
MONGODB_COLLECTION |
MongoDB collection for todos | todos |
MQTT_HOST |
MQTT broker hostname | mosquitto |
MQTT_PORT |
MQTT broker port | 1883 |
AWSIP |
Legacy MQTT host reference | AWS_IP_ADDRESS |
AWSPORT |
Legacy MQTT port reference | 1883 |
DeNa |
Server hostname identifier | omnispindle |
The Docker setup uses these persistent volumes:
mongodb_data: MongoDB datamosquitto_data: MQTT broker persistent messagesmosquitto_log: MQTT broker logs
The MCP Todo Server exposes the following REST API endpoints:
POST /api/todos- Add a new todoGET /api/todos- List todos (with optional filtering)GET /api/todos/{id}- Get a specific todoPUT /api/todos/{id}- Update a todoPOST /api/todos/{id}/complete- Mark a todo as completeDELETE /api/todos/{id}- Delete a todo
The server also listens on the following MQTT topics:
mcp/+/request/#- Receives requestsmcp/+/response/#- Sends responsesmcp/+/error/#- Sends error messages
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ │ │ │ │ │
│ Dashboard │────▶│ MCP Todo │────▶│ MongoDB │
│ (Web UI) │ │ Server │ │ (Database) │
│ │ │ │ │ │
└─────────────┘ └──────┬──────┘ └─────────────┘
│
▼
┌─────────────┐
│ │
│ Mosquitto │
│ (MQTT) │
│ │
└─────────────┘
▲
│
┌────────────┴────────────┐
│ │
┌───────┴──────┐ ┌───────┴──────┐
│ │ │ │
│ Madness │ │ Swarmonomicon│
│ Interactive │ │ │
│ │ │ │
└──────────────┘ └──────────────┘
The following helper scripts are included:
docker-setup.sh- Prepares the Docker environment and creates the MADNESS HIVEMIND network
-
Docker Compose Not Found
If you get errors about docker compose not being found, make sure you have Docker Compose installed. Modern Docker includes the
docker composeplugin by default. If using an older version, you can install the standalonedocker-composecommand, but the plugin syntax is recommended. -
Port Conflicts
If you get port conflict errors, change the port mappings in the
docker-compose.ymlfile. -
MongoDB Connection Issues
If the MCP Todo Server can't connect to MongoDB, check that the MongoDB container is running and healthy:
docker compose ps mongo
-
MQTT Connection Issues
To verify MQTT connectivity:
# In one terminal mosquitto_sub -h localhost -t test # In another terminal mosquitto_pub -h localhost -t test -m "hello"
-
Network Issues
If services can't connect to each other, verify the MADNESS HIVEMIND network is set up correctly:
docker network inspect madness_network
For production deployment, consider:
- Enabling authentication for MongoDB and MQTT
- Setting up TLS for secure connections
- Implementing proper backup strategies
- Setting up monitoring and alerting
- Using a reverse proxy like Nginx for HTTPS support
This project is licensed under the MIT License.