Skip to main content
Glama

๐Ÿฉธ T1D Manager (1ํ˜• ๋‹น๋‡จ ๊ด€๋ฆฌ MCP)

์นด์นด์˜ค MCP Develop Competition (MCP Player 10) ์ถœํ’ˆ์ž‘

1ํ˜• ๋‹น๋‡จ ํ™˜์ž์™€ ๋ณดํ˜ธ์ž๋ฅผ ์œ„ํ•œ AI ์—์ด์ „ํŠธ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์„ค์ • ์—†์ด๋„ ์‹ค์‹œ๊ฐ„ ํ˜ˆ๋‹น ๊ด€๋ฆฌ์™€ ์•„ํ”ˆ ๋‚ (Sick Day) ์ผ€์–ด๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“‹ PlayMCP ๋“ฑ๋ก ์ •๋ณด

๐ŸŽฏ Lite ๋ฒ„์ „ (๊ฒฝ์—ฐ์šฉ - OAuth ๋ถˆํ•„์š”)

ํ•ญ๋ชฉ

๊ฐ’

MCP ์ด๋ฆ„

T1D Manager Lite

MCP Endpoint

https://t1d-mcp-lite.fly.dev/mcp

๋„๊ตฌ ๊ฐœ์ˆ˜

3๊ฐœ

MCP ์„ค๋ช… (๋ณต์‚ฌ์šฉ):

1ํ˜• ๋‹น๋‡จ ํ™˜์ž์™€ ๋ณดํ˜ธ์ž๋ฅผ ์œ„ํ•œ AI ํ˜ˆ๋‹น ๊ด€๋ฆฌ ๋„์šฐ๋ฏธ์ž…๋‹ˆ๋‹ค. ์ธ์А๋ฆฐ ์šฉ๋Ÿ‰ ๊ณ„์‚ฐ(ISF/ICR ๊ธฐ๋ฐ˜), ISPAD/ADA ์ž„์ƒ ๊ฐ€์ด๋“œ๋ผ์ธ ๊ธฐ๋ฐ˜ ์•„ํ”ˆ ๋‚ (Sick Day) ์ผ€์–ด, ๋„ค์ด๋ฒ„/๋‹ค์Œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰์œผ๋กœ ๋‹น๋‡จ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฟ€ํŒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. OAuth ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ” Full ๋ฒ„์ „ (Dexcom OAuth ํฌํ•จ)

ํ•ญ๋ชฉ

๊ฐ’

MCP ์ด๋ฆ„

T1D Manager

MCP Endpoint

https://t1d-mcp.fly.dev/mcp

๋„๊ตฌ ๊ฐœ์ˆ˜

6๊ฐœ

MCP ์„ค๋ช… (๋ณต์‚ฌ์šฉ):

1ํ˜• ๋‹น๋‡จ ํ™˜์ž์™€ ๋ณดํ˜ธ์ž๋ฅผ ์œ„ํ•œ AI ํ˜ˆ๋‹น ๊ด€๋ฆฌ ๋„์šฐ๋ฏธ์ž…๋‹ˆ๋‹ค. Dexcom CGM ์‹ค์‹œ๊ฐ„ ์—ฐ๋™(OAuth 2.0)์œผ๋กœ ํ˜„์žฌ ํ˜ˆ๋‹น๊ณผ ์ถ”์„ธ๋ฅผ ํ™•์ธํ•˜๊ณ , ISPAD/ADA ์ž„์ƒ ๊ฐ€์ด๋“œ๋ผ์ธ ๊ธฐ๋ฐ˜ ์•„ํ”ˆ ๋‚ (Sick Day) ์ผ€์–ด ๋ฐ ์ธ์А๋ฆฐ ๊ณ„์‚ฐ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ด๋ฒ„/๋‹ค์Œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰์œผ๋กœ ๋‹น๋‡จ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฟ€ํŒ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ ๋„๊ตฌ ๋ชฉ๋ก

ํ•ต์‹ฌ ๋„๊ตฌ (Lite/Full ๊ณตํ†ต)

๋„๊ตฌ

์„ค๋ช…

calculate_insulin_dosage

ํ˜ˆ๋‹น/ํƒ„์ˆ˜ํ™”๋ฌผ ๊ธฐ๋ฐ˜ ์ธ์А๋ฆฐ ์šฉ๋Ÿ‰ ๊ณ„์‚ฐ

search_diabetes_community

๋„ค์ด๋ฒ„/๋‹ค์Œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ (ํ™˜์ž ๊ฒฝํ—˜๋‹ด, ๊ฟ€ํŒ)

analyze_sick_day_guidelines

ISPAD/ADA ๊ธฐ๋ฐ˜ ์•„ํ”ˆ ๋‚  ์ผ€์–ด ๊ฐ€์ด๋“œ๋ผ์ธ

