Modbus MCP 서버
Modbus 데이터를 표준화하고 상황에 맞게 조정하여 AI 에이전트와 산업용 IoT 시스템의 원활한 통합을 지원하는 MCP 서버입니다.
특징
- Modbus 도구 :
- 읽기/쓰기 홀딩 레지스터(
read_register
, write_register
). - 코일 읽기/쓰기(
read_coils
, write_coil
). - 입력 레지스터를 읽습니다(
read_input_registers
). - 여러 개의 홀딩 레지스터를 읽습니다(
read_multiple_holding_registers
).
- 프롬프트 : 사용자 정의 가능한 프롬프트(
analyze_register
)를 사용하여 Modbus 레지스터 값을 분석합니다. - 유연한 연결 : 환경 변수를 통해 구성된 TCP, UDP 또는 직렬을 통한 Modbus를 지원합니다.
요구 사항
- 파이썬 : 3.10
- 종속성 및 가상 환경 관리를 위한 uv .
설치
uv
설치 :지엑스피1- 저장소 복제 :
git clone https://github.com/kukapay/modbus-mcp.git
cd modbus-mcp
- 종속성 설치 :
구성
서버는 환경 변수를 통해 지정된 매개변수를 사용하여 Modbus 장치에 연결합니다. 이러한 변수는 .env
파일이나 셸 환경에서 설정하세요.
환경 변수
변하기 쉬운 | 설명 | 기본 | 필수의 |
---|
MODBUS_TYPE | 연결 유형: tcp , udp 또는 serial | tcp | 예 |
MODBUS_HOST | TCP/UDP의 호스트 주소 | 127.0.0.1 | TCP/UDP의 경우 |
MODBUS_PORT | TCP/UDP용 포트 | 502 | TCP/UDP의 경우 |
MODBUS_SERIAL_PORT | 직렬 포트(예: /dev/ttyUSB0 , COM1 ) | /dev/ttyUSB0 | 직렬용 |
MODBUS_BAUDRATE | 직렬 통신 속도 | 9600 | 직렬용 |
MODBUS_PARITY | 직렬 패리티: N (없음), E (짝수), O (홀수) | N | 직렬용 |
MODBUS_STOPBITS | 직렬 정지 비트 | 1 | 직렬용 |
MODBUS_BYTESIZE | 직렬 바이트 크기 | 8 | 직렬용 |
MODBUS_TIMEOUT | 직렬 시간 초과(초) | 1 | 직렬용 |
예제 .env
파일
TCP의 경우:
MODBUS_TYPE=tcp
MODBUS_HOST=192.168.1.100
MODBUS_PORT=502
직렬의 경우:
MODBUS_TYPE=serial
MODBUS_SERIAL_PORT=/dev/ttyUSB0
MODBUS_BAUDRATE=9600
MODBUS_PARITY=N
MODBUS_STOPBITS=1
MODBUS_BYTESIZE=8
MODBUS_TIMEOUT=1
용법
Claude Desktop 설치
구성 파일:
{
"mcpServers": {
"Modbus MCP Server": {
"command": "uv",
"args": [ "--directory", "/path/to/modbus-mcp", "run", "modbus-mcp" ],
"env": { "MODBUS_TYPE": "tcp", "MODBUS_HOST": "127.0.0.1", "MODBUS_PORT": 502 },
}
}
}
도구 사용
참고 : 자연어 지원은 클라이언트가 프롬프트를 구문 분석하고 도구에 매핑하는 능력에 따라 달라집니다. MCP Inspector는 구조화된 JSON을 요구하지만, 아래 예시에서는 대화형 입력이 어떻게 변환되는지 보여줍니다.
- 보류 등록부 읽기 :
- 즉각적인 :
Please read the value of Modbus holding register 0.
- MCP 검사기 JSON :
{
"tool": "read_register",
"parameters": {"address": 0}
}
- 예상 출력 :
Value: <register_value>
- 보류 등록부에 쓰기 :
- 즉각적인 :
Set Modbus holding register 10 to the value 100.
- MCP 검사기 JSON :
{
"tool": "write_register",
"parameters": {"address": 10, "value": 100}
}
- 예상 출력 :
Successfully wrote 100 to register 10
- 코일 읽기 :
- 즉각적인 :
Check the status of the first 5 Modbus coils starting at address 0.
- MCP 검사기 JSON :
{
"tool": "read_coils",
"parameters": {"address": 0, "count": 5}
}
- 예상 출력 :
Coils 0 to 4: [False, False, False, False, False]
- 코일에 쓰기 :
- 즉각적인 :
- MCP 검사기 JSON :
{
"tool": "write_coil",
"parameters": {"address": 5, "value": true}
}
- 예상 출력 :
Successfully wrote True to coil 5
- 입력 레지스터 읽기 :
- 즉각적인 :
Read the values of 3 Modbus input registers starting from address 2.
- MCP 검사기 JSON :
{
"tool": "read_input_registers",
"parameters": {"address": 2, "count": 3}
}
- 예상 출력 :
Input Registers 2 to 4: [<value1>, <value2>, <value3>]
- 여러 개의 보류 레지스터 읽기 :
- 즉각적인 :
Get the values of Modbus holding registers 0 through 2.
- MCP 검사기 JSON :
{
"tool": "read_multiple_holding_registers",
"parameters": {"address": 0, "count": 3}
}
- 예상 출력 :
Holding Registers 0 to 2: [<value1>, <value2>, <value3>]
특허
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 라이선스를 참조하세요.