Skip to main content
Glama
MayankKapgate

fitness-tracker-mcp

πŸ‹οΈ Fitness Tracker β€” MCP Server

μ™„μ „νžˆ μ˜€ν”„λΌμΈμœΌλ‘œ λ™μž‘ν•˜λŠ” Model Context Protocol (MCP) μ„œλ²„λ‘œ, Claude Code, Claude Desktop, Cursor λ“± MCP ν˜Έν™˜ AI ν΄λΌμ΄μ–ΈνŠΈκ°€ μš΄λ™ 기둝, 식단 맀크둜 좔적, 일일 건강 μš”μ•½ 쑰회λ₯Ό ν•  수 있게 ν•΄μ€λ‹ˆλ‹€. λͺ¨λ“  λ°μ΄ν„°λŠ” 둜컬 SQLite λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯되며 λ„€νŠΈμ›Œν¬ μ˜μ‘΄μ„±μ΄ μ „ν˜€ μ—†μŠ΅λ‹ˆλ‹€.


πŸ“– λͺ©μ°¨


Related MCP server: Nutrition MCP

πŸ’‘ μ™œ 이 ν”„λ‘œμ νŠΈμΈκ°€?

λŒ€κ·œλͺ¨ μ–Έμ–΄ λͺ¨λΈμ€ λŒ€ν™”μ—λŠ” λ›°μ–΄λ‚˜μ§€λ§Œ, μ„Έμ…˜μ„ λ„˜μ–΄ μ‚¬μš©μž 데이터λ₯Ό 기본적으둜 μ˜μ†ν™”ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. Model Context Protocol은 LLM이 μ™ΈλΆ€ 도ꡬλ₯Ό ν˜ΈμΆœν•  수 있게 ν•¨μœΌλ‘œμ¨ 이 격차λ₯Ό λ©”μ›λ‹ˆλ‹€. 즉, AIκ°€ μ‚¬μš©μžλ₯Ό λŒ€μ‹ ν•΄ κ΅¬μ‘°ν™”λœ 데이터λ₯Ό 읽고, μ“°κ³ , μ‘°νšŒν•  수 μžˆλŠ” μ§„μ •ν•œ μ–΄μ‹œμŠ€ν„΄νŠΈκ°€ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

이 ν”„λ‘œμ νŠΈλŠ” μ‹€μš©μ μΈ MCP 톡합을 λ³΄μ—¬μ€λ‹ˆλ‹€. AI μ–΄μ‹œμŠ€ν„΄νŠΈκ°€ 직접 μ‘°μž‘ν•  수 μžˆλŠ” ν”ΌνŠΈλ‹ˆμŠ€ νŠΈλž˜μ»€μž…λ‹ˆλ‹€. AIμ—κ²Œ *"300칼둜리λ₯Ό μ†Œλͺ¨ν•œ 30λΆ„ λŸ¬λ‹μ„ κΈ°λ‘ν•΄μ€˜"*라고 λ§ν•˜λ©΄, AIκ°€ 데이터λ₯Ό κ²€μ¦ν•˜κ³  SQLite에 μ €μž₯ν•œ λ’€ 확인해 μ€λ‹ˆλ‹€. μŠ€ν”„λ ˆλ“œμ‹œνŠΈλ₯Ό μ—΄μ–΄λ³Ό ν•„μš”κ°€ μ „ν˜€ μ—†μŠ΅λ‹ˆλ‹€.


✨ μ£Όμš” κΈ°λŠ₯

κΈ°λŠ₯

μ„€λͺ…

μš΄λ™ 기둝

μš΄λ™ μœ ν˜•, μ‹œκ°„, μ†Œλͺ¨ 칼둜리λ₯Ό ν¬ν•¨ν•œ μš΄λ™ μ„Έμ…˜ 기둝

맀크둜 좔적

식사별 λ˜λŠ” ν•˜λ£¨ λ‹¨μœ„λ‘œ λ‹¨λ°±μ§ˆ, νƒ„μˆ˜ν™”λ¬Ό, μ§€λ°© μ„­μ·¨λŸ‰ 기둝

