inventory-mcp-server

omeletJK/inventory-mcp-server

3.1

If you are the rightful owner of inventory-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This MCP server is an intelligent inventory management optimization tool that uses forecasted demand data to provide optimal daily order plans.

๐Ÿญ ์žฌ๊ณ  ๊ด€๋ฆฌ ์ตœ์ ํ™” MCP ์„œ๋ฒ„

Model Context Protocol (MCP) ์„œ๋ฒ„๋กœ ๊ตฌํ˜„๋œ ์ง€๋Šฅํ˜• ์žฌ๊ณ  ๊ด€๋ฆฌ ์ตœ์ ํ™” ๋„๊ตฌ

License: MIT Python 3.8+ FastAPI

๐ŸŽฏ ๊ฐœ์š”

์ด MCP ์„œ๋ฒ„๋Š” ์˜ˆ์ธก๋œ ์ˆ˜์š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์žฌ๊ณ  ๊ด€๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์žฌ๊ณ  ์ˆ˜์ค€๊ณผ ์˜ˆ์ธก๋œ ์ผ๋ณ„ ์ˆ˜์š”๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ตœ์ ์˜ ์ผ๋ณ„ ์ฃผ๋ฌธ ๊ณ„ํš์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๐ŸŒŸ ์ฃผ์š” ํŠน์ง•

  • โœ… ์•ˆ์ „ ์žฌ๊ณ  ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”: ํ’ˆ์ ˆ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ์ง€๋Šฅํ˜• ๊ณ„์‚ฐ
  • โœ… ๋ฆฌ๋“œํƒ€์ž„ ๊ณ ๋ ค: ์ฃผ๋ฌธ-๋„์ฐฉ ์ง€์—ฐ์‹œ๊ฐ„ ๋ฐ˜์˜
  • โœ… ์ˆ˜์š” ์˜ˆ์ธก ๊ธฐ๋ฐ˜: ๋ฏธ๋ž˜ ์ˆ˜์š”๋ฅผ ๊ณ ๋ คํ•œ ์„ ์ œ์  ์ฃผ๋ฌธ
  • โœ… ์ œ์•ฝ ์กฐ๊ฑด ์ ์šฉ: ํ˜„์‹ค์ ์ธ ์ฃผ๋ฌธ๋Ÿ‰ ์ œํ•œ
  • โœ… Claude Desktop ์—ฐ๋™: ์ž์—ฐ์–ด๋กœ ์‰ฌ์šด ์กฐ์ž‘

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

1. ์„ค์น˜

# Python ๊ฐ€์ƒํ™˜๊ฒฝ ์ƒ์„ฑ (๊ถŒ์žฅ)
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# ์˜์กด์„ฑ ์„ค์น˜
pip install -r requirements.txt

2. ์„œ๋ฒ„ ์‹คํ–‰

# ๊ฐœ๋ฐœ ๋ชจ๋“œ๋กœ ์‹คํ–‰
python api.py

# ๋˜๋Š” uvicorn์œผ๋กœ ์ง์ ‘ ์‹คํ–‰
uvicorn api:app --host 0.0.0.0 --port 8000 --reload

3. ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ™•์ธ

๐Ÿ“Š ์‚ฌ์šฉ๋ฒ•

API ํ˜ธ์ถœ ์˜ˆ์‹œ

curl -X POST "http://localhost:8000/optimize" \
     -H "Content-Type: application/json" \
     -d '{
       "inventory_level": 100,
       "forecasted_demand": [12, 10, 15, 18, 9, 11, 13, 14, 10, 12],
       "lead_time": 2
     }'

์‘๋‹ต ์˜ˆ์‹œ

{
  "order_plan": [0, 10, 18, 0, 0, 5, 8, 0, 0, 7],
  "total_orders": 48,
  "max_daily_order": 18,
  "avg_daily_order": 4.8
}

๐Ÿค– Claude Desktop์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

MCP ์„ค์ •

Claude Desktop์˜ ์„ค์ • ํŒŒ์ผ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€:

{
  "mcpServers": {
    "inventory-optimization": {
      "command": "python",
      "args": ["/path/to/inventory-mcp-server/api.py"],
      "env": {}
    }
  }
}

์ž์—ฐ์–ด ํ”„๋กฌํ”„ํŠธ ์˜ˆ์‹œ

ํ˜„์žฌ ์žฌ๊ณ ๊ฐ€ 100๊ฐœ์ด๊ณ , ํ–ฅํ›„ 10์ผ๊ฐ„ ์ˆ˜์š”๊ฐ€ [12, 10, 15, 18, 9, 11, 13, 14, 10, 12]์ผ ๋•Œ 
์ตœ์ ์˜ ์ฃผ๋ฌธ ๊ณ„ํš์„ ์„ธ์›Œ์ฃผ์„ธ์š”. ์ฃผ๋ฌธ ํ›„ ๋„์ฐฉ๊นŒ์ง€๋Š” 2์ผ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿณ Docker๋กœ ์‹คํ–‰

# ์ด๋ฏธ์ง€ ๋นŒ๋“œ
docker build -t inventory-optimizer .

# ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
docker run -p 8000:8000 inventory-optimizer

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

inventory-mcp-server/
โ”œโ”€โ”€ main.py                 # ํ•ต์‹ฌ ์ตœ์ ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜
โ”œโ”€โ”€ api.py                  # FastAPI ์›น์„œ๋ฒ„
โ”œโ”€โ”€ mcp_config.json        # MCP ์„œ๋ฒ„ ์„ค์ •
โ”œโ”€โ”€ task_description.md    # ์ƒ์„ธ ์‚ฌ์šฉ๋ฒ• ๊ฐ€์ด๋“œ
โ”œโ”€โ”€ sample_inputs/         # ์˜ˆ์ œ ์ž…๋ ฅ ํŒŒ์ผ๋“ค
โ”‚   โ”œโ”€โ”€ input1.json       # ๊ธฐ๋ณธ ์‹œ๋‚˜๋ฆฌ์˜ค
โ”‚   โ”œโ”€โ”€ input2.json       # ๋†’์€ ๋ณ€๋™์„ฑ
โ”‚   โ””โ”€โ”€ input3.json       # ๊ณ„์ ˆ์„ฑ ํŒจํ„ด
โ”œโ”€โ”€ requirements.txt       # Python ์˜์กด์„ฑ
โ”œโ”€โ”€ Dockerfile            # Docker ์„ค์ •
โ”œโ”€โ”€ start.sh              # ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ
โ””โ”€โ”€ README.md            # ์ด ํŒŒ์ผ

๐Ÿงฎ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ƒ์„ธ

์ตœ์ ํ™” ๋กœ์ง

  1. ์•ˆ์ „ ์žฌ๊ณ  ๊ณ„์‚ฐ: ํ‰๊ท  ์ˆ˜์š” ร— 3์ผ
  2. ๋ฏธ๋ž˜ ์žฌ๊ณ  ์˜ˆ์ธก: ํ˜„์žฌ ์žฌ๊ณ  - ๋ฆฌ๋“œํƒ€์ž„ ๊ธฐ๊ฐ„ ์ˆ˜์š”
  3. ์ฃผ๋ฌธ ํŠธ๋ฆฌ๊ฑฐ: ์˜ˆ์ƒ ์žฌ๊ณ  < ์•ˆ์ „ ์žฌ๊ณ 
  4. ์ฃผ๋ฌธ๋Ÿ‰ ๊ณ„์‚ฐ: ์•ˆ์ „์žฌ๊ณ  + ํ–ฅํ›„ ์ˆ˜์š” - ํ˜„์žฌ ์žฌ๊ณ 

์ œ์•ฝ ์กฐ๊ฑด

  • ์ตœ๋Œ€ ์ฃผ๋ฌธ๋Ÿ‰: ํ‰๊ท  ์ˆ˜์š”์˜ 7์ผ์น˜
  • ์ตœ์†Œ ์ฃผ๋ฌธ๋Ÿ‰: 0 (์Œ์ˆ˜ ๋ฐฉ์ง€)
  • ์˜ˆ์ธก ๊ธฐ๊ฐ„: ์ตœ๋Œ€ 365์ผ

