MCP 문서 관리

메뉴

Arduino

Arduino

Arduino MCP 서버는 Claude AI와 Arduino 하드웨어(특히 ESP32, ESP8266 등)를 연결하여 AI 기반 로봇 공학 및 IoT 애플리케이션을 가능하게 하는 서버입니다. 이 서버를 통해 LLM은 센서 데이터를 읽고, 모터와 서보를 제어하며, GPIO(General Purpose Input/Output) 핀을 조작하고, 다양한 통신 프로토콜을 통해 Arduino 장치와 상호작용할 수 있습니다.

특징

  • 실시간 센서 데이터 모니터링: 온도, 습도, 가속도, 조도 등 다양한 센서 데이터 실시간 수집
  • 액추에이터 제어: 서보 모터, DC 모터, 스테퍼 모터, LED 등 제어
  • GPIO 관리: 디지털/아날로그 핀 읽기 및 쓰기 기능
  • 시리얼 통신: UART, I2C, SPI 등 다양한 통신 프로토콜 지원
  • 원격 프로그래밍: 원격으로 Arduino 스케치 업로드 및 실행
  • Wi-Fi 및 블루투스 연결: 무선 연결을 통한 데이터 송수신
  • 데이터 시각화: 센서 데이터 실시간 그래프 및 시각화 지원
  • AI 기반 의사 결정: 수집된 데이터를 기반으로 AI 의사 결정 및 제어 로직 실행

API

도구

보드 및 연결 관리

  • list_boards: 연결 가능한 Arduino 보드 목록 조회
  • 입력: 없음
  • 출력: 연결 가능한 보드 목록(포트, 보드 유형)

  • connect_board: 특정 Arduino 보드에 연결

  • 입력: 포트 이름, 보드 유형, 통신 속도(baudrate)
  • 출력: 연결 성공 여부

  • disconnect_board: 현재 연결된 보드와의 연결 해제

  • 입력: 없음
  • 출력: 연결 해제 성공 여부

센서 및 데이터 수집

  • read_sensor: 특정 센서에서 데이터 읽기
  • 입력: 센서 유형, 핀 번호, 추가 파라미터
  • 출력: 센서 데이터 값

  • monitor_sensor: 센서 실시간 모니터링 시작

  • 입력: 센서 유형, 핀 번호, 샘플링 빈도, 콜백
  • 출력: 모니터링 ID

  • stop_monitoring: 센서 모니터링 중지

  • 입력: 모니터링 ID
  • 출력: 중지 성공 여부

핀 및 출력 제어

  • digital_read: 디지털 핀 상태 읽기
  • 입력: 핀 번호
  • 출력: HIGH 또는 LOW 상태

  • digital_write: 디지털 핀에 값 쓰기

  • 입력: 핀 번호, 값(HIGH 또는 LOW)
  • 출력: 성공 여부

  • analog_read: 아날로그 핀 값 읽기

  • 입력: 핀 번호
  • 출력: 0-1023 사이의 아날로그 값

  • analog_write: PWM 값 쓰기

  • 입력: 핀 번호, 값(0-255)
  • 출력: 성공 여부

액추에이터 제어

  • servo_control: 서보 모터 제어
  • 입력: 핀 번호, 각도(0-180)
  • 출력: 성공 여부

  • motor_control: DC 모터 제어

  • 입력: 모터 핀 설정, 속도, 방향
  • 출력: 성공 여부

  • stepper_control: 스테퍼 모터 제어

  • 입력: 핀 설정, 스텝 수, 속도
  • 출력: 성공 여부

프로그래밍 및 스케치 관리

  • upload_sketch: Arduino 스케치 업로드
  • 입력: 스케치 코드 또는 파일 경로
  • 출력: 컴파일 및 업로드 결과

  • run_command: 특정 명령 실행

  • 입력: 명령 문자열
  • 출력: 명령 실행 결과

사용 방법

설치

# npm을 통한 설치
npm install -g arduino-mcp-server

# 또는 Python 기반 구현
pip install mcp-arduino

구성

Claude Desktop에서 이 서버를 사용하려면 다음과 같이 설정합니다:

{
  "mcpServers": {
    "arduino": {
      "command": "npx",
      "args": ["arduino-mcp-server"],
      "env": {
        "DEFAULT_PORT": "/dev/ttyUSB0",  // 기본 시리얼 포트
        "DEFAULT_BAUDRATE": "115200"     // 기본 통신 속도
      }
    }
  }
}

필요 조건

  • Arduino IDE 또는 Arduino CLI 설치
  • 적절한 USB 드라이버 설치 (보드 타입에 따라 다름)
  • Python 3.7 이상 (Python 기반 구현의 경우)
  • Node.js v14 이상 (Node.js 기반 구현의 경우)
  • ESP32/ESP8266의 경우 적절한 보드 매니저 설치

사용 예시

// 사용 가능한 Arduino 보드 목록 조회
const boards = await list_boards();
console.log(`사용 가능한 보드: ${boards.length}개`);

// 특정 보드에 연결
await connect_board("/dev/ttyUSB0", "esp32", 115200);

// DHT22 온습도 센서 데이터 읽기
const temperature = await read_sensor("DHT22", 4, { parameter: "temperature" });
const humidity = await read_sensor("DHT22", 4, { parameter: "humidity" });
console.log(`온도: ${temperature}°C, 습도: ${humidity}%`);

// LED 제어
await digital_write(13, "HIGH");  // LED 켜기
await digital_write(13, "LOW");   // LED 끄기

// 서보 모터 제어
await servo_control(9, 90);  // 서보를 90도 위치로 이동

// 실시간 센서 모니터링 시작
const monitorId = await monitor_sensor("ANALOG", 0, 1000, (value) => {
  console.log(`아날로그 값: ${value}`);
});

// 5초 후 모니터링 중지
setTimeout(async () => {
  await stop_monitoring(monitorId);
  console.log("모니터링 중지됨");
}, 5000);

연결된 구성 요소