일일 μš”μ•½

칼둜리 계산을 ν¬ν•¨ν•œ μš΄λ™ + μ˜μ–‘ 집계 보기

μ™„μ „ μ˜€ν”„λΌμΈ

Stdio 전솑 β€” λ„€νŠΈμ›Œν¬ 호좜 μ—†μŒ, API ν‚€ μ—†μŒ, ν΄λΌμš°λ“œ μ˜μ‘΄μ„± μ—†μŒ

μ—„κ²©ν•œ 검증

Pydantic v2 μŠ€ν‚€λ§ˆκ°€ 잘λͺ»λœ LLM 좜λ ₯을 DB에 λ„λ‹¬ν•˜κΈ° 전에 차단

SQL μΈμ μ…˜ μ•ˆμ „

λͺ¨λ“  κ³³μ—μ„œ λ§€κ°œλ³€μˆ˜ν™”λœ 쿼리 μ‚¬μš© β€” μ‚¬μš©μž μž…λ ₯이 μ›μ‹œ SQL에 λ‹Ώμ§€ μ•ŠμŒ

포괄적인 ν…ŒμŠ€νŠΈ

μŠ€ν‚€λ§ˆ 검증, DB 둜직, μ—£μ§€ μΌ€μ΄μŠ€λ₯Ό λ‹€λ£¨λŠ” 22개의 Pytest μΌ€μ΄μŠ€


🧱 기술 μŠ€νƒ

계측

기술

μš©λ„

MCP ν”„λ ˆμž„μ›Œν¬

FastMCP

Python ν•¨μˆ˜λ₯Ό stdioλ₯Ό 톡해 MCP λ„κ΅¬λ‘œ λ…ΈμΆœ

λ°μ΄ν„°λ² μ΄μŠ€

SQLite 3

가볍고 섀정이 ν•„μš” μ—†λŠ” 둜컬 μ˜μ†ν™”

검증

Pydantic v2

LLM μž…λ ₯에 λŒ€ν•œ μŠ€ν‚€λ§ˆ κ°•μ œ 및 νƒ€μž… λ³€ν™˜

ν…ŒμŠ€νŠΈ

Pytest

ν…ŒμŠ€νŠΈλ³„λ‘œ 격리된 인메λͺ¨λ¦¬ λ°μ΄ν„°λ² μ΄μŠ€

μ–Έμ–΄

Python 3.10+

핡심 λŸ°νƒ€μž„


πŸ—οΈ μ•„ν‚€ν…μ²˜ κ°œμš”

이 μ‹œμŠ€ν…œμ€ 관심사가 λͺ…ν™•νžˆ λΆ„λ¦¬λœ κ³„μΈ΅ν˜• μ•„ν‚€ν…μ²˜λ₯Ό λ”°λ¦…λ‹ˆλ‹€:

graph TB
    subgraph Client Layer
        A["πŸ€– MCP Client<br/>(Claude Code / Claude Desktop / Cursor)"]
    end

    subgraph Transport Layer
        B["πŸ“‘ stdio<br/>(JSON-RPC over stdin/stdout)"]
    end

    subgraph MCP Server ["MCP Server (server.py)"]
        direction TB
        C["πŸ”§ FastMCP Tool Router<br/>Routes tool calls to handlers"]
        D["πŸ“‹ Pydantic Schemas<br/>WorkoutInput Β· MacrosInput Β· DailySummaryRequest"]
        E["βš™οΈ Core Business Logic<br/>insert_workout Β· insert_macros Β· fetch_daily_summary"]
        F["πŸ—„οΈ Database Layer<br/>get_connection Β· init_db"]
    end

    subgraph Storage
        G[("πŸ’Ύ SQLite<br/>fitness_tracker.db")]
    end

    A <-->|"JSON-RPC"| B
    B <-->|"Tool calls & responses"| C
    C --> D
    D -->|"Validated data"| E
    E <--> F
    F <--> G

    style A fill:#4A90D9,stroke:#2C5F8A,color:#fff
    style B fill:#F5A623,stroke:#C77E1A,color:#fff
    style C fill:#7B68EE,stroke:#5A4DB2,color:#fff
    style D fill:#50C878,stroke:#3A9458,color:#fff
    style E fill:#FF6B6B,stroke:#CC5555,color:#fff
    style F fill:#DDA0DD,stroke:#AA70AA,color:#fff
    style G fill:#87CEEB,stroke:#5F9EAF,color:#000

