Skip to main content
Glama

Thaddeus

A local, JARVIS-style personal assistant, developed by Thach Ngo (Thomas Ngo). Its mission is to run fully locally and boost working efficiency and productivity. A Python orchestrator drives a local Ollama model (Qwen2.5 32B, tool-calling) which calls out to custom MCP servers over stdio for memory, calendar/reminders, weather, Notion task tracking, Claude Code delegation (planning/implementation/review), web search, IELTS grading/practice question generation, and running (Strava data + a local race tracker).

Privacy / network boundary

Most of this runs fully locally — Ollama inference, SQLite memory, macOS Calendar/Reminders access via AppleScript. Several servers are explicit, accepted exceptions that reach the network:

  • weather — plain HTTPS GET to open-meteo.com, no API key, no personal data (just coordinates or a city name).

  • notion — talks to the Notion API with your integration token, to read and manage your task database.

  • claude — the one server that reaches an LLM in the cloud (Anthropic's API via the claude CLI). Every call runs with --permission-mode plan for read-only tasks or acceptEdits + an explicit git push/commit denylist for implement_from_plan — verified live, never commits or pushes regardless of what's asked.

  • web_search — queries a self-hosted SearXNG instance (see searxng/). No API key or account of yours reaches a third party, but SearXNG itself still queries upstream engines (Google, Bing, etc.) over the network to gather results, as any metasearch aggregator does. Two alternatives were tried and rejected: Brave Search API requires a credit card on file even for its free tier, and Google's Custom Search API is closed to new signups as of 2025.

notion and claude degrade gracefully — if their .env secret isn't set, that one server is skipped with a warning and everything else still starts fine. web_search needs no secret, but does need the SearXNG container actually running.

strava is fully local — it reads your own free personal data export (activities.csv) rather than calling Strava's live API, since that now costs $11.99/month for Standard-tier access (confirmed June 2026 policy change). Not real-time; re-export periodically from Strava's account settings to refresh. Its race tracker and find_races (web search for candidate upcoming races, since Strava's API never had race data even before the paywall) work with no Strava export at all.

Strava export automation

Requesting the export itself needs a live logged-in Strava browser session, so that part can't be automated — but everything after you download the ZIP can be. A LaunchAgent (scripts/install_strava_automation.sh) runs scripts/strava_automation.py daily, which:

  • watches ~/Downloads for a Strava export ZIP (detected by checking for activities.csv inside it, not by guessing Strava's exact filename) and auto-extracts it to data/strava_export/ — no manual unzip/move step

  • creates a Reminders.app reminder every ~14 days nudging you to go re-request the export, since that step still needs you

Both halves are idempotent (tracked via marker files in data/), so the daily run is a no-op on days there's nothing to do. Uninstall: launchctl bootout gui/$(id -u)/com.thachngo.thaddeus.strava-automation then remove the plist from ~/Library/LaunchAgents/.

Related MCP server: Conectica

Setup

  1. ollama serve (if not already running), then pull a tool-calling-capable Qwen2.5 32B build (see OLLAMA_MODEL in .env for the exact tag in use)

  2. python3 -m venv .venv && source .venv/bin/activate

  3. pip install -e ".[dev]"

  4. cp .env.example .env and fill in WEATHER_DEFAULT_LAT/WEATHER_DEFAULT_LON

  5. python scripts/sanity_check_sdk.py — confirms the installed mcp SDK's actual API surface before anything else is built against it

  6. python scripts/init_db.py

  7. cd searxng && docker compose up -d && cd .. — starts the local search backend (one-time; it stays running across restarts)

  8. Optional, for running tools beyond the race tracker: request a Strava data export (account Settings > My Account > Download or Delete Your Account > Request Your Archive), extract it to data/strava_export/ once it arrives by email, then python scripts/inspect_strava_export.py to sanity-check the real column names/units against what strava_server.py assumes

  9. python -m orchestrator.main

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    -
    maintenance
    An MCP server that bridges local Ollama models and ChromaDB vector memory to MCP clients like Claude Code. It enables local text generation, vision-based image analysis, and semantic memory storage without requiring external API keys.
  • -
    license
    -
    quality
    -
    maintenance
    An MCP server that enables multiple AI models (Claude, ChatGPT, Gemini) to share and persist context via a local-first vault of markdown files and SQLite index, allowing seamless cross-AI memory.
  • A
    license
    -
    quality
    D
    maintenance
    Local-first MCP server that gives Claude Code web search, page reading, video transcription, and image analysis — without paid API keys. Runs SearXNG + whisper.cpp natively on Apple Silicon for zero-cost, low-latency research workflows.
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer

  • One memory, every AI: Claude, ChatGPT, Perplexity, Gemini, Cursor, OpenClaw, Hermes, any MCP client.

  • Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/baothach10/thaddeus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server