Skip to main content
Glama
MadnessEngineering

FastMCP Todo Server

Omnispindle

素晴らしく、意図的に間違った方向に進んだtodoシステム。

Omnispindleは、Madness Interactiveエコシステムの調整の背骨となる存在です。33個のツールを備えたPython FastMCPサーバーであり、AIエージェントが単一の標準化されたインターフェースから、タスクの管理、知識のキャプチャ、セッションの調整、そしてワークショップ全体のナビゲートを行うことを可能にします。PyPIパッケージ化済み。Auth0統合済み。MCP設定が存在する場所ならどこでも動作します。

最初は「todoをちゃんとやろう」というところから始まりました。それが今では、複数プロジェクトのAI支援開発ラボの中枢神経系となりました。どちらも素晴らしいことです。


実際に何をするのか

Todo管理 — 他のすべてを可能にする退屈な部分です。エージェントは、完全なメタデータ、優先度、ターゲットエージェントの追跡、変更検知を備えたタスクを、エコシステム内のあらゆるプロジェクトで作成、クエリ、更新、完了、監査できます。

知識のキャプチャ — 学んだ教訓は、言語、トピック、タグのメタデータと共に保存されます。正規表現、テキスト、またはベクトル埋め込みによる検索が可能です。会話が終わっても、組織の記憶が消えることはありません。

セッション追跡 — InventoriumでのAI作業セッションは、フォーク、生成、todoへのリンク、そして完全な系譜ツリーを通じた追跡が可能です。すべての作業スレッドには親と系譜があります。

セーマンティック検索 — find_relevantはベクトル埋め込みを使用して、キーワードだけでなく意味によってtodoや教訓を浮き彫りにします。get_context_bundleは、エージェントにプロジェクトの全体像を一度の呼び出しで提供します。


Related MCP server: Todo MCP Server

インストール

pip install omnispindle

インストール後に利用可能なCLIコマンド:

  • omnispindle-stdio — Claude Desktop用のMCP stdioサーバー

  • omnispindle / omnispindle-server — 認証済みエンドポイント用のHTTP Webサーバー

Claude Desktop (設定不要)

claude_desktop_config.jsonに追加します:

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

最初のツール呼び出しでブラウザが開き、Auth0ログインが行われます。トークンはローカルに保存されます。以上です。

開発

git clone https://github.com/DanEdens/Omnispindle.git
cd Omnispindle
pip install -r requirements.txt
python -m src.Omnispindle.stdio_server

ツール

フルロードアウトは6カテゴリ、33ツールです。OMNISPINDLE_TOOL_LOADOUTを使用して、利用可能なツールとエージェントのトークン予算を制御します。

Todo管理 (9ツール)

ツール

機能

add_todo

プロジェクト、優先度、ターゲットエージェント、メモ、メタデータを含むタスクを作成

query_todos

プロジェクション、制限、オフセット、since変更検知、依存関係サブグラフ走査用のgraph_rootを備えたMongoDBスタイルのフィルタリングクエリ

update_todo

フィールドのパッチ適用。メタデータはディープマージされます。依存関係リンクのための配列フィールド(例: metadata.blockers)での$push/$pullをサポート

delete_todo

タスクを削除

get_todo

IDで単一のタスクを取得

complete_todo

オプションのコメント付きでレビュー用にステージング。監査ログに書き込みます。ステータスをcompletedではなくreviewに設定

list_todos_by_status

ステータスでフィルタリング: pending initial in_progress blocked review completed

search_todos

トークン化された複数単語のあいまいテキスト検索

list_project_todos

特定プロジェクトの最近のタスク

知識 / 教訓 (7ツール)

ツール

機能

add_lesson

言語、トピック、タグを含む教訓をキャプチャ

get_lesson

IDで取得

update_lesson

教訓の内容やメタデータをパッチ適用

delete_lesson

削除

search_lessons

教訓フィールド全体のテキスト検索

grep_lessons

正規表現パターン検索

list_lessons

すべての教訓を閲覧。要約用のブリーフモードあり