계측별 μ±…μž„

계측

ꡬ성 μš”μ†Œ

μ±…μž„

ν΄λΌμ΄μ–ΈνŠΈ

Claude Code / Desktop

μžμ—°μ–΄λ₯Ό MCP 도ꡬ 호좜둜 전솑

전솑

stdio (JSON-RPC)

stdin/stdout을 톡해 도ꡬ 호좜 직렬화 β€” HTTP μ—†μŒ, 포트 μ—†μŒ

λΌμš°ν„°

FastMCP

λ“€μ–΄μ˜€λŠ” 도ꡬ 이름을 Python ν•Έλ“€λŸ¬ ν•¨μˆ˜μ— λ§€μΉ­

검증

Pydantic μŠ€ν‚€λ§ˆ

DB μ ‘κ·Ό 전에 λͺ¨λ“  μž…λ ₯ ν•„λ“œλ₯Ό νŒŒμ‹± 및 검증

λΉ„μ¦ˆλ‹ˆμŠ€ 둜직

핡심 ν•¨μˆ˜

μ‚½μž…, 집계, 칼둜리 계산 μ‹€ν–‰

μ €μž₯μ†Œ

sqlite3을 ν†΅ν•œ SQLite

단일 fitness_tracker.db νŒŒμΌμ— 데이터 μ˜μ†ν™”


πŸ”„ 데이터 흐름

μ‚¬μš©μžκ°€ *"30λΆ„ λŸ¬λ‹μ„ κΈ°λ‘ν•΄μ€˜"*라고 λ§ν–ˆμ„ λ•Œ μΌμ–΄λ‚˜λŠ” 일을 λ‹¨κ³„λ³„λ‘œ μΆ”μ ν•©λ‹ˆλ‹€:

sequenceDiagram
    participant User
    participant Client as MCP Client (Claude)
    participant Transport as stdio (JSON-RPC)
    participant Router as FastMCP Router
    participant Schema as Pydantic Validator
    participant Logic as Business Logic
    participant DB as SQLite DB

    User->>Client: "Log a 30-minute run that burned 300 calories"
    Client->>Transport: tool_call: log_workout(date, type, duration, calories)
    Transport->>Router: Deserialize JSON-RPC request
    Router->>Schema: WorkoutInput(date, type, duration, calories)

    alt Validation Fails
        Schema-->>Router: ❌ ValidationError (clear message)
        Router-->>Transport: Error response
        Transport-->>Client: Display error to user
    end

    Schema-->>Router: βœ… Validated WorkoutInput object
    Router->>Logic: insert_workout(validated_data)
    Logic->>DB: INSERT INTO workouts (date, type, duration, calories) VALUES (?, ?, ?, ?)
    DB-->>Logic: Row ID
    Logic-->>Router: {status: success, workout: {...}}
    Router-->>Transport: JSON-RPC response
    Transport-->>Client: "Logged: 30 min running β€” 300 kcal burned βœ…"
    Client-->>User: Confirmation message

πŸ—ƒοΈ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ

SQLite λ°μ΄ν„°λ² μ΄μŠ€(fitness_tracker.db)λŠ” 첫 μ‹€ν–‰ μ‹œ μžλ™μœΌλ‘œ μƒμ„±λ˜λ©° 두 개의 ν…Œμ΄λΈ”μ„ ν¬ν•¨ν•©λ‹ˆλ‹€:

