DEV Community

Cover image for I Built a Free Voice-Enabled AI Agent That Uses Notion as Its Brain — Notion MCP Challenge
Twisted-Code'r
Twisted-Code'r

Posted on

I Built a Free Voice-Enabled AI Agent That Uses Notion as Its Brain — Notion MCP Challenge

Notion MCP Challenge Submission 🧠

What I Built

NotionMind — a free, voice-enabled AI agent that treats your Notion workspace as its long-term memory.

You speak or type a note. It auto-titles it, tags it, and saves it to Notion. You ask a question. It searches your Notion and answers out loud. You add a research task. It searches the web, writes the results back to Notion, and marks the task done — all while you sleep.

Zero cost. No subscriptions. No data leaving your machine except to Notion and Groq's free tier.


Demo

$ python3 notionmind.py

╭─────────────────────────────────────────────────╮
│ NotionMind — Your Notion-powered AI memory      │
│ You have 15 note(s) in your brain.              │
│ 🔊 Voice: online — Jenny neural voice (Edge TTS)│
╰─────────────────────────────────────────────────╯

> voice
Voice for [save/ask/inbox]: ask
🎤 Listening... speak now!
You said: what did I work on this week?

Searching your Notion notes...
╭──────────────── NotionMind Answer ─────────────────╮
│ This week you built NotionMind — an MCP-powered    │
│ AI agent with voice input/output, task execution,  │
│ web search, and Notion as persistent memory.       │
╰────────────────────────────────────────────────────╯
🔊 Speaking answer...
Enter fullscreen mode Exit fullscreen mode

How It Uses Notion MCP

NotionMind uses Notion as both input and output — the true MCP pattern:

You write tasks in Notion inbox
    → Agent reads them via Notion MCP tools
    → Searches the web for each task
    → Writes research results back to Notion
    → Changes tag: inbox → done ✅
    → Creates a daily summary page in Notion
Enter fullscreen mode Exit fullscreen mode

The MCP tool definitions power the agent's ability to interact with Notion naturally:

MCP_TOOLS = [
    {
        "type": "function",
        "function": {
            "name": "mcp_search_notes",
            "description": "Search notes in Notion by keyword",
            ...
        }
    },
    {
        "type": "function",
        "function": {
            "name": "mcp_create_note",
            "description": "Create a new note in Notion",
            ...
        }
    },
    {
        "type": "function",
        "function": {
            "name": "mcp_list_all_notes",
            "description": "List all notes from Notion",
            ...
        }
    }
]
Enter fullscreen mode Exit fullscreen mode

The agent uses a tool-calling loop — it decides which tools to use, calls them, processes results, and keeps going until it has a complete answer.


The Killer Daily Workflow

# Morning — check what's pending
python3 agent.py
> what's pending in my inbox?
> what did I work on yesterday?

# During the day — save notes instantly
python3 notionmind.py save "Fixed the auth bug — JWT expiry miscalculated"

# Add a research task
python3 notionmind.py inbox "Research best Python libraries for AI in 2026"

# Evening — let the agent work while you rest
python3 executor.py
# → searches web for each inbox task
# → writes full results to Notion
# → marks tasks Done automatically
# → creates daily summary page
Enter fullscreen mode Exit fullscreen mode

Features

Feature How
💾 Smart Save AI auto-generates title, tags, date
🧠 Ask AI searches Notion, answers in text + voice
📋 List All notes in a rich table
🔍 Search Keyword filter across all notes
📊 Stats Streak, note count, top tags
📥 Inbox Add research tasks from CLI
⚡ Executor Auto-researches, writes back, marks done
🎤 Voice Input Speak instead of type
🔊 Voice Output Jenny Neural (Edge TTS) online, espeak offline
🗑️ Delete Remove notes with confirmation

Free Stack

Component Tool Cost
AI Brain Groq — Llama 3.3 70B Free
Workspace Notion API Free
Web Search DuckDuckGo (ddgs) Free
Voice Input Google Speech Recognition Free
Voice Output Microsoft Edge TTS Free
Offline Voice espeak + MBROLA Free

Total: $0/month


What I Learned

This was my first Notion project. A few things surprised me:

Notion as memory is genuinely powerful. The difference between a chatbot that forgets everything and an agent that remembers your last 3 months of work is enormous. Every note you save becomes context the agent can reason about.

MCP changes the interaction model. Instead of telling the AI what to do step by step, you describe what you want and it figures out which Notion tools to call. That shift from imperative to declarative is the real value of MCP.

Voice changes everything. Adding voice input and output made it feel less like a developer tool and more like a personal assistant. Speaking "what did I work on today?" and hearing the answer back is a different experience from typing it.

Free doesn't mean limited. Groq's Llama 3.3 70B on the free tier is genuinely capable. Edge TTS sounds like ChatGPT. DuckDuckGo searches without an API key. The whole stack costs nothing and performs surprisingly well.


Project Structure

notionmind/
├── notionmind.py    # Main CLI
├── agent.py         # MCP-powered natural language agent
├── executor.py      # Autonomous task executor
├── mcp_client.py    # Notion MCP tool definitions
├── search.py        # Free web search
├── voice.py         # Voice input + output
├── .env.example     # API key template
└── README.md
Enter fullscreen mode Exit fullscreen mode

GitHub

github.com/Jeffrin-dev/NotionMind

Setup takes about 20 minutes. Full instructions in the README.


What's Next

  • ⏰ Scheduled executor — runs automatically via cron
  • 🌍 Multi-language voice support
  • 📅 today command — only today's notes
  • 📱 Telegram bot — control from your phone

Built for the Notion MCP Challenge · March 2026
First Notion project. Won't be the last.

Top comments (0)