AI-powered personal assistant: Telegram bot with Notion shopping list management and Home Assistant control via MCP.
- 🤖 Gemini LLM via poe.com
- 💬 Multi-turn conversations with session memory (15 min TTL)
- 📝 Notion integration (shopping list, recipe management)
- 🏠 Home Assistant smart home control
- ⚙️ Customizable system prompt (edit markdown, no code changes)
- 🐳 Docker containerization
- Telegram: aiogram 3.26+
- API: FastAPI webhook on port 8000
- LLM: ChatOpenAI → poe.com (Gemini backend)
- Storage: memory based storage of messages
- MCP: Notion + Home Assistant via HTTP
- Python 3.10+
- Telegram Bot Token (from @BotFather)
- poe.com API Key
- Notion Integration Token
git clone <repository>
cd notion_assistant
cp .env.example .env
# Fill .env with credentials
TELEGRAM_BOT_TOKEN=your_token
TELEGRAM_WEBHOOK_URL=https://your-domain.com/webhook
TELEGRAM_WEBHOOK_SECRET=your_secret
POE_API_KEY=your_poe_key
NOTION_API_KEY=your_notion_key
NOTION_MCP_AUTH_TOKEN=your_mcp_token
uv sync
docker compose up --buildpython -m uvicorn src.main:app --reload --host 0.0.0.0 --port 8000
The bot's behavior is defined in src/system_prompt.md (loaded at startup):
Current prompt (German): Shopping list management (Notion) + Home Assistant control
To customize:
- Edit
src/system_prompt.md - Restart container:
docker compose restart assistant - Changes apply immediately (no code changes needed)
src/
├── main.py # FastAPI app, loads system_prompt.md
├── bot.py # Telegram message handler
├── agent.py # LangChain agent + MCP tool loading
├── session.py # SQLite sessions (15 min TTL)
├── config.py # .env configuration
└── system_prompt.md # AI system prompt (customizable)
docker-compose.yml # Assistant + notion-mcp services
pyproject.toml # Dependencies
.env.example # Environment template
GET /health- Health checkPOST /webhook- Telegram webhook (requiresX-Telegram-Bot-Api-Secret-Tokenheader)DELETE /webhook- Delete webhook (dev only)
Required:
TELEGRAM_BOT_TOKENTELEGRAM_WEBHOOK_URLTELEGRAM_WEBHOOK_SECRETPOE_API_KEYNOTION_API_KEYNOTION_MCP_AUTH_TOKENHOMEASSISTANT_MCP_AUTH_TOKEN
Optional:
POE_MODEL_NAME(default: gemini-2-flash)NOTION_MCP_URL(default: http://notion-mcp:3000)HOMEASSISTANT_MCP_URL(default: http://homeassistant-mcp:3001)DATABASE_PATH(default: ./data/sessions.db)SESSION_TTL_MINUTES(default: 15)
MIT