erDiagram
    WORKOUTS {
        INTEGER id PK "Auto-increment"
        TEXT date "YYYY-MM-DD (NOT NULL)"
        TEXT type "e.g. running, cycling (NOT NULL)"
        REAL duration "Minutes, > 0 (NOT NULL)"
        REAL calories "kcal burned, >= 0 (NOT NULL)"
    }

    MACROS {
        INTEGER id PK "Auto-increment"
        TEXT date "YYYY-MM-DD (NOT NULL)"
        REAL protein "Grams, >= 0 (NOT NULL)"
        REAL carbs "Grams, >= 0 (NOT NULL)"
        REAL fat "Grams, >= 0 (NOT NULL)"
    }

칼둜리 계산

일일 μš”μ•½μ€ ν‘œμ€€ Atwater κ³„μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ λ§€ν¬λ‘œμ—μ„œ μΆ”μ • μ†Œλͺ¨ 칼둜리λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€:

$$\text{Calories} = (\text{Protein} \times 4) + (\text{Carbs} \times 4) + (\text{Fat} \times 9) ;\text{kcal}$$


πŸ“‚ ν”„λ‘œμ νŠΈ ꡬ쑰

MCP_Project/
β”œβ”€β”€ server.py              # MCP server β€” tools, schemas, DB helpers, entrypoint
β”œβ”€β”€ test_server.py         # Pytest suite (22 tests across 6 test classes)
β”œβ”€β”€ requirements.txt       # Python dependencies (fastmcp, pydantic, pytest)
β”œβ”€β”€ fitness_tracker.db     # SQLite database (auto-created on first run)
β”œβ”€β”€ .gitignore             # Ignores venv, __pycache__, .env
β”œβ”€β”€ .env                   # Environment variables (git-ignored)
└── README.md              # This file

파일 ꡬ성

파일

쀄 수

μ„€λͺ…

server.py

~322

μ™„μ „ν•œ MCP μ„œλ²„: DB μ΄ˆκΈ°ν™”, Pydantic λͺ¨λΈ, CRUD μ—°μ‚°, FastMCP 도ꡬ μ •μ˜, stdio μ§„μž…μ 

test_server.py

~265

6개 클래슀의 22개 ν…ŒμŠ€νŠΈ β€” μŠ€ν‚€λ§ˆ 검증(유효 + 무효 μž…λ ₯), DB μ‚½μž…, 일일 집계, λ‚ μ§œ 격리, SQL μΈμ μ…˜ μ•ˆμ „μ„±

requirements.txt

3

fastmcp, pydantic, pytest


πŸš€ μ‹œμž‘ν•˜κΈ°

사전 μš”κ΅¬ 사항

  • Python 3.10+ μ„€μΉ˜

  • pip νŒ¨ν‚€μ§€ λ§€λ‹ˆμ €

1. μ €μž₯μ†Œ 클둠

git clone https://github.com/MayankKapgate/fitness-tracker-mcp.git
cd MCP_Project

2. 가상 ν™˜κ²½ 생성 및 ν™œμ„±ν™” (ꢌμž₯)

# Windows
python -m venv myvenv
myvenv\Scripts\activate

# macOS / Linux
python3 -m venv myvenv
source myvenv/bin/activate

3. μ˜μ‘΄μ„± μ„€μΉ˜

pip install -r requirements.txt

4. ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈ μ‹€ν–‰

pytest test_server.py -v

22개의 ν…ŒμŠ€νŠΈκ°€ ν†΅κ³Όν•˜λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€ βœ…

5. μ„œλ²„ μ‹œμž‘ (독립 μ‹€ν–‰)

python server.py

μ°Έκ³ : μ„œλ²„λŠ” stdio 전솑을 μ‚¬μš©ν•©λ‹ˆλ‹€ β€” stdinμ—μ„œ JSON‑RPCλ₯Ό 읽고 stdout으둜 μ”λ‹ˆλ‹€. μ…Έ ν”„λ‘¬ν”„νŠΈκ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ΄λŠ” MCP ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©ν•˜λ„λ‘ μ„€κ³„λœ λ™μž‘μž…λ‹ˆλ‹€.