Inventoriumセッション (8ツール)

ツール

機能

inventorium_sessions_list

セッションを一覧表示(プロジェクトでフィルタリング可能)

inventorium_sessions_get

IDでセッションを取得

inventorium_sessions_create

新しいAI作業セッションを開始

inventorium_sessions_spawn

親から子セッションを生成し、todoにリンク

inventorium_sessions_fork

オプションのメッセージ継承付きでセッションをフォーク

inventorium_sessions_genealogy

セッションの完全な先祖/子孫トレース

inventorium_sessions_tree

プロジェクトの視覚的なセッションツリー

inventorium_todos_link_session

todoをセッションにリンク

コンテキスト & 検索 (2ツール)

ツール

機能

get_context_bundle

一度の呼び出しで、エージェントの作業コンテキスト用の最近のtodo、教訓、セッション状態、プロジェクト統計を取得

find_relevant

ベクトル埋め込みによるセーマンティックRAG検索 — 意味によって関連するtodoや教訓を見つける

システム / 管理 (5ツール)

ツール

機能

query_todo_logs

監査ログクエリ: タイプ、プロジェクト、日付範囲でフィルタリング

list_projects

ファイルシステムから既知のプロジェクトを列挙

explain / add_explanation

トピック説明システム: 永続的な知識カード

point_out_obvious

設定可能な皮肉を込めて観察結果をログに記録。自動実行中に既知の問題をマークするのに便利

カスタムコード (1ツール)

ツール

機能

bring_your_own

Python、JavaScript、またはシェル関数を、実行時にライブMCPツールとして注入


ツールロードアウト

OMNISPINDLE_TOOL_LOADOUTを設定して、登録内容を制御します:

ロードアウト

ツール数

ユースケース

full

33

すべて

basic

10

基本的なtodo CRUD + get_context_bundle

minimal

4

追加、クエリ、取得、完了マーク

lessons

7

知識管理のみ

admin

14

管理タスク + セッション管理

write_only

6

作成/更新/削除のみ

read_only

15

クエリ/取得のみ

lightweight

13

トークン最適化されたコア

agent_preflight

6

セッション開始: コンテキストバンドル、RAGチェック、todo操作


動作モード

OMNISPINDLE_MODEで設定:

  • api — madnessinteractive.cc/apiへのHTTP呼び出し。ローカルデータベース不要。クラウドネイティブやマルチユーザー設定に最適。

  • hybrid (デフォルト) — APIファーストでMongoDBフォールバック。ネットワークが不安定な場合に信頼性が高い。

  • local — 直接MongoDB接続のみ。オフライン開発に最適。

  • auto — 両方をベンチマークし、高速な方を選択。


認証

設定不要のデバイスフロー: 最初のツール呼び出し時に、Auth0ログイン用のブラウザウィンドウが開きます。トークンはローカルに保存されます。以降の呼び出しは設定なしで認証されます。

手動トークン設定 (オプション):

python -m src.Omnispindle.token_exchange

