Anki Vector + OpenClaw integration via MCP. Give your AI assistant a body. MCP server connecting Anki Vector robots to OpenClaw. Your assistant, now with wheels.
Overview
VectorClaw is an MCP server that exposes Anki Vector robot capabilities as tools for AI assistants like OpenClaw — bridging natural language to real-world robot actions over a fully local, cloud-free stack. All communication is — no cloud dependency at runtime (Wire-Pod setup path). See Security Architecture for the full trust model. - vector_drive_on_charger — requires the charger to be in Vector's recently-observed world model; call vector_scan first to give Vector a chance to locate the charger before attempting to dock (observed: invoking while charger is unobserved causes the command to time out without any robot motion) - Perception tools (vector_find_faces, vector_list_visible_faces, vector_face_detection, vector_list_visible_objects) — return empty results when vision modes are not active; vision modes are enabled automatically at connect but will be disabled for the remainder of the session after a vector_vision_reset call (reconnect to restore) - Idle behaviors — Vector's...
README
🤖 VectorClaw
Architecture
┌─────────────┐ stdio MCP ┌──────────────────┐ gRPC/WiFi ┌─────────┐
│ AI Agent │ ─────────────── │ vectorclaw-mcp │ ─────────────── │ Vector │
│ (OpenClaw) │ │ (Python 3.11+) │ │ Robot │
└─────────────┘ └──────────────────┘ └─────────┘
All communication is local-only — no cloud dependency at runtime (Wire-Pod setup path).
See Security Architecture for the full trust model.
Table of Contents
- Architecture
- Current Status
- Quickstart
- MCP Client Configuration
- Available Tools
- Contributing
- Docs Map
Current Status
v1.0.0 Released · 2026-03-01
16 tools verified ✅ on hardware | 7 tools experimental ⚠️
Known limitations:
vector_drive_on_charger— requires the charger to be in Vector’s recently-observed world model; callvector_scanfirst to give Vector a chance to locate the charger before attempting to dock (observed: invoking while charger is unobserved causes the command to time out without any robot motion)- Perception tools (
vector_find_faces,vector_list_visible_faces,vector_face_detection,vector_list_visible_objects) — return empty results when vision modes are not active; vision modes are enabled automatically at connect but will be disabled for the remainder of the session after avector_vision_resetcall (reconnect to restore) - Idle behaviors — Vector’s autonomous animations can overlap with commanded behaviors; use one-command-at-a-time sequencing and wait for completion before issuing the next command
See ROADMAP.md for the full milestone plan.
Quickstart
Requirements: Python 3.11+ · Wire-Pod running · Vector on local WiFi
For the complete walkthrough (Wire-Pod install, robot auth, WiFi config, troubleshooting) see docs/SETUP.md.
Guided Setup (recommended for new users)
The vectorclaw-setup wizard handles configuration, SDK validation, connectivity
check, and a smoke test in one go:
pip install vectorclaw-mcp
vectorclaw-setup
You will be prompted for your robot’s serial number and optional IP address. On success you’ll see a clear SETUP PASSED message and the next-steps command. On failure every step includes an exact remediation hint.
See docs/OPENCLAW_SETUP_SKILL.md for full details.
Manual Setup
Step 1 — Install VectorClaw
pip install vectorclaw-mcp
Step 2 — Configure Vector SDK
Wire-Pod is the canonical self-hosted server for Vector. Install the SDK distribution and run the one-time auth wizard:
pip install wirepod_vector_sdk
python -m anki_vector.configure
Note:
wirepod_vector_sdkinstalls under theanki_vectorPython namespace, so all imports and CLI commands useanki_vector.
Step 3 — Set environment variables
export VECTOR_SERIAL="your-robot-serial" # required — printed on underside of robot
export VECTOR_HOST="192.168.x.x" # optional — auto-discovered if omitted
export VECTOR_REPEAT_GUARD_SECONDS="10" # optional — refuse identical actuating calls within N s (0 = off)
Step 4 — Run the server
vectorclaw-mcp
# or
python -m vectorclaw_mcp
MCP Client Configuration
Add the following block to your mcporter.json (or equivalent MCP client config).
With uvx (recommended — no prior install needed)
{
"mcpServers": {
"vectorclaw": {
"command": "uvx",
"args": ["vectorclaw-mcp"],
"env": {
"VECTOR_SERIAL": "your-serial-here"
}
}
}
}
With pip install (if installed locally)
{
"mcpServers": {
"vectorclaw": {
"command": "vectorclaw-mcp",
"env": {
"VECTOR_SERIAL": "your-serial-here"
}
}
}
}
Available Tools
| Tool | Category | Description | Status |
|---|---|---|---|
vector_say |
🎙️ Speech | Make the robot speak text aloud | ✅ |
vector_animate |
🎭 Expression | Play a named animation | ⚠️ |
vector_drive_off_charger |
🏎️ Motion | Drive the robot off its charger | ✅ |
vector_drive |
🏎️ Motion | Drive straight and/or turn in place | ✅ |
vector_drive_on_charger |
🏎️ Motion | Drive Vector back onto its charger | ⚠️ |
vector_emergency_stop |
🏎️ Motion | Stop all motion immediately | ✅ |
vector_head |
🦾 Actuation | Set head angle (−22° – 45°) | ✅ |
vector_lift |
🦾 Actuation | Set lift height (0.0 – 1.0) | ✅ |
vector_look |
👀 Perception | Capture image from front camera | ✅ |
vector_capture_image |
👀 Perception | One-shot image capture | ✅ |
vector_face |
🖼️ Display | Display custom image on face screen | ✅ |
vector_scan |
🔍 Perception | Head scan for environment | ✅ |
vector_find_faces |
🔍 Perception | Scan for faces | ⚠️ |
vector_list_visible_faces |
🔍 Perception | List currently visible faces | ⚠️ |
vector_face_detection |
🔍 Perception | Get face detection summary | ⚠️ |
vector_list_visible_objects |
🔍 Perception | List currently visible objects | ⚠️ |
vector_cube |
🎲 Interaction | Interact with cube (dock/pickup/drop/roll) | ⚠️ |
vector_vision_reset |
👀 Perception | Disable all vision modes | ✅ |
vector_pose |
📍 Sensing | Get current position and orientation | ✅ |
vector_status |
📊 Status | Get battery level and charging status | ✅ |
vector_charger_status |
📊 Status | Get charger connection state | ✅ |
vector_touch_status |
📊 Status | Get touch sensor state | ✅ |
vector_proximity_status |
📊 Status | Get proximity sensor reading | ✅ |
Status legend: ✅ Verified on hardware | ⚠️ Experimental (requires specific preconditions; see API Reference)
⚠️ Charger prerequisite:
vector_driverequires the robot to be off the charger. Callvector_drive_off_chargerfirst, or setVECTOR_AUTO_DRIVE_OFF_CHARGER=1for automatic undocking.
See docs/MCP_API_REFERENCE.md for full parameter details and response schemas.
Contributing
- 🌿 Branch: branch off
dev, use/naming (e.g.fix/vector-face-payload,feat/vector-scan) - 🧪 Tests: add or update tests under
tests/; all tests use the mocked SDK — no hardware required - ✅ CI: Python 3.11 is required and must pass; Python 3.12 is experimental/informational — run
pytest tests/ -vlocally before opening a PR - 🤖 Hardware: if your change touches a tool or connection layer, record a smoke-test run in Hardware Smoke Log following the Hardware Test Playbook
- 🎯 PR scope: keep PRs focused — separate docs, feature, and refactor changes to reduce merge-conflict risk with parallel lanes
Docs Map
🛠️ Setup & Runtime
| Document | Description |
|---|---|
| Setup Guide | Wire-Pod install, robot auth, WiFi, SDK config, troubleshooting |
| Troubleshooting | Common runtime failures, smoke baseline, and escalation path |
| Runtime Support | Supported Python versions and CI policy |
📡 API & SDK
| Document | Description |
|---|---|
| API Reference | MCP tool signatures, parameters, response schemas |
| Wire-Pod SDK Reference | Full SDK capability catalog |
| Wire-Pod SDK → MCP Integration Priorities | Now/Later/Skip decision table for future tools |
🔬 Hardware Validation
| Document | Description |
|---|---|
| Hardware Test Playbook | Repeatable on-robot validation protocol and PR checklist |
| Hardware Smoke Log | Running record of real-world smoke tests |
| Tool Docking Prerequisites | Which tools require undocked state |
🔒 Security
| Document | Description |
|---|---|
| Security Architecture | Threat model, credential handling, input validation, network posture |
License
MIT — see LICENSE.
Install
uvx vectorclaw-mcpConfiguration
{
"mcpServers": {
"vectorclaw": {
"command": "uvx",
"args": ["vectorclaw-mcp"],
"env": {
"VECTOR_SERIAL": "your-serial-here"
}
}
}
}