Dexcom ๋„๊ตฌ (Full ๋ฒ„์ „๋งŒ)

๋„๊ตฌ

์„ค๋ช…

get_dexcom_auth_url

Dexcom OAuth ์ธ์ฆ URL ์ƒ์„ฑ

get_cgm_sandbox

Authorization Code๋กœ CGM ๋ฐ์ดํ„ฐ ์กฐํšŒ

get_cgm_with_token

Access Token์œผ๋กœ CGM ๋ฐ์ดํ„ฐ ์กฐํšŒ


๐Ÿ’ฌ ๋Œ€ํ™” ์˜ˆ์‹œ

๋ฒˆํ˜ธ

์˜ˆ์‹œ

1

๋ฐฅ ๋จน์œผ๋ ค๋Š”๋ฐ ํƒ„์ˆ˜ํ™”๋ฌผ 60g์ด์•ผ. ์ธ์А๋ฆฐ ์–ผ๋งˆ๋‚˜ ๋งž์•„์•ผ ํ•ด?

2

๋‚˜ ์—ด๋‚˜๊ณ  ํ† ํ–ˆ์–ด. ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ด?

3

์ €ํ˜ˆ๋‹น ๊ฐ„์‹ ์ถ”์ฒœํ•ด์ค˜

4

Dexcom ๋กœ๊ทธ์ธ ํ• ๋ž˜ (Full ๋ฒ„์ „)


โœจ ํ•ต์‹ฌ ๊ธฐ๋Šฅ

1. ๐Ÿฝ๏ธ ์Šค๋งˆํŠธ ์ธ์А๋ฆฐ ๊ณ„์‚ฐ

  • ๊ธฐ๋Šฅ: ํ˜ˆ๋‹น/ํƒ„์ˆ˜ํ™”๋ฌผ ์ž…๋ ฅ ์‹œ ์ •ํ™•ํ•œ ์ธ์А๋ฆฐ ์šฉ๋Ÿ‰๊ณผ ๊ต์œก ์ž๋ฃŒ๋ฅผ ๊ตฌ์กฐํ™”๋œ JSON์œผ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

  • ํ• ๋ฃจ์‹œ๋„ค์ด์…˜ ์—†๋Š” ์ •ํ™•ํ•œ ๊ณ„์‚ฐ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

2. ๐Ÿฅ ์•„ํ”ˆ ๋‚  (Sick Day) ์ผ€์–ด

  • ๊ธฐ๋Šฅ: "๋‚˜ ์—ด ๋‚˜๊ณ  ํ† ํ–ˆ์–ด" โ†’ ISPAD/ADA ๊ฐ€์ด๋“œ๋ผ์ธ ๊ธฐ๋ฐ˜ ์œ„ํ—˜๋„ ๋ถ„์„ ๋ฐ ํ–‰๋™ ์ง€์นจ ์ œ๊ณต.

  • ๋ฐ์ดํ„ฐ: ์ˆ˜๋ถ„ ์„ญ์ทจ, ์ผ€ํ†ค ์ธก์ •, ์‘๊ธ‰์‹ค ๋ฐฉ๋ฌธ ๊ธฐ์ค€ ๋“ฑ ์•ˆ์ „ํ•œ ์˜๋ฃŒ ์ง€์นจ์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

3. ๐Ÿ” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒ€์ƒ‰

  • ๊ธฐ๋Šฅ: ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ(ํ™˜์ž ๊ฒฝํ—˜๋‹ด)์™€ ๋‹ค์Œ ์›น(์ •๋ณด)์„ ๋™์‹œ์— ๊ฒ€์ƒ‰ํ•˜์—ฌ ์‹ค์งˆ์ ์ธ ๊ฟ€ํŒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

4. ๐Ÿ“Š Dexcom CGM ์‹ค์‹œ๊ฐ„ ์—ฐ๋™ (Full ๋ฒ„์ „)

  • ๊ธฐ๋Šฅ: Dexcom ๊ณต์‹ Developer API (OAuth 2.0) ์ง€์›์œผ๋กœ ์‹ค์‹œ๊ฐ„ ํ˜ˆ๋‹น ๋ฐ ์ถ”์„ธ ํ™•์ธ.


๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ & ๊ตฌ์กฐ

  • Core: Python 3.12, mcp (Model Context Protocol), FastMCP

  • Transport: Streamable HTTP (MCP ํ‘œ์ค€ ์ค€์ˆ˜)

  • Integrations: Dexcom Developer API (OAuth), Naver/Kakao Search

  • Infra: Docker, Fly.io