๐Ÿ”ง ๊ณ ๊ธ‰ ์„ค์ •

ํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ •

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์•ˆ์ „ ์žฌ๊ณ  ๋ฐฐ์ˆ˜๋‚˜ ์ตœ๋Œ€ ์ฃผ๋ฌธ๋Ÿ‰ ์ œํ•œ์„ ์กฐ์ •ํ•˜๋ ค๋ฉด main.py์˜ ๋‹ค์Œ ๋ถ€๋ถ„์„ ์ˆ˜์ •:

# ์•ˆ์ „ ์žฌ๊ณ  ์ˆ˜์ค€ (ํ‰๊ท  ์ˆ˜์š”์˜ 3์ผ์น˜)
safety_stock = math.ceil(avg_demand * 3)  # 3์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

# ์ตœ๋Œ€ ์ฃผ๋ฌธ๋Ÿ‰ ์ œํ•œ (ํ‰๊ท  ์ˆ˜์š”์˜ 7์ผ์น˜)
max_order = math.ceil(avg_demand * 7)     # 7์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

๐Ÿ“ˆ ์˜ˆ์ œ ์‹œ๋‚˜๋ฆฌ์˜ค

์‹œ๋‚˜๋ฆฌ์˜ค 1: ์•ˆ์ •์  ์ˆ˜์š”

  • ํ˜„์žฌ ์žฌ๊ณ : 100๊ฐœ
  • ์ผ๋ณ„ ์ˆ˜์š”: 10-18๊ฐœ (์•ˆ์ •์ )
  • ๋ฆฌ๋“œํƒ€์ž„: 2์ผ
  • ๊ฒฐ๊ณผ: ํšจ์œจ์ ์ธ ์ฃผ๋ฌธ ๊ณ„ํš

์‹œ๋‚˜๋ฆฌ์˜ค 2: ๋ณ€๋™์„ฑ ๋†’์€ ์ˆ˜์š”

  • ํ˜„์žฌ ์žฌ๊ณ : 50๊ฐœ
  • ์ผ๋ณ„ ์ˆ˜์š”: 5-45๊ฐœ (๋†’์€ ๋ณ€๋™)
  • ๋ฆฌ๋“œํƒ€์ž„: 3์ผ
  • ๊ฒฐ๊ณผ: ์•ˆ์ „ ์žฌ๊ณ  ๊ฐ•ํ™”๋œ ๊ณ„ํš

์‹œ๋‚˜๋ฆฌ์˜ค 3: ๊ณ„์ ˆ์„ฑ ํŒจํ„ด

  • ํ˜„์žฌ ์žฌ๊ณ : 200๊ฐœ
  • ์ˆ˜์š” ํŒจํ„ด: ์ ์ง„์  ์ฆ๊ฐ€ ํ›„ ๊ฐ์†Œ
  • ๋ฆฌ๋“œํƒ€์ž„: 1์ผ
  • ๊ฒฐ๊ณผ: ํ”ผํฌ ๋Œ€๋น„ ์„ ์ œ์  ์ฃผ๋ฌธ

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

  1. Fork ์ด ์ €์žฅ์†Œ
  2. Feature ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (git checkout -b feature/AmazingFeature)
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ปค๋ฐ‹ (git commit -m 'Add some AmazingFeature')
  4. ๋ธŒ๋žœ์น˜์— Push (git push origin feature/AmazingFeature)
  5. Pull Request ์˜คํ”ˆ

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ”— ๊ด€๋ จ ๋งํฌ

๐Ÿ“ž ์ง€์›

์งˆ๋ฌธ์ด๋‚˜ ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค๋ฉด:

  • GitHub Issues์— ๋“ฑ๋ก
  • ์ž์„ธํ•œ ์‚ฌ์šฉ๋ฒ•์€ ์ฐธ์กฐ

โญ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ์Šคํƒ€๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”!