Skip to content

VectorCANoe/CANoe-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

6 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

English Version

๐Ÿš€ CANoe MCP Advanced: CANoe MCP Advanced - Master Control Program

๋ชฉ์ฐจ


ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

CANoe MCP Advanced ํ”„๋กœ์ ํŠธ์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋งˆ์Šคํ„ฐ ์ œ์–ด ํ”„๋กœ๊ทธ๋žจ(MCP)์˜ ์ •์‹ ์„ ๋‹ด์•„, ๊ณ ๊ธ‰ AI ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ์ง€๋Šฅ์ ์œผ๋กœ ๊ฐ๋…, ๊ด€๋ฆฌ ๋ฐ ์ตœ์ ํ™”ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์ž์œจ์ ์ธ ์˜์‚ฌ ๊ฒฐ์ •, ๋‹ค์–‘ํ•œ ํ†ตํ•ฉ ๊ตฌ์„ฑ ์š”์†Œ ์ „๋ฐ˜์˜ ์ž‘์—…์„ ์กฐ์ •ํ•˜์—ฌ ํƒ์›”ํ•œ ํšจ์œจ์„ฑ๊ณผ ์ •ํ™•์„ฑ์œผ๋กœ ์‚ฌ์ „ ์ •์˜๋œ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ์ค‘์•™ ์‹ ๊ฒฝ๊ณ„ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ด AI ์ œ์–ด ์‹œ์Šคํ…œ์€ ๋‹ค์Œ์„ ์ œ๊ณตํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค:

  • ์ง€๋Šฅํ˜• ์ž๋™ํ™”: ์ ์‘ํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ผ์ƒ์ ์ด๊ณ  ๋ณต์žกํ•œ ์ž‘์—…์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง: ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ์ง€์†์ ์œผ๋กœ ๊ฐ์‹œํ•˜๊ณ  ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์ธก ๋ถ„์„: ์ž ์žฌ์  ๋ฌธ์ œ๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ํ• ๋‹น์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ ์‘ํ˜• ์ œ์–ด: ํ™˜๊ฒฝ ํ”ผ๋“œ๋ฐฑ ๋ฐ ์„ฑ๋Šฅ ์ง€ํ‘œ์— ๋”ฐ๋ผ ์‹œ์Šคํ…œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ ๋ฐ ๋ณต์›๋ ฅ ์žˆ๋Š” ์šด์˜: ์ค‘์š”ํ•œ ์ธํ”„๋ผ์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•˜๊ณ  ๋‚ด๊ฒฐํ•จ์„ฑ ์žˆ๋Š” ์ œ์–ด๋ฅผ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

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

๐Ÿ“Š 32๊ฐœ ๋„๊ตฌ (27๊ฐœ ํ…Œ์ŠคํŠธ ์™„๋ฃŒ)

Connection & Configuration (4)

  • CANoe ์—ฐ๊ฒฐ (Configuration ์—†์ด๋„ ๊ฐ€๋Šฅ)
  • Configuration ๋กœ๋“œ/์ €์žฅ
  • CAPL ์ปดํŒŒ์ผ

Measurement Control (4)

  • Measurement ์‹œ์ž‘/์ค‘์ง€/๋ฆฌ์…‹
  • ์ƒํƒœ ํ™•์ธ

Signal Operations (2) โญ

  • CAN ์‹ ํ˜ธ ์ฝ๊ธฐ/์“ฐ๊ธฐ
  • Raw value ์ง€์›

Status & Info (4)

  • CAN Bus ํ†ต๊ณ„
  • Database/Node ์ •๋ณด
  • Logging blocks

Variables (4)

  • Environment ๋ณ€์ˆ˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ
  • System ๋ณ€์ˆ˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ

Test Execution (5)

  • Test environment/module ์กฐํšŒ
  • Test ์‹คํ–‰

Logging & Replay (4)

  • Logging block ๊ด€๋ฆฌ
  • Replay block ์ œ์–ด

Diagnostics (5)

  • ์ง„๋‹จ ์š”์ฒญ ์ „์†ก
  • CAPL ํ•จ์ˆ˜ ํ˜ธ์ถœ
  • Symbols/Messages ์กฐํšŒ

๊ฐœ๋ฐœ ๊ธฐ์ˆ 

์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ•๋ ฅํ•œ ๊ธฐ์ˆ  ์Šคํƒ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Python
  • FastMCP - MCP ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ
  • py-canoe - CANoe COM API ๋ž˜ํผ
  • asyncio - ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
  • pydantic - ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ
  • pywin32 - Windows COM ์ธํ„ฐํŽ˜์ด์Šค

์‹œ์ž‘ํ•˜๊ธฐ

CANoe MCP Advanced์˜ ๋กœ์ปฌ ๋ณต์‚ฌ๋ณธ์„ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ์˜ ๊ฐ„๋‹จํ•œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

์ „์ œ ์กฐ๊ฑด

