Skip to main content
Glama
darialissi

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>
![API](docs.png)


## Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ конфигурация ΠΈ запуск прилоТСния [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
```