Skip to main content

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

Project description

Omnispindle

A todo system that went too deep

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 actually does

The boring (useful) parts:

  • AI agents can manage todos, capture lessons, search knowledge bases
  • Full audit logging because trust issues are valid
  • Project-aware context so your agent knows where it is
  • Configurable tool loadouts (4 to 30 tools, pick your poison)
  • Zero-config Auth0 authentication (browser opens, you login, done)

The interesting (ambitious) parts:

  • Three operation modes: API-first, hybrid with fallbacks, or pure local
  • MQTT for real-time cross-system coordination
  • Visual dashboard via Inventorium
  • Integration with the Madness Interactive ecosystem

The weird (future) parts:

  • Terraria mod where AI tools are actual inventory items
  • SwarmDesk 3D workspace coordination
  • Teaching kids prompt engineering through video games

First we manage todos properly. Then we get weird with it.

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: where "just a todo app" went wonderfully wrong.

🏗 What's Inside

  • FastMCP Server - Talks stdio and HTTP (your AI's new best friend)
  • API-First Design - HTTP calls to madnessinteractive.cc/api (works great)
  • Hybrid Mode - API-first with MongoDB parachute (just in case)
  • Zero-Config Auth - Browser pops open, you login, magic happens
  • Tool Loadouts - 4 to 30 tools depending on your token budget

🔄 Operation Modes

  • api - HTTP API calls only (cloud-native, no database required)
  • hybrid - API-first with MongoDB safety net (default, plays it safe)
  • local - Direct MongoDB connections (old school, still works)
  • auto - Picks the fastest option (let the system decide)

🔐 Authentication & Security

  • Auth0 Integration - JWT tokens via device flow (browser handles it)
  • API Key Support - For when you want long-lived tokens
  • User Isolation - Your todos stay yours (database-level separation)
  • Git-secrets Protection - Catches credentials before they hit GitHub

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)
  • AUTH0_TOKEN - JWT token from Auth0 device flow (for stdio/local MCP)
  • MADNESS_AUTH_TOKEN - Alternative token name (used by API client in api/hybrid modes)
  • 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 30 tools available (default)
  • basic - Essential todo management (7 tools)
  • minimal - Core functionality only (4 tools)
  • lessons - Knowledge management focus (7 tools)
  • admin - Administrative tools and session management (13 tools)
  • lightweight - Token-optimized core functionality (10 tools)
  • write_only - Create, update, delete operations only (6 tools)
  • read_only - Query and get operations only (8 tools)
  • hybrid_test - Testing hybrid functionality (6 tools)

Integration

Part of the Madness Interactive ecosystem (yes, we named it that):

  • Inventorium - Web dashboard and 3D workspace for humans who like GUIs
  • SwarmDesk - Project-specific AI environments (think context switching, but spatial)
  • Terraria Integration - Tools as inventory items (because why not)

Development

# Run tests
pytest tests/

# Start STDIO MCP server (for Claude Desktop)
python -m src.Omnispindle.stdio_server

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

Usage with Claude Desktop

STDIO Server Setup

The stdio server is how Claude Desktop talks to Omnispindle. Zero-config auth means you literally just run it.

  1. Authentication: Browser opens, you login, done. (Want manual token setup? See the MCP Client Auth Guide)

  2. Configure Claude Desktop: Add this to your claude_desktop_config.json:

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

That's it. Browser auth, local server, AI agents with todo superpowers.

Privacy & Security

Fair warning: This repo has our Auth0 configs, database strings, and infrastructure-as-code with real account IDs. It's open source for learning and forking, not for deploying as-is to production.

If you're actually using this:

  1. Fork it
  2. Change all the auth providers and credentials
  3. Point it at your own domains and databases
  4. Review the tool permissions (we're pretty permissive)
  5. Don't blame us if you deploy our configs to prod

This is a working system for our ecosystem. For yours, you'll need to make it your own.

Philosophy

Most people build todo apps with 5 features and call it a day. We built one with 30 MCP tools, three operation modes, zero-config OAuth, and a roadmap involving Minecraft-adjacent technology.

This is either exactly the right amount of complexity or way too much. Time will tell.

What works now:

  • Todo management for AI agents (rock solid)
  • Knowledge capture across projects (actually useful)
  • Zero-setup authentication (shockingly smooth)
  • API-first architecture with MongoDB parachute (overkill? maybe. reliable? absolutely.)

What's coming:

  • Teaching kids prompt engineering through Terraria (ambitious)
  • 3D workspace coordination (science fiction vibes)
  • Making AI context management feel like inventory management (weird, might work)

The complexity serves a purpose: AI agents need real tools for real work. We just happen to think "real work" shouldn't be boring.


"Over-engineered? Maybe. Under-ambitious? Never."

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

iflow_mcp_danedens_omnispindle-1.0.1.tar.gz (133.6 kB view details)

Uploaded Source

Built Distribution

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

iflow_mcp_danedens_omnispindle-1.0.1-py3-none-any.whl (148.2 kB view details)

Uploaded Python 3

File details

Details for the file iflow_mcp_danedens_omnispindle-1.0.1.tar.gz.

File metadata

  • Download URL: iflow_mcp_danedens_omnispindle-1.0.1.tar.gz
  • Upload date:
  • Size: 133.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","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}

File hashes

Hashes for iflow_mcp_danedens_omnispindle-1.0.1.tar.gz
Algorithm Hash digest
SHA256 664ced2a82589aa5e088355d785b73974f3376a3843ca7639e40353284966ec1
MD5 72fa03297c596dec4c2553d9fba42ac7
BLAKE2b-256 38b65673178934eb67de5416779e204062ad12c3c78da05701321f10a47225a2

See more details on using hashes here.

File details

Details for the file iflow_mcp_danedens_omnispindle-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_danedens_omnispindle-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 148.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","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}

File hashes

Hashes for iflow_mcp_danedens_omnispindle-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 278dc601d6bfa661772829a176db13fc654289ffa0fba14d4717d312170a4ac8
MD5 8cb61c7fa0a8a2259ce14c638c5f7e8b
BLAKE2b-256 bcc3603b34996a44f8fe996415862ad81bab38045ce5d5b2cd500267e7f972ed

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