์‹œ์Šคํ…œ์— ๋‹ค์Œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค:

  • Python 3.8+
  • pip
  • Vector CANoe 19.4+
  • py-canoe ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • Windows 10/11
  • Claude Code (MCP ํด๋ผ์ด์–ธํŠธ)

์„ค์น˜

  1. ์ €์žฅ์†Œ ํด๋ก :
    git clone https://github.com/VectorCANoe/CANoe-mcp.git
    cd CANoe-mcp
  2. ๊ฐœ๋ฐœ ๋ชจ๋“œ ์„ค์น˜:
    pip install -e .
  3. Claude Code์— MCP ์„œ๋ฒ„ ๋“ฑ๋ก: ~/.mcp.json์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค:
    {
      "mcpServers": {
        "canoe-advanced": {
          "command": "python",
          "args": ["-m", "canoe_mcp_advanced"],
          "env": {"PYTHONIOENCODING": "utf-8"}
        }
      }
    }
  4. Claude Code ์žฌ์‹œ์ž‘.

์‚ฌ์šฉ๋ฒ•

์„ค์น˜๋˜๋ฉด CANoe MCP Advanced๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Signal ์ฝ๊ธฐ/์“ฐ๊ธฐ ์˜ˆ์ œ

# CANoe ์—ฐ๊ฒฐ
attach_canoe(allow_no_config=True)

# Configuration ๋กœ๋“œ
open_configuration("path/to/config.cfg")

# Measurement ์‹œ์ž‘
start_measurement()

# Signal ์ฝ๊ธฐ
get_signal_value(
    bus="CAN",
    channel=1,
    message="EngineState",
    signal="EngineSpeed"
)

# Signal ์“ฐ๊ธฐ
set_signal_value(
    bus="CAN",
    channel=1,
    message="EngineState",
    signal="EngineSpeed",
    value=3000.0
)

# Measurement ์ค‘์ง€
stop_measurement()

์ „์ฃผ๊ธฐ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ ์˜ˆ์ œ

# 1. CANoe ์—ฐ๊ฒฐ
attach_canoe()

# 2. CAPL ์ปดํŒŒ์ผ
compile_capl_nodes()

# 3. Measurement ์‹œ์ž‘
start_measurement()

# 4. ์‹ ํ˜ธ ๋ชจ๋‹ˆํ„ฐ๋ง & ์ œ์–ด
while running:
    speed = get_signal_value(...)
    if speed > threshold:
        set_signal_value(...)

# 5. Test ์‹คํ–‰
execute_test_module(test_env="TestEnv", test_module="TestModule")

# 6. ํ†ต๊ณ„ ํ™•์ธ
stats = get_can_bus_statistics(channel=1)

# 7. Measurement ์ค‘์ง€
stop_measurement()

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

โœ… 27๊ฐœ ๋„๊ตฌ ์ž‘๋™ ํ™•์ธ

  • CANBasic ์ƒ˜ํ”Œ Configuration์œผ๋กœ ๊ฒ€์ฆ
  • ํ•ต์‹ฌ ์›Œํฌํ”Œ๋กœ์šฐ ์™„๋ฒฝ ์ž‘๋™
  • Signal ์ฝ๊ธฐ/์“ฐ๊ธฐ ์„ฑ๊ณต (0 โ†’ 3000 rpm)

์•„ํ‚คํ…์ฒ˜

CANoe MCP Advanced๋Š” ๋‹ค์–‘ํ•œ ์ œ์–ด ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ชจ๋“ˆ์‹ ๋ฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์•„ํ‚คํ…์ฒ˜๋กœ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

canoe-mcp-advanced/
โ”œโ”€โ”€ canoe_mcp_advanced/
โ”‚   โ”œโ”€โ”€ server.py              # FastMCP ์„œ๋ฒ„ (32 tools)
โ”‚   โ”œโ”€โ”€ canoe_controller.py    # CANoe ์ œ์–ด ๋กœ์ง (31 methods)
โ”‚   โ”œโ”€โ”€ tools/                 # 11๊ฐœ ๋„๊ตฌ ๋ชจ๋“ˆ
โ”‚   โ”‚   โ”œโ”€โ”€ connection.py
โ”‚   โ”‚   โ”œโ”€โ”€ configuration.py
โ”‚   โ”‚   โ”œโ”€โ”€ measurement.py
โ”‚   โ”‚   โ”œโ”€โ”€ signals.py         # โญ ํ•ต์‹ฌ
โ”‚   โ”‚   โ”œโ”€โ”€ tests.py
โ”‚   โ”‚   โ”œโ”€โ”€ environment.py
โ”‚   โ”‚   โ”œโ”€โ”€ status.py
โ”‚   โ”‚   โ”œโ”€โ”€ logging.py
โ”‚   โ”‚   โ”œโ”€โ”€ replay.py
โ”‚   โ”‚   โ”œโ”€โ”€ diagnostics.py
โ”‚   โ”‚   โ””โ”€โ”€ database.py
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ””โ”€โ”€ error_handler.py   # ์—๋Ÿฌ ์ฒ˜๋ฆฌ
โ””โ”€โ”€ pyproject.toml

์„ค์ •

CANoe MCP Advanced์˜ ๋™์ž‘์€ ํŠน์ • ์šด์˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ธฐ๋ณธ ์„ค์ •์€ config.yaml (๋˜๋Š” config.json, .env ํŒŒ์ผ ๋“ฑ)์„ ํ†ตํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

# Example config.yaml
system:
  name: "CanoeAlphaControlUnit"
  log_level: "INFO"
  environment: "development"

ai_engine:
  model_path: "models/mcp_model.pkl"
  decision_threshold: 0.7
  learning_rate: 0.001

data_sources:
  sensor_feed:
    type: "local_file"
    path: "data/sensor_logs.csv"
  database:
    type: "sqlite"
    path: "data/mcp_database.db"
  • ํ™˜๊ฒฝ ๋ณ€์ˆ˜: API ํ‚ค ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“ˆ๋ณ„ ์„ค์ •: ๊ฐ AI ๋ชจ๋“ˆ ๋˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๊ธฐ๋ณธ ๊ตฌ์„ฑ ๋‚ด์— ์ž์ฒด ๊ตฌ์„ฑ ํŒŒ์ผ ๋˜๋Š” ์„น์…˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ : ์ผ๋ถ€ ๋„๊ตฌ ๋ฐ ๊ธฐ๋Šฅ์€ ํŠน์ • CANoe Configuration ์„ค์ •์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๋กœ๋“œ๋งต

์ œ์•ˆ๋œ ๊ธฐ๋Šฅ ๋ฐ ์•Œ๋ ค์ง„ ๋ฌธ์ œ ๋ชฉ๋ก์€ ์ด์Šˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • API ๋ฌธ์„œ (์˜ˆ์ •)
  • ์˜ˆ์ œ (์˜ˆ์ •)
  • [๋” ์ž์„ธํ•œ ๊ธฐ๋Šฅ ๋กœ๋“œ๋งต ํ•ญ๋ชฉ ์ถ”๊ฐ€ ๊ณ ๋ ค]

์•Œ๋ ค์ง„ ์ œ์•ฝ์‚ฌํ•ญ

  1. Windows ์ „์šฉ: COM API ์‚ฌ์šฉ์œผ๋กœ Windows์—์„œ๋งŒ ์ž‘๋™
  2. CANoe ๋ผ์ด์„ ์Šค: Vector CANoe ์ •์‹ ๋ผ์ด์„ ์Šค ํ•„์š”
  3. Configuration ์˜์กด์„ฑ: ์ผ๋ถ€ ๋„๊ตฌ๋Š” CANoe Configuration์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค (Configuration ์„น์…˜์—์„œ ์–ธ๊ธ‰)

๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ๋Š” ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋ฐฐ์šฐ๊ณ , ์˜๊ฐ์„ ์ฃผ๊ณ , ์ฐฝ์กฐํ•˜๋Š” ๋†€๋ผ์šด ๊ณต๊ฐ„์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋ชจ๋“  ๊ธฐ์—ฌ๋Š” ๋งค์šฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ์ œ์•ˆ์ด ์žˆ๋‹ค๋ฉด, ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํฌํฌํ•˜๊ณ  ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์‹ญ์‹œ์˜ค. ๋˜๋Š” ๋‹จ์ˆœํžˆ "enhancement" ํƒœ๊ทธ๋กœ ์ด์Šˆ๋ฅผ ์—ด ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์— ๋ณ„์„ ์ฃผ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค! ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

  1. ํ”„๋กœ์ ํŠธ ํฌํฌ
  2. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜ ์ƒ์„ฑ (git checkout -b feature/AmazingFeature)
  3. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ปค๋ฐ‹ (git commit -m 'Add some AmazingFeature')
  4. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œ (git push origin feature/AmazingFeature)
  5. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์—ด๊ธฐ

๋ผ์ด์„ ์Šค

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


์—ฐ๋ฝ์ฒ˜

Juns - junexi0828@gmail.com GitHub: @junexi0828 ํ”„๋กœ์ ํŠธ ๋งํฌ: https://github.com/VectorCANoe/CANoe-mcp


๊ฐ์‚ฌ์˜ ๊ธ€

  • py-canoe - CANoe Python ๋ž˜ํผ
  • FastMCP - MCP ์„œ๋ฒ„ ํ”„๋ ˆ์ž„์›Œํฌ
  • Model Context Protocol - MCP ํ‘œ์ค€
  • canoe-mcp - CANoe MCP ์„œ๋ฒ„ ํ†ตํ•ฉ์„ ์œ„ํ•œ ๊ธฐ๋ฐ˜

v1.0.0 - Production Ready ๐ŸŽ‰

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages