Skip to main content

API-first MCP Todo Server for AI agents with Auth0 integration

Project description

Omnispindle

FastMCP-based task and knowledge management system for AI agents

Omnispindle is the coordination layer of the Madness Interactive ecosystem. It provides standardized MCP tools for todo management, lesson capture, and cross-project coordination that AI agents can use to actually get work done.

What it does

For AI Agents:

  • Add, query, update, and complete todos with full audit logging
  • Capture and search lessons learned across projects
  • Access project-aware context and explanations
  • Coordinate work across the Madness Interactive ecosystem

For Humans:

  • Visual dashboard through Inventorium
  • Real-time updates via MQTT
  • Claude Desktop integration via MCP
  • Project-aware working directories

For the Future:

  • Terraria mod integration (tools as inventory items - yes, really)
  • SwarmDesk 3D workspace coordination
  • Game-like AI context management for all skill levels

Installation

📦 PyPI Installation (Recommended)

# Install from PyPI
pip install omnispindle

# Run the MCP stdio server
omnispindle-stdio

# Or run the web server
omnispindle

Available CLI commands after installation:

  • omnispindle - Web server for authenticated endpoints
  • omnispindle-server - Alias for web server
  • omnispindle-stdio - MCP stdio server for Claude Desktop

🚀 Claude Desktop Integration (Zero Config!)

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "omnispindle": {
      "command": "omnispindle-stdio",
      "env": {
        "OMNISPINDLE_MODE": "api",
        "OMNISPINDLE_TOOL_LOADOUT": "basic",
        "MCP_USER_EMAIL": "your-email@example.com"
      }
    }
  }
}

That's it! The first time you use an Omnispindle tool:

  1. 🌐 Your browser opens automatically for Auth0 login
  2. 🔐 Log in with Google (or Auth0 credentials)
  3. ✅ Token is saved locally for future use
  4. 🎯 All MCP tools work seamlessly with your authenticated context

No tokens to copy, no manual config files, no complex setup!

🛠 Development Installation

# Clone the repository
git clone https://github.com/DanEdens/Omnispindle.git
cd Omnispindle

# Install dependencies
pip install -r requirements.txt

# Run the MCP server
python -m src.Omnispindle.stdio_server

For more details, see the MCP Client Auth Guide.

Architecture

Omnispindle v1.0.0 features a modern API-first architecture:

🏗 Core Components

  • FastMCP Server - High-performance MCP implementation with stdio/HTTP transports
  • API-First Design - HTTP calls to madnessinteractive.cc/api (recommended)
  • Hybrid Mode - API-first with local database fallback for reliability
  • Zero-Config Auth - Automatic Auth0 device flow authentication
  • Tool Loadouts - Configurable tool sets to reduce AI agent token usage

🔄 Operation Modes

  • api - HTTP API calls only (recommended for production)
  • hybrid - API-first with MongoDB fallback (default)
  • local - Direct MongoDB connections (legacy mode)
  • auto - Automatically choose best performing mode

🔐 Authentication & Security

  • Auth0 Integration - JWT tokens from device flow authentication
  • API Key Support - Alternative authentication method
  • User Isolation - All data scoped to authenticated user context
  • Git-secrets Protection - Automated credential scanning and prevention

Configuration

🎛 Environment Variables

Operation Mode:

  • OMNISPINDLE_MODE - api, hybrid, local, auto (default: hybrid)
  • OMNISPINDLE_TOOL_LOADOUT - Tool loadout configuration (default: full)
  • OMNISPINDLE_FALLBACK_ENABLED - Enable fallback in hybrid mode (default: true)

Authentication:

  • MADNESS_API_URL - API base URL (default: https://madnessinteractive.cc/api)
  • MADNESS_AUTH_TOKEN - JWT token from Auth0 device flow
  • MADNESS_API_KEY - API key alternative authentication
  • MCP_USER_EMAIL - User email for context isolation

Local Database (hybrid/local modes):

  • MONGODB_URI - MongoDB connection string
  • MONGODB_DB - Database name (default: swarmonomicon)
  • MQTT_HOST / MQTT_PORT - MQTT broker settings

🎯 Tool Loadouts

Configure OMNISPINDLE_TOOL_LOADOUT to control available functionality:

  • full - All 22 tools available (default)
  • basic - Essential todo management (7 tools)
  • minimal - Core functionality only (4 tools)
  • lessons - Knowledge management focus (7 tools)
  • admin - Administrative tools (6 tools)
  • hybrid_test - Testing hybrid functionality (6 tools)

Integration

Part of the Madness Interactive ecosystem:

  • Inventorium - Web dashboard and 3D workspace
  • SwarmDesk - Project-specific AI environments
  • Terraria Integration - Game-based AI interaction (coming soon)

Development

# Run tests
pytest tests/

# Start STDIO MCP server (for Claude Desktop)
python stdio_main.py

# Start HTTP MCP server (for remote access)
python -m src.Omnispindle

# Check tool registration
python -c "from src.Omnispindle.stdio_server import OmniSpindleStdioServer; print(len(OmniSpindleStdioServer().server._tools))"

Production Deployment

Option 1: Local STDIO (Claude Desktop)

For local development and use with clients like Claude Desktop, the stdio server is recommended. It now supports secure authentication via Auth0 tokens.

  1. Get Your Auth0 Token: Follow the instructions in the MCP Client Auth Guide.

  2. Configure Claude Desktop: Update your claude_desktop_config.json:

{
  "mcpServers": {
    "omnispindle": {
      "command": "python",
      "args": ["-m", "src.Omnispindle.stdio_server"],
      "cwd": "/path/to/Omnispindle",
      "env": {
        "AUTH0_TOKEN": "your_auth0_token_here",
        "OMNISPINDLE_TOOL_LOADOUT": "basic"
      }
    }
  }
}

This is now the preferred and most secure way to use Omnispindle with local MCP clients.

Option 2: Remote HTTP (Cloudflare Protected)

# Start HTTP server
python -m src.Omnispindle

# Deploy infrastructure
cd OmniTerraformer/
./deploy.sh

Configure MCP client:

{
  "mcpServers": {
    "omnispindle": {
      "command": "mcp-remote",
      "args": ["https://madnessinteractive.cc/mcp/"]
    }
  }
}

Privacy & Security

This repository contains sensitive configurations:

  • Auth0 client credentials and domain settings
  • Database connection strings and API endpoints
  • MCP tool implementations with business logic
  • Infrastructure as Code with account identifiers

For production use:

  • Fork this repository for your own organization
  • Update all authentication providers and credentials
  • Configure your own domain and SSL certificates
  • Review and modify tool permissions as needed

Not recommended for public deployment without modification.

Philosophy

We build tools that make AI agents actually useful for real work. Simple interfaces, robust backends, and enough ambition to make it interesting.

The todo management works today. The Terraria integration will make your kids better at prompt engineering than most adults. The 3D workspace will make remote work feel like science fiction.

But first: get your todos managed properly.


"Simple tools for complex minds, complex tools for simple minds"

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

omnispindle-1.0.0.tar.gz (91.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omnispindle-1.0.0-py3-none-any.whl (104.6 kB view details)

Uploaded Python 3

File details

Details for the file omnispindle-1.0.0.tar.gz.

File metadata

  • Download URL: omnispindle-1.0.0.tar.gz
  • Upload date:
  • Size: 91.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for omnispindle-1.0.0.tar.gz
Algorithm Hash digest
SHA256 b9394655d797fd4b59568d79d98ff38768d38cbc4c69e5607a13a7182656767f
MD5 9780c045dc7947c7838f819698475e98
BLAKE2b-256 99acae103653f8a0860d8108441583d483b50305925285ce9c355a600bc27f38

See more details on using hashes here.

File details

Details for the file omnispindle-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: omnispindle-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 104.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for omnispindle-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8b4730452aedae194d2b5bf61dc08dd6f830c2efd4fd5acfce3d6c09b58ba4b1
MD5 40557df16b20cc90b894d2008b8057cf
BLAKE2b-256 fd42739b8f7942b28b3052735e0a186a48a4415a2d7cd26b352dd6f1098536d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page