環境変数:

  • MADNESS_AUTH_TOKEN または AUTH0_TOKEN — Auth0デバイスフローからのJWT

  • MCP_USER_EMAIL — ユーザーごとのデータ分離に必須

  • MADNESS_API_URL — APIベースのオーバーライド (デフォルト: https://madnessinteractive.cc/api)

すべてのデータはデータベースレベルでユーザーごとにスコープされます。あなたのtodoはあなたのものです。


設定

# Operation mode
OMNISPINDLE_MODE=hybrid          # api | hybrid | local | auto
OMNISPINDLE_TOOL_LOADOUT=basic   # see loadouts table above
OMNISPINDLE_FALLBACK_ENABLED=true
OMNISPINDLE_VALIDATE_PROJECT_NAMES=false  # optional: enable slower DB-backed project validation

# Authentication
MADNESS_AUTH_TOKEN=<jwt>
MCP_USER_EMAIL=you@example.com

# Local/hybrid database
MONGODB_URI=mongodb://localhost:27017
MONGODB_DB=swarmonomicon

# Real-time events
MQTT_HOST=localhost
MQTT_PORT=1883

エコシステム

OmnispindleはAIインターフェース層です。ワークショップの他の部分は以下の通りです:

Inventorium — React WebダッシュボードおよびSwarmDesk 3D空間ワークスペース。人間が使用します。これはREST API経由で直接todoとセッションを読み取ります(MCPはAIエージェント専用です)。ボタンをクリックしているなら、あなたはInventoriumにいます。エージェントなら、MCPツールを呼び出しています。

cartogomancy — JS/TSコードベース分析ツール (npm install -g @madnessengineering/cartogomancy)。JavaScriptまたはTypeScriptプロジェクトを指定すると、構造、複雑性、git blame、相互参照の豊富なJSONマップが返されます。そのマップをSwarmDeskに渡すと、コードベースが歩き回れる3D都市になります。

SwarmDesk — Inventorium内の3D空間視覚化層。todo、セッション、cartogomancyコードマップが探索可能なアーキテクチャとしてレンダリングされます。プロジェクトをリストではなく場所として捉えます。

MadnessVR — SwarmDeskのQuest 2 VR版。ヘッドセットを装着し、コードベースを実際のジオメトリとして歩き回ります。これはロードマップ上にあり、リリースノートにはありません。しかし計画は存在し、詳細です。

Cogwyrm — エコシステムに統合されたAIチャットコンパニオン。会話中にOmnispindle MCPツールを使用して共有コンテキストを読み書きします。

Swarmonomicon — コアデータベース層。MongoDB、swarmonomiconデータベース。永続的なものはすべてここに存在します。

アーキテクチャのルール

UI (Inventorium, forms, dashboards) → REST API → Database
AI agents (Claude, Cogwyrm, any MCP client) → MCP tools → Backend → Database

UIをMCP経由でルーティングしてはいけません。AIエージェントからREST APIを直接呼び出してはいけません。この分離は意図的であり、負荷を支えるものです。


開発

# Tests
pytest tests/

# Stdio server (Claude Desktop)
python -m src.Omnispindle.stdio_server

# Web server
python -m src.Omnispindle

# Check tool count
python -c "from src.Omnispindle.tool_loadouts import _BASE_LOADOUTS; print(len(_BASE_LOADOUTS['full']), 'tools in full loadout')"

PyPI公開

# Build and check
python -m build
python -m twine check dist/*

# Publish
python -m twine upload dist/*

プライバシー & セキュリティ

このリポジトリには、エコシステム用のAuth0設定とInfrastructure-as-Codeが含まれています。学習やフォークのためのオープンソースであり、そのままデプロイするためのものではありません。

実際に自分のセットアップで実行する場合:

  1. フォークする

  2. すべての認証プロバイダーと資格情報を置き換える

  3. 自分のドメインとデータベースに向ける

  4. ツールの権限を確認する(デフォルトでは許可的です)

これは私たちのラボのための動作システムです。あなたのものは、あなた自身で作ってください。


哲学

ほとんどの人は5つの機能を持つtodoアプリを作ります。私たちは33個のMCPツール、3つの動作モード、セッション系譜ツリー、ベクトル埋め込み、設定不要のOAuth、そしてVRでコードを歩き回るロードマップを持つものを作りました。

これは適切な複雑さです。すべてのピースが負荷を支えています。

現在動作中:

  • AIエージェントのためのtodo管理 — 堅牢、監査済み、ユーザーごと

  • プロジェクト間での永続的な知識キャプチャ

  • 完全な系譜を持つセッション追跡

  • ベクトル埋め込みによるセーマンティック検索

  • セットアップガイドを必要としない設定不要のAuth0

今後:

  • MadnessVR: Quest 2でのSwarmDesk

  • Terrariaスタイルのインベントリメカニクスを通じたプロンプトエンジニアリングの教育

  • cartogomancy → SwarmDesk → VRの連続パイプライン

私たちは慎重にコードを書いています。実用的であるならば、境界を押し広げることを恐れません。


「過剰設計?かもしれない。野心が足りない?決してない。」

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers