Habit Tracker MCP Server
by darialissi
README.md
# Habit Tracker API
π° REST API
π° JWT-based authentication
π° MCP server with stdio transport
#
π Litestar, FastMCP, SQLAlchemy-advanced, Alembic, Pydantic, Pytest
## Prereq
- Python 3.11
- Docker/docker compose (v2)
## Envs
- prod
- dev
- test
## ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ
```
git clone git@github.com:darialissi/litestar-habittracker.git && cd litestar-habittracker
```
## Π‘Π±ΠΎΡΠΊΠ° ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ [prod]
```
docker compose --profile prod up
```
#
ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π½Π° <http://127.0.0.1:8000/docs>

## ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ [dev]
0. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ **.env.example** ΡΠΎΠ·Π΄Π°ΡΡ **.env** Π² ΠΊΠΎΡΠ½Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
1. ΠΠ°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ **dev.sh** (ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΉΠ» ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ: `chmod +x dev.sh`)
## Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ [test]
### Unit
```
pytest -m unit
```
### Integration
```
pytest -m integration
```
```
# just validation without DB
pytest -m validation
```
### E2E (+ load)
```
# ΠΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΠΠ
docker compose --profile test up -d
```
```
pytest -m e2e
```
```
pytest -s -m load
```
## MCP configuration
Π’ΠΎΠΊΠ΅Π½ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ΅Π· GET `/api/account/token`
```
"mcpServers": {
"mcp-habittracker": {
"command": "/Users/lissi/Projects/litestar-habittracker/.venv/bin/python3",
"args": [
"/Users/lissi/Projects/litestar-habittracker/src/app_mcp.py"
],
"env": {
"MCP_AUTH_TOKEN": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
}
}
```
ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠΌΠΏΡΠΎΠ²
```
ΠΡΠΏΠΎΠ»Π½ΠΈ Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΈΡ
ΠΏΡΠΈΠ²ΡΡΠ΅ΠΊ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 10 Π΄Π½Π΅ΠΉ.
```
Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΡΠΎΠΌΠΏΡΡ (ΡΠ΄ΠΎΠ±Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°)
```
# Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ»-Π²Π° Π΄Π½Π΅ΠΉ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°
habits_analysis 5 Π΄Π½Π΅ΠΉ
```
```
weekly_review
```This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues