Dev builds proactive AI butler using Claude Code and MCP
Mateus Medeiros built "Jarvis," a proactive personal AI assistant running Claude Code headless, wired into 12 MCP servers exposing 35+ tools across work, personal life, and home automation.
Score breakdown
Understand how Claude Code's headless mode combined with a multi-server MCP architecture can power a persistent, proactive personal agent — and how that same pattern enables the agent to extend its own capabilities on demand.
- 01Jarvis runs Claude Code in headless mode (`claude -p`), with a Python runner feeding it user messages and parsing structured JSON responses.
- 02The system connects to 12 MCP servers exposing 35+ tools across domains including Google Workspace, Slack, GTD, Finance, Diary, Memory, and Alexa.
- 03Automated routines include a morning briefing, pre-meeting briefings (fired 10–25 minutes before each meeting), a weekly finance report, a weekly GTD review, and deadline alerts.
Mateus Medeiros describes building "Jarvis," a proactive personal AI assistant designed to eliminate the stateless, generic nature of typical AI chatbots. Rather than answering questions from scratch each time, Jarvis maintains deep, persistent context about his life — his role leading engineering at a fintech, his GTD task backlog, his calendar, diary entries, Slack messages, and personal preferences — and acts on that context without being prompted.
The system's architecture centers on Claude Code running headless (`claude -p`).
The system's architecture centers on Claude Code running headless (`claude -p`). A Python runner shells out to Claude Code, passing it a persona, system instructions, an MCP server config, and a tool allow-list. Claude Code then builds the context window, connects to all active MCP servers, and drives the tool-calling loop, returning structured JSON (`{response, actions}`) to the runner. The integration layer consists of 12 MCP servers — covering Google Workspace, Slack, GTD, Finance, Diary, Memory, Alexa, and others — exposing 35+ tools in total. The backend is a FastAPI application on Python 3.14, running on a GCP Compute Engine VM behind Nginx, with Google Cloud Datastore as the data layer.
Automated routines include a morning briefing, pre-meeting briefings (polling the calendar every 15 minutes and firing 10–25 minutes before each meeting), a weekly finance report, a weekly GTD review, and deadline alerts. A standout capability is self-extension: when Medeiros asked Jarvis to add Telegram voice message support while stopped at a red light, Jarvis delegated the task to Claude Code, which branched the codebase, wired up a transcription pipeline, and opened a pull request — which Medeiros merged from the car. Jarvis also carries a deliberate persona described as a "dry British wit."
Key facts
- 01Jarvis runs Claude Code in headless mode (`claude -p`), with a Python runner feeding it user messages and parsing structured JSON responses.
- 02The system connects to 12 MCP servers exposing 35+ tools across domains including Google Workspace, Slack, GTD, Finance, Diary, Memory, and Alexa.
- 03Automated routines include a morning briefing, pre-meeting briefings (fired 10–25 minutes before each meeting), a weekly finance report, a weekly GTD review, and deadline alerts.
- 04Jarvis is self-extensible: Medeiros asked it to add Telegram voice support while driving, and it delegated the work to Claude Code, which opened a pull request that was merged from the car.
- 05The backend is a FastAPI application on Python 3.14, hosted on GCP Compute Engine behind Nginx, with data in Google Cloud Datastore.
- 06The agent architecture keeps orchestration logic clean — adding a new integration means writing a new MCP server without modifying the core agent.
Summary and scoring are generated automatically from the original article. We always link back to the publisher and never republish images or paywalled content. Last processed Jun 8, 2026 · 15:36 UTC. How this works →