t1d-mcp/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ server.py # Streamable HTTP Server Entrypoint โ”‚ โ”œโ”€โ”€ main.py # FastMCP Tool Definitions โ”‚ โ”œโ”€โ”€ tools/ โ”‚ โ”‚ โ””โ”€โ”€ dexcom_tools.py # Dexcom OAuth Tools (์กฐ๊ฑด๋ถ€ ๋กœ๋“œ) โ”‚ โ”œโ”€โ”€ cgm/ # Dexcom Official API Client โ”‚ โ”œโ”€โ”€ treatment/ # Sick Day Logic, Insulin Calc โ”‚ โ””โ”€โ”€ community/ # Hybrid Search โ””โ”€โ”€ tests/ # ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

1. ๋กœ์ปฌ ์‹คํ–‰

# ์˜์กด์„ฑ ์„ค์น˜ (uv ์‚ฌ์šฉ ๊ถŒ์žฅ) uv sync # ์„œ๋ฒ„ ์‹คํ–‰ (Streamable HTTP on port 8080) uv run uvicorn src.server:app --host 0.0.0.0 --port 8080

2. MCP Inspector๋กœ ํ…Œ์ŠคํŠธ

# Lite ๋ฒ„์ „ (OAuth ์—†์Œ) npx @modelcontextprotocol/inspector --transport http --server-url https://t1d-mcp-lite.fly.dev/mcp # Full ๋ฒ„์ „ (Dexcom ํฌํ•จ) npx @modelcontextprotocol/inspector --transport http --server-url https://t1d-mcp.fly.dev/mcp

๐Ÿ”ง ํ™˜๊ฒฝ ์„ค์ •

Lite ๋ฒ„์ „ (๊ธฐ๋ณธ)

Dexcom ๋„๊ตฌ ์—†์ด ํ•ต์‹ฌ 3๊ฐœ ๋„๊ตฌ๋งŒ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

# fly.lite.toml ENABLE_DEXCOM = "false"

Full ๋ฒ„์ „

Dexcom OAuth ๋„๊ตฌ๊นŒ์ง€ ๋ชจ๋‘ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

# fly.toml (๊ธฐ๋ณธ๊ฐ’) ENABLE_DEXCOM = "true" # ๋˜๋Š” ๋ฏธ์„ค์ •

๐Ÿ“… To-Do / Roadmap

์™„๋ฃŒ๋จ

  • SSE โ†’ Streamable HTTP ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

  • Sick Day ๊ฐ€์ด๋“œ๋ผ์ธ ๋„๊ตฌ ๊ฐœ์„  (JSON ๊ตฌ์กฐํ™”, ์˜ํ•™์  ๊ทผ๊ฑฐ ๋ณด๊ฐ•)

  • Fly.io ๋ฐฐํฌ ์™„๋ฃŒ

  • Dexcom Developer Portal ์•ฑ ๋“ฑ๋ก (Sandbox)

  • Legacy ID/PW ๋„๊ตฌ ์ œ๊ฑฐ (์‹ฌ์‚ฌ ๊ธฐ์ค€ ์ค€์ˆ˜)

  • ๋„๊ตฌ ์ตœ์ ํ™” (9๊ฐœ โ†’ 6๊ฐœ)

  • Lite/Full ๋ฒ„์ „ ๋ถ„๋ฆฌ (ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๊ธฐ๋ฐ˜)

์˜ˆ์ •

  • Dexcom Production ํ™˜๊ฒฝ ํ…Œ์ŠคํŠธ

  • ์˜์–‘์ •๋ณด API ์—ฐ๋™ (FoodSafetyKorea ๋“ฑ ์™ธ๋ถ€ API)


โš ๏ธ ๋ฉด์ฑ… ์กฐํ•ญ (Medical Disclaimer)

๋ณธ ์„œ๋น„์Šค๋Š” ์˜๋ฃŒ ๊ธฐ๊ธฐ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ์ œ๊ณต๋˜๋Š” ์ •๋ณด๋Š” ์ฐธ๊ณ ์šฉ์ž…๋‹ˆ๋‹ค. ์˜ํ•™์  ๊ฒฐ์ •์€ ๋ฐ˜๋“œ์‹œ ๋‹ด๋‹น ์˜๋ฃŒ์ง„๊ณผ ์ƒ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์А๋ฆฐ ์šฉ๋Ÿ‰ ๊ณ„์‚ฐ์ด๋‚˜ Sick Day ๊ด€๋ฆฌ๋Š” ํ™˜์ž์˜ ๊ฐœ๋ณ„ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š ๊ด€๋ จ ๋ฌธ์„œ

  • DEPLOYMENT.md: Fly.io ๋ฐฐํฌ ๊ฐ€์ด๋“œ

  • GUIDELINE.md: MCP ์„œ๋ฒ„ ์ƒ์„ฑ ๊ฐ€์ด๋“œ ๋ฐ ์‹ฌ์‚ฌ ์ •์ฑ…

-
security - not tested
F
license - not found
-
quality - not tested

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/JunHyungKang/t1d-mcp'

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