πŸ”Œ MCP ν΄λΌμ΄μ–ΈνŠΈ μ—°κ²°

Claude Code

ν„°λ―Έλ„μ—μ„œ μ„œλ²„λ₯Ό ν•œ 번 λ“±λ‘ν•˜μ„Έμš”:

claude mcp add fitness-tracker --transport stdio -- python server.py

팁: Claude Codeκ°€ ν”„λ‘œμ νŠΈ λ””λ ‰ν„°λ¦¬μ—μ„œ μ‹€ν–‰λ˜μ§€ μ•ŠλŠ” 경우 전체 경둜λ₯Ό μ‚¬μš©ν•˜μ„Έμš”:

claude mcp add fitness-tracker --transport stdio -- python "C:\Users\Mayan\OneDrive\Documents\MCP_Project\server.py"

Claude Desktop

claude_desktop_config.json에 λ‹€μŒμ„ μΆ”κ°€ν•˜μ„Έμš”:

{
  "mcpServers": {
    "fitness-tracker": {
      "command": "python",
      "args": ["C:\\Users\\Mayan\\OneDrive\\Documents\\MCP_Project\\server.py"],
      "transport": "stdio"
    }
  }
}

기타 MCP ν΄λΌμ΄μ–ΈνŠΈ

MCP ν˜Έν™˜ ν΄λΌμ΄μ–ΈνŠΈλŠ” λ‹€μŒμ„ μ‚¬μš©ν•˜μ—¬ μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

  • 전솑: stdio

  • λͺ…λ Ή: python server.py (λ˜λŠ” server.py의 전체 경둜)


πŸ› οΈ 도ꡬ μ°Έμ‘° (API)

μ„œλ²„λŠ” 3개의 MCP 도ꡬλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€:

1. log_workout

단일 μš΄λ™ μ„Έμ…˜μ„ κΈ°λ‘ν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜

νƒ€μž…

μ œμ•½ 쑰건

μ˜ˆμ‹œ

date

string

ISO 8601 (YYYY-MM-DD)

"2026-08-04"

type

string

1–100자

"running"

duration

float

> 0 (λΆ„)

30.0

calories

float

β‰₯ 0 (kcal)

300.0

λ°˜ν™˜κ°’:

{
  "status": "success",
  "workout": {
    "id": 1,
    "date": "2026-08-04",
    "type": "running",
    "duration": 30.0,
    "calories": 300.0
  }
}

2. log_macros

식사 λ˜λŠ” ν•˜λ£¨ μ „μ²΄μ˜ 식이 λ§€ν¬λ‘œμ˜μ–‘μ†Œλ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜

νƒ€μž…

μ œμ•½ 쑰건

μ˜ˆμ‹œ

date

string

ISO 8601 (YYYY-MM-DD)

"2026-08-04"

protein

float

β‰₯ 0 (그램)

150.0

carbs

float

β‰₯ 0 (그램)

200.0

fat

float

β‰₯ 0 (그램)

60.0

λ°˜ν™˜κ°’:

{
  "status": "success",
  "macros": {
    "id": 1,
    "date": "2026-08-04",
    "protein": 150.0,
    "carbs": 200.0,
    "fat": 60.0
  }
}

3. get_daily_summary

νŠΉμ • λ‚ μ§œμ˜ μš΄λ™ 및 μ˜μ–‘ 톡합 μš”μ•½μ„ μ‘°νšŒν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜

νƒ€μž…

μ œμ•½ 쑰건

μ˜ˆμ‹œ

date

string

ISO 8601 (YYYY-MM-DD)

"2026-08-04"

λ°˜ν™˜κ°’:

{
  "date": "2026-08-04",
  "workouts": {
    "count": 2,
    "entries": [
      {"id": 1, "date": "2026-08-04", "type": "running", "duration": 30.0, "calories": 300.0},
      {"id": 2, "date": "2026-08-04", "type": "weights", "duration": 45.0, "calories": 250.0}
    ],
    "total_duration_min": 75.0,
    "total_calories_burned": 550.0
  },
  "macros": {
    "count": 1,
    "entries": [
      {"id": 1, "date": "2026-08-04", "protein": 150.0, "carbs": 200.0, "fat": 60.0}
    ],
    "total_protein_g": 150.0,
    "total_carbs_g": 200.0,
    "total_fat_g": 60.0,
    "total_calories_consumed": 1940.0
  }
}

πŸ’¬ μ‚¬μš© μ˜ˆμ‹œ

연결이 μ™„λ£Œλ˜λ©΄ AI μ–΄μ‹œμŠ€ν„΄νŠΈμ™€ μžμ—°μŠ€λŸ½κ²Œ λŒ€ν™”ν•˜κΈ°λ§Œ ν•˜λ©΄ λ©λ‹ˆλ‹€:

μ‚¬μš©μž 말

ν˜ΈμΆœλ˜λŠ” 도ꡬ

κ²°κ³Ό

"30λΆ„ λŸ¬λ‹μ„ ν–ˆκ³  300칼둜리λ₯Ό μ†Œλͺ¨ν–ˆμ–΄"

log_workout

였늘 λ‚ μ§œλ‘œ μš΄λ™ μ €μž₯

"점심 κΈ°λ‘ν•΄μ€˜: λ‹¨λ°±μ§ˆ 40g, νƒ„μˆ˜ν™”λ¬Ό 60g, μ§€λ°© 15g"

log_macros

맀크둜 ν•­λͺ© ν•˜λ‚˜ 기둝

"였늘 λ‚˜λŠ” μ–΄λ• μ–΄?"

get_daily_summary

ν˜„μž¬ λ‚ μ§œμ˜ 집계 합계 λ°˜ν™˜

"8μ›” 4일 μš΄λ™μ€ λ­μ˜€μ§€?"

get_daily_summary

2026-08-04 데이터 쑰회


πŸ§ͺ ν…ŒμŠ€νŠΈ

ν…ŒμŠ€νŠΈ μŠ€μœ„νŠΈ(test_server.py)λŠ” 6개의 ν…ŒμŠ€νŠΈ ν΄λž˜μŠ€μ— 걸친 22개의 ν…ŒμŠ€νŠΈλ₯Ό ν¬ν•¨ν•˜λ©°, ν…ŒμŠ€νŠΈλ§ˆλ‹€ 격리된 μž„μ‹œ SQLite λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€:

ν…ŒμŠ€νŠΈ 클래슀

ν…ŒμŠ€νŠΈ 수

λ‹€λ£¨λŠ” λ‚΄μš©

TestWorkoutSchema

10

μœ νš¨ν•œ μš΄λ™, 잘λͺ»λœ λ‚ μ§œ, 음수/0 지속 μ‹œκ°„, 음수 칼둜리, 빈/λ„ˆλ¬΄ κΈ΄ μœ ν˜•, λˆ„λ½λœ ν•„λ“œ, 잘λͺ»λœ νƒ€μž…

TestMacrosSchema

6

μœ νš¨ν•œ 맀크둜, 잘λͺ»λœ λ‚ μ§œ, 음수 λ‹¨λ°±μ§ˆ/νƒ„μˆ˜ν™”λ¬Ό/μ§€λ°©, λˆ„λ½λœ ν•„λ“œ

TestDailySummarySchema

2

μœ νš¨ν•œ μš”μ²­, 잘λͺ»λœ λ‚ μ§œ

TestWorkoutDB

3

μ‚½μž… 및 쑰회, 닀쀑 μ‚½μž…, SQL μΈμ μ…˜ μ•ˆμ „μ„±

TestMacrosDB

2

μ‚½μž… 및 쑰회, λ‚ μ§œ ν•„λ“œλ₯Ό ν†΅ν•œ SQL μΈμ μ…˜

TestDailySummary

3

빈 λ‚ μ§œ, 집계가 ν¬ν•¨λœ 데이터가 μžˆλŠ” λ‚ μ§œ, λ‚ μ§œ κ°„ 격리

ν…ŒμŠ€νŠΈ μ‹€ν–‰

# Run all tests with verbose output
pytest test_server.py -v

# Run a specific test class
pytest test_server.py::TestWorkoutSchema -v

# Run with coverage (requires pytest-cov)
pip install pytest-cov
pytest test_server.py --cov=server --cov-report=term-missing

πŸ”’ λ³΄μ•ˆ 및 μ•ˆμ „

우렀 사항

μ™„ν™” 방법

SQL μΈμ μ…˜

λͺ¨λ“  λ°μ΄ν„°λ² μ΄μŠ€ μΏΌλ¦¬λŠ” λ§€κ°œλ³€μˆ˜ν™”λœ ? ν”Œλ ˆμ΄μŠ€ν™€λ”λ₯Ό μ‚¬μš© β€” μ‚¬μš©μž μž…λ ₯이 SQL λ¬Έμžμ—΄μ— μ‚½μž…λ˜μ§€ μ•ŠμŒ

잘λͺ»λœ LLM 좜λ ₯

λͺ¨λ“  도ꡬ μž…λ ₯은 λ°μ΄ν„°λ² μ΄μŠ€μ— λ„λ‹¬ν•˜κΈ° 전에 μ—„κ²©ν•œ ν•„λ“œ 검증기가 μžˆλŠ” Pydantic v2 μŠ€ν‚€λ§ˆλ₯Ό 톡과

λ‚ μ§œ 검증

μ‚¬μš©μž μ •μ˜ @field_validatorκ°€ ISO 8601 μ€€μˆ˜λ₯Ό 보μž₯ν•˜λ©°, "yesterday" λ˜λŠ” "'; DROP TABLE" 같은 잘λͺ»λœ λ¬Έμžμ—΄μ€ 거뢀됨

νƒ€μž… λ³€ν™˜

Pydantic의 엄격 λͺ¨λ“œκ°€ μ‹€μ œλ‘œ ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” νƒ€μž…(예: float ν•„λ“œμ— "slow")을 감지

λ„€νŠΈμ›Œν¬ λ…ΈμΆœ

stdio 전솑 β€” λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½ 0, μ—΄λ¦° 포트 μ—†μŒ, API ν‚€ λΆˆν•„μš”

데이터 ν”„λΌμ΄λ²„μ‹œ

λͺ¨λ“  λ°μ΄ν„°λŠ” μ‚¬μš©μž λ¨Έμ‹ μ˜ 둜컬 fitness_tracker.db νŒŒμΌμ—λ§Œ μ €μž₯ β€” μ‹œμŠ€ν…œ λ°–μœΌλ‘œ λ‚˜κ°€λŠ” 데이터 μ—†μŒ


πŸ“ λΌμ΄μ„ μŠ€

MIT β€” 자유둭게 μ‚¬μš©ν•˜μ„Έμš”.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A personal fitness tracking server that enables logging and querying workouts, nutrition, and body metrics through a local SQLite database. Integrates with OpenNutrition MCP for food logging and supports exercise history tracking for workout progression.
    17
  • A
    license
    Not graded
    quality
    B
    maintenance
    A filesystem-based MCP server that turns any MCP-capable AI agent into a conversational calorie and protein tracker with natural-language estimates, confidence-aware logging, daily/weekly progress, food-history search, and export, working offline with local fallback data.
    20
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Local-first nutrition tracker MCP server for Hermes, enabling food, alias, recipe, and meal log management with SQLite persistence.
  • F
    license
    A
    quality
    B
    maintenance
    Personal workout coach MCP server that logs exercises in natural language, tracks progress with SQLite, and provides coaching signals like estimated 1RM and volume trends.
    6

View all related MCP servers

Related MCP Connectors

  • MCP server for Withings health data β€” sleep, activity, heart, and body metrics.

  • GibsonAI MCP server: manage your databases with natural language

  • MCP server for Argo RPG Platform β€” connects AI assistants to campaign data via OAuth2

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MayankKapgate/fitness-tracker-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server