A todo management system designed for coordinating tasks across multiple projects, utilizing MongoDB and MQTT.
A comprehensive FastMCP-based todo management system that serves as a central nervous system for multi-project task coordination. Part of the Madness Interactive ecosystem, Omnispindle combines AI-powered task insights, an MCP toolbelt, and task board to transform chaos into productivity.
Example of a todo output from Claude Sonnet 4.0 without anything being additional being added to the prompt:
{
"project": "Omnispindle",
"description": "ANALYSIS: Node-RED routing issues - need to fix link-in/link-out patterns for project operations to match todo operation patterns",
"priority": "High",
"metadata": {
"ticket": "routing-analysis",
"tags": [
"node-red",
"routing",
"analysis",
"link-nodes"
]
}
}
Result:
{"success": true, "todo_id": "af007427-9ebb-4304-8d95-5cafc4a855dd", "message": "Todo created successfully"}
Omnispindle consists of multiple integrated components:
The captured tasks integrate seamlessly with the Todomill Projectorium dashboard, where you can review, refine, and execute them when you're ready to tackle them.
Clone the repository:
git clone https://github.com/DanEdens/Omnispindle.git
cd Omnispindle
Install with uv (recommended):
curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv
source .venv/bin/activate # On Unix/macOS
uv pip install -r requirements.txt
Configure environment:
cp .env.example .env
# Edit .env with your MongoDB and MQTT settings
Start with Docker (easiest):
docker-compose up -d
Create a .env
file with your settings:
# MongoDB Configuration
MONGODB_URI=mongodb://localhost:27017
MONGODB_DB=todo_app
MONGODB_COLLECTION=todos
# MQTT Configuration
MQTT_HOST=localhost
MQTT_PORT=1883
# AI Integration (optional)
AI_API_ENDPOINT=http://localhost:1234/v1
AI_MODEL=qwen2.5-7b-instruct
Add to your Claude Desktop claude_desktop_config.json
:
{
"mcpServers": {
"omnispindle": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--network", "host",
"-e", "MONGODB_URI=mongodb://localhost:27017",
"-e", "MONGODB_DB=swarmonomicon",
"-e", "MQTT_HOST=localhost",
"danedens31/omnispindle:latest"
]
}
}
}
{
"mcpServers": {
"omnispindle": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--env-file", "/path/to/your/.env",
"--network", "omnispindle_default",
"danedens31/omnispindle:latest"
]
}
}
}
{
"mcpServers": {
"omnispindle": {
"command": "python",
"args": ["-m", "src.Omnispindle"],
"cwd": "/path/to/Omnispindle",
"env": {
"MONGODB_URI": "mongodb://localhost:27017",
"MONGODB_DB": "swarmonomicon",
"MQTT_HOST": "localhost"
}
}
}
}
The server exposes the following tools for AI agents:
add_todo_tool
- Create new tasks with metadataquery_todos_tool
- Search and filter tasksupdate_todo_tool
- Modify existing tasksmark_todo_complete_tool
- Complete taskslist_project_todos_tool
- Get tasks by projectadd_lesson_tool
- Capture lessons learnedsearch_lessons_tool
- Query knowledge basemqtt_publish_tool
- Send real-time messagesmqtt_get_tool
- Retrieve MQTT messages# Development mode
python -m src.Omnispindle
# Production mode
uvicorn src.Omnispindle.server:app --host 0.0.0.0 --port 8000
The server exposes standardized MCP tools that AI agents can call:
# Example: AI agent creating a todo
await add_todo_tool(
description="Implement user authentication",
project="Omnispindle",
priority="High",
target_agent="developer",
metadata={"ticket": "AUTH-123", "tags": ["security", "backend"]}
)
# Example: AI agent querying todos
results = await query_todos_tool(
query_or_filter="project:Omnispindle",
fields_or_projection="all",
limit=50
)
from fastmcp import FastMCPClient
# Connect to Omnispindle
client = FastMCPClient("http://localhost:8000")
# Create a new todo
response = await client.call_tool("add_todo_tool", {
"description": "Fix critical bug in authentication",
"project": "Madness_interactive",
"priority": "High"
})
# Get project todos
todos = await client.call_tool("list_project_todos_tool", {
"project": "Omnispindle",
"limit": 10
})
http://localhost:1880/ui
Todomill_projectorium/ExportedNodeRedTabs/
Omnispindle/
โโโ src/Omnispindle/ # Main MCP server implementation
โ โโโ __init__.py # Tool registration and initialization
โ โโโ server.py # FastMCP server core
โ โโโ tools.py # Todo and lesson management tools
โ โโโ ai_assistant.py # AI integration and suggestions
โ โโโ scheduler.py # Smart scheduling features
โ โโโ mqtt.py # MQTT messaging integration
โ โโโ todo_log_service.py # Audit logging service
โโโ Todomill_projectorium/ # Node-RED dashboard subrepo
โ โโโ ExportedNodeRedTabs/ # Node-RED flow definitions
โ โโโ JavascriptFromFunctionNode/ # Dashboard logic
โ โโโ HtmlFromTemplateNode/ # UI templates
โ โโโ UIComponents/ # Reusable UI components
โโโ tests/ # Test suite
โโโ config/ # Configuration files
โโโ docs/ # Documentation
โโโ docker-compose.yml # Container orchestration
โโโ pyproject.toml # Project metadata
# Run all tests
pytest tests/
# Run with coverage
pytest --cov=src tests/
# Run specific tests
pytest tests/test_todo_log.py -v
Todomill_projectorium/
src/Omnispindle/tools.py
src/Omnispindle/__init__.py
tests/
# Omnispindle works with Swarmonomicon for distributed task processing
from swarmonomicon import TaskAgent
agent = TaskAgent("omnispindle-worker")
agent.register_mcp_server("http://localhost:8000")
# Agent can now create and manage todos via MCP
await agent.execute_task("create_todo", {
"description": "Process data pipeline",
"project": "Swarmonomicon"
})
# Sync todos with GitHub issues
todo_id = await add_todo_tool(
description="Fix authentication bug",
project="Madness_interactive",
metadata={"github_issue": 1234}
)
# Subscribe to todo events
mosquitto_sub -t "omnispindle/todos/+/+"
# Publish todo creation request
mosquitto_pub -t "omnispindle/todos/create" -m '{
"description": "Deploy to production",
"project": "Omnispindle",
"priority": "High"
}'
git checkout -b feature/amazing-feature
pytest tests/
MIT License - see LICENSE file for details.
"In the chaotic symphony of development tasks, Omnispindle conducts with AI-powered precision!" ๐ญโจ
Fetch and summarize YouTube videos by extracting their titles, descriptions, and transcripts.
Integrates Claude AI with the Redmine project management system to enhance project management tasks.
Turn your Make scenarios into callable tools for AI assistants.
Contract and template management for drafting, reviewing, and sending binding contracts.
Integrates with Linear project management systems.
Access data from the Bakalรกลi school system, including schedules, absences, and grades, through a standardized API.
Dynamic and reflective problem-solving through thought sequences
Parses invoice data, uploads it to Google Sheets, and answers queries by fetching information from the sheet.
An intelligent task management system based on MCP, providing an efficient programming workflow framework for AI Agents with an optional web-based GUI.
Interact with the Umbraco CMS Management API for administrative tasks.