프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

USB Servo Controller

제작자: ucandevices버전 0.4.1i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.Lukasz-Juranek/usb-servo-controller

설치

개요

제작자가 쓴 설명(영어 원문)

Drive 12 hobby servos on an open-hardware USB-C controller: moves, poses, sequences, rail current

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 기타

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 0개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

필요한 것

  • PyPIPython의 uv 설치(uvx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "usb-servo-controller": {
      "command": "uvx",
      "args": [
        "ucan-servo-mcp"
      ]
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add usb-servo-controller -- uvx ucan-servo-mcp

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "usb-servo-controller": {
      "command": "uvx",
      "args": [
        "ucan-servo-mcp"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "usb-servo-controller": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "ucan-servo-mcp"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ! 주의

    제작자와 저장소 일치

    게시자(Lukasz-Juranek)가 저장소 소유자(ucandevices)가 아니에요. 다른 사람이 등록했을 수 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

기타 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 32718개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 32718개 중 72%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 32718개 중 27%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

USB Servo Controller, 안전한가요?

해당하는 기본 점검 1개 중 0개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.4.1)은 15일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, MemberVault MCP by usefulapi

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

Spec Driven Development

제작자: formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

내 컴퓨터에서 실행★ 440MIT14개월 전 업데이트
설치

Remote Desktop Commander

제작자: desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

클라우드에서 실행★ 211그저께 업데이트
설치

List courses; add users to courses, remove course access or delete users in MemberVault.

클라우드에서 실행오늘 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

USB-C 12-Channel Servo Controller

12-channel USB-C servo controller, Pololu Maestro compatible, with an MCP server so AI agents (Claude, etc.) can drive servos. $18 on [Tindie](https://www.tindie.com/products/lll7/usb-servo-controller-12-channels-usb-c/) · [product page](https://ucandevices.github.io/servo.html).

▶ 2-minute video: wiring, current monitoring, GUI and the controller driving a real MG995

Open-source alternative to the Pololu Mini Maestro 12 that speaks the Maestro serial protocols, so Maestro libraries work unchanged — plus USB-C, servo-rail current and voltage sensing, on-board scripts. Built for JLCPCB turnkey assembly, ≈ $4.43 per board at 100 units against $29.95 for the Maestro.

MCUWCH CH32V203C8T6, RISC-V 96 MHz, LQFP-48
Channels12 hardware PWM, 50 Hz, 0.5 µs; travel limits per channel (64–4080 µs, 500–2500 default); analog input on 0–7
Host interfaceUSB-C, CDC serial (no driver); ASCII protocol and the Pololu Maestro Compact / Pololu / Mini SSC protocols
Servo powerseparate rail on a 5.08 mm screw terminal, 5–13.2 V full function, ~5 A total
Sensingrail current (5 mΩ + INA180A2) and voltage (÷4), overcurrent / LiPo undervoltage cut-off
PCB66 × 38 mm, 2 layers, all parts top side, 4 × M3
Statusfirst board verified on hardware 2026-09-28 — selftest.py --rail --move 58/58; channels 1–11 not yet driven with a real servo
DocumentFor
USER.mdusing the board: wiring, power, tools, command reference, flashing
tools/README.mdhost tools: library, CLI, GUI, scripts, MCP server, release builds
this filedesign: why each choice, BOM and cost, limitations, what is left before fab

AI agents (MCP server)

tools/servo_mcp.py is an MCP server that lets an AI agent move servos, run poses and sequences, and read rail current/voltage, with guardrails: per-channel limits, ramped moves, overcurrent stop. pip install -r tools/requirements.txt, then:

Claude Code

claude mcp add servo -- python /path/to/UsbServoController/tools/servo_mcp.py

Claude Desktop (claude_desktop_config.json)

{

"mcpServers": { "servo": { "command": "python", "args": ["/path/to/UsbServoController/tools/servo_mcp.py"] } } }

Add "--port", "COM5" to pick a port, or "--mock" to try it without hardware. Close the GUI first: only one program can hold the serial port.

The server is also on PyPI, so any MCP client can run it without cloning the repo: command uvx, args ["ucan-servo-mcp"] (plus --config path/to/servogui.json to use the limits, poses and sequences saved by the GUI).


1. Quick start

pip install -r tools/requirements.txt

python tools/servogui.py # GUI (or --mock with no hardware) python tools/servoctl.py set 0 1500 # CLI cd embedded-ch32 && make flash # build + flash over USB, ~3 s, no jumper

Downloads: firmware images and the prebuilt GUI for Windows and Linux are on the Releases page. To build the GUI yourself: python tools/build_release.py → tools/dist/.


2. Why the CH32V203C8T6

The hard requirement was a USB bootloader in ROM, so a blank chip can be flashed over USB-C with no programmer. That rules out the STM32F103 the design started on (USART-only bootloader). Of LQFP-48 parts that have one and are stocked at JLCPCB:

CandidateUSB boot on blank chipStock$@100
CH32V203C8T6 (chosen)✅8,6430.877
CH32X035C8T6 / CH32F203C8T6✅~5000.72 / 1.02
AT32F415CBT7✅10,5181.319
STM32F072C8T6✅2,9452.495

Cheapest part with real inventory, a third the price of the STM32F072, and pin-compatible with the STM32F103 layout (32 of 33 connected pins identical).

Costs of the choice:

  • RISC-V firmware, WCH HAL, no CubeMX.
  • An ST-Link will not work. Debug is WCH 2-wire SDI on J9 — needs a WCH-LinkE. Routine flashing is over USB, so the probe is only for debugging.
  • PB2 is BOOT1 on this chip, so it is tied low by R17 (5.1 kΩ).

3. Hardware

                            U4 INA180A2 (Kelvin across R18) ─► PA5 I_SENSE

J2 Servo V+ ── R18 5mΩ ──┬────────► servo header V+ rail (unfused) (VSRV_RAW) ├─ R19..R22 ÷4 ─► PA4 V_SENSE └─ JP1 ──D2──┐ ├─► HT7533-1 ─► 3V3 ─► CH32V203, LED USB-C VBUS 5V ─────────────D1──────────┘ GND: one continuous plane, common to both supplies

  • Two supply domains, one ground. D1/D2 are a diode-OR so neither feeds the other. Every servo amp crosses R18, so the current reading covers the whole board.
  • JP1 (2-pin header, open by default): fit a shunt cap to run the logic from the servo supply with no USB — the Maestro's VSRV=VIN block.
  • JP2 (2-pin header): BOOT0 high, for first flash / recovery only.
  • Logic draw ≈ 15 mA, so the HT7533-1 (100 mA, 2.5 µA quiescent) dissipates 0.07 W even from 2S LiPo.
  • USB-C: CC pull-downs R14/R15, SRV05-4 clamps D+, D−, CC1, CC2.
  • Servo signals are 3.3 V through 220 Ω (R1–R12). Headers are SIG / V+ / GND.
Channel map
Ch01234567891011
PinPA0PA1PA2PA3PA6PA7PB0PB1PA8PA9PA10PB8
TimerT2C1T2C2T2C3T2C4T3C1T3C2T3C3T3C4T1C1T1C2T1C3T4C3
Analog✅✅✅✅✅✅✅✅————

Reserved: PA4/PA5 rail sensing · PA11/PA12 USB · PA13/PA14 SDI · PD0/PD1 crystal · PC13 LED · PB2 BOOT1. LQFP-48 has only 10 ADC pins, and PA4/PA5 went to sensing, so analog is 8 of 12 — the Maestro 12 has all twelve.

Rail sensing
Current (R18 + U4)Voltage (R19–R22)
Parts5 mΩ 1 W shunt, INA180A2 gain 50, high side4 × 5.1 kΩ, ÷4, 100 nF
Full scale13.2 A13.2 V
Resolution≈ 3.2 mA≈ 3.2 mV

High side keeps the ground plane unbroken. It measures total rail current, not per channel. The ADC reference is VDDA = the LDO output (no VREF+ on LQFP-48), so readings are good for thresholds, not calibrated metering. The firmware trips all channels off after 5 bad readings (~50 ms): 5 A default overcurrent, and undervoltage chosen automatically (2S → 6.4 V, 3S → 9.6 V, anything else off). Details in USER.md §4.4.

Power limits
LimitSet byValue
Absolute max on J2C15/C16, 16 V electrolytics16 V
Full function (voltage sense)÷4 divider13.2 V
Continuous current2.4 mm pour between header rows~5 A (6.1 A at 20 °C rise)

The 24 A terminal is not the limit; the copper behind it is.

PCB

2 × 1 oz, 1.6 mm, 0.2 mm min trace/space, 0.3/0.6 mm vias. GND is a solid pour on both layers; SERVO_V+ is carried by three priority-ordered top-layer zones. Headers along the bottom edge, USB-C right, screw terminal left, MCU centre.

⚠️ F8 (Update PCB from Schematic) deletes H1–H4 — they have no schematic

symbol. Untick *Delete footprints with no symbols*, or re-add them at

(16, 4), (61.5, 4), (16, 33), (61.5, 33).

⚠️ HT7533-1 is not pin-compatible with the AMS1117 it replaced (SOT-89:

GND / VIN+tab / VOUT). The tab is VIN.


4. Bill of materials and cost

Class: B Basic · P Preferred (both fee-free) · E Extended ($3.07 feeder fee if SMT).

RefPartLCSCClassQty$/board
U1CH32V203C8T6, LQFP-48C3001172E10.8770
U2HT7533-1, SOT-89-3C14289B10.1430
U3SRV05-4 ESD, SOT-23-6C558418E10.0270
U4INA180A2, SOT-23-5C192764E10.1920
J1USB-C 16P TYPE-C-31-M-12C165948E10.1860
J2Screw terminal 5.08 mm 2PC474952E (THT)10.1920
J3–J8Pin header 1×6 2.54 mmC37208E (THT)60.2520
JP1, JP2Pin header 1×2 2.54 mmC358684E (THT)20.0180
Y1Crystal 8 MHz SMD5032C115962B10.2450
D1–D2B5819W, SOD-123C7420330P20.0340
D3LED red 0603C2286B10.0070
R1–R13220 Ω 0603 (servo series + LED)C22962B130.0650
R14–R17, R19–R225.1 kΩ 0603C23186B80.0160
R185 mΩ 1 W shunt, 1206C7419996E10.0370
C1–C8, C17–C18100 nF 0603 X7RC14663B100.1200
C9–C1110 µF 0603 X5RC19702B30.0960
C121 µF 0603C15849B10.0170
C13–C1430 pF 0603 C0GC1658B20.0160
C15–C16470 µF 16 V electrolyticC46550400E20.2140
58$2.7540

J9 (SDI) is not fitted. Shunt caps (C100114, two per board) cannot be fitted by JLCPCB — order them loose, ≈ $1.80 per 100.

100 unitsTotalPer board
Components$275.40$2.754
Assembly: setup $8.18, stencil $1.53, SMT 167 joints $26.72, THT 42 joints $68.88 + $3.58, 6 feeder fees $18.42$127.31$1.273
PCB fabrication (est.)~$40~$0.40
Total≈ $443≈ $4.43

Excludes shipping and duties. Prices are LCSC qty-100; stock checked 2026-09-19/20 (CH32V203 the thinnest at 8,643) — re-verify before ordering.

What drives cost:

  • Through-hole soldering is 57 % of assembly. J3–J8 cost $0.25 in parts and $0.59 in hand soldering. SMT-only with loose headers would cut assembly to $0.55/board.
  • Unique Extended SMT parts, not unit price. Hence 220 Ω doubles as the LED resistor, 5.1 kΩ serves CC1/CC2/BOOT0/BOOT1/divider, one SRV05-4 replaces discrete TVS diodes, and JP1/JP2 share one header part.

5. Firmware (embedded-ch32/)

RISC-V, WCH ch32v20x HAL and USB device library, xPack riscv-none-elf-gcc 15.2 (make GCC_PATH=... to override). Version USBServoController 0.4.

Flash regionAddressSizeContents
Bootloader0x000012 KBown USB CDC bootloader (bootloader/)
Application0x300048 KBservo firmware
Script0xF0002 KBstored board script
Settings0xF800256 B usedtravel limits, Maestro speed/accel (User/settings.c, W)

Layout lives in User/flash_layout.h and both Link.ld files.

make                 # build/USBServoController-ch32.{elf,hex,bin}

make flash # BOOT command -> bootloader -> write, CRC-32 check, restart (~3 s) make hosttest # on the PC: sense.c protection (21 supply scenarios), maestro.c protocol, ramps and limits (11) python tools/verify_pinmap_ch32.py # schematic <-> pin table <-> firmware

Blank chip or recovery: make full, fit JP2, plug in USB, wchisp flash build/USBServoController-ch32-full.bin, remove JP2, replug. Jumping to the ROM bootloader from firmware does not work on this chip (tested), which is why the board has its own.

Timing: 96 MHz timers, PSC 47 → 0.5 µs ticks, ARR 39999 → 20 ms frame. 0.25 µs would need a 4 MHz tick, which only fits 16 bits at ≥ 100 Hz.

Protocol: one ASCII c

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기