原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 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 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你需要

  • PyPI已安装 Python 的 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 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日

  • ! 注意

    作者与仓库一致

    发布者(Lukasz-Juranek)不是仓库所有者(ucandevices);可能是其他人代为上架的

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 18379 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 18379 个服务器的 73% 更新
  • 基础检查结果等于或优于此分类中其他 18379 个服务器的 23%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

USB Servo Controller 安全吗?

它在 1 项适用的基础检查中通过了 0 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.4.1)于15天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, NexusWindows

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ 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前天更新
安装

NexusWindows

作者:pironjulien

Windows computer use in the background: desktop apps driven without your mouse or keyboard.

在你的电脑上运行今天更新
安装

作者的 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