Vicon DataStream MCP Server
Provides real-time Vicon motion capture data to ROS systems, including kinematic data, marker tracking, biomechanical devices, and coordinate system mapping for ROS conventions.
Provides real-time Vicon motion capture data to Unity applications, including global and local poses, marker tracking, force plate data, and camera calibration parameters with automatic coordinate system mapping.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Vicon DataStream MCP Serverlist all subjects and their marker positions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Vicon DataStream MCP Server
English | δΈζ
A full-featured Vicon motion capture data streaming server based on MCP (Model Context Protocol).
π SDK Reference: Vicon DataStream SDK Manual.pdf π¦ Based on SDK: Vicon DataStream SDK v1.12.145507h (Win64 Python)
β¨ 100% Feature Complete: Implements all 47+ core functions of Vicon DataStream SDK.
Part of the ROSClaw Embodied Intelligence Operating System.
π Features
π Connection Management
β TCP Direct Connection (Port 801)
β Multicast Connection (224.0.0.0/4)
β Multicast Forwarding Control
β Configurable Buffer Size
π Kinematic Data (Complete)
β Global Pose: Position + 4 rotation formats (Euler/Quaternion/Matrix/Helical)
β Local Pose: Relative parent segment transform, 4 rotation formats
β Static Offset: PRE-POSITION/PRE-ORIENTATION
β Segment Hierarchy: Parent segments, child segments, root segment
β Occlusion Status: Real-time markers
π Marker Tracking
β Labeled Markers (subject + parent segment + position + occlusion)
β Unlabeled Markers (raw reflection points)
β Marker Ray Tracking (ray-tracing camera assignment)
π Biomechanical Devices
β Force Plate Data:
Global coordinates: Force vector (N), Moment vector (Nm), Center of Pressure (mm)
Local coordinates: Relative to force plate's own coordinate system
Analog channel voltage
β Eye Tracker: Eye position + gaze vector (with occlusion detection)
β Generic Devices: EMG etc., auto-recognized units
π· Cameras and Centroids
β Camera list (ID, type, resolution, display name)
β Dynamic cameras (movable cameras)
β Camera Calibration Parameters:
Global pose (translation + 4 rotation types)
Lens parameters (focal length, principal point, distortion coefficients k1,k2,k3)
β Centroid data (reflected point position + weight per camera)
βοΈ Advanced Configuration
β 3 Stream Modes (ClientPull/ClientPullPreFetch/ServerPush)
β Subject Filtering (receive only specified subjects)
β Coordinate System Mapping (6-direction customization, auto-detect Unity/Unreal/ROS)
β Latency Analysis (total latency + stage breakdown)
β Timecode (hours:minutes:seconds:frames)
β Wireless Network Optimization (Windows)
π Documentation Navigation
Document | Description |
Windows system detailed installation, configuration, troubleshooting | |
OpenClaw/Claude Desktop configuration details | |
System architecture and technical details | |
Complete feature checklist | |
Vicon DataStream SDK v1.12.145507h Official PDF Documentation |
Windows Users Quick Start
If you use Windows, please check the Windows Complete Installation Guide, which includes:
Vicon SDK download and installation steps
Detailed SDK directory structure
OpenClaw connection configuration (including multi-server configuration)
Port description (801/804/8802/7000/51001)
Real-time data acquisition complete tutorial
Troubleshooting and performance optimization
![]()
π Quick Start
1. Install Vicon SDK
cd "D:\Program Files\Vicon\DataStream SDK\Win64\Python"
pip install -e vicon_dssdk2. Install MCP Dependencies
cd vicon-datastream-mcp
pip install -r requirements.txt3. Configure OpenClaw/Claude Desktop
Edit the configuration file (Windows path: C:\Users\<username>\.openclaw\openclaw.json):
{
"mcpServers": {
"vicon": {
"command": "python",
"args": ["D:/workspace/rosclaw/mcp/vicon-datastream-mcp/src/mcp_server.py"],
"env": {
"VICON_HOST": "192.168.20.24:801"
}
}
}
}Port Selection Reference:
Port | Use Case | Latency |
801 | DataStream Live/Offline (Recommended) | Standard |
804 | DataStream Low Latency | Lower |
8802 | DataStream Live (Legacy Compatibility) | Standard |
π‘ Tip: If port 801 connection fails, try 804 or 8802
Detailed configuration instructions can be found in the Windows Setup Guide
4. Run
# stdio mode (default)
python -m src.mcp_server
# SSE mode
python -m src.mcp_server --transport sse --port 8000π¬ Natural Language Examples
Connection and Configuration
"Connect to Vicon system"
β vicon_connect(host="localhost:801")
"Connect via multicast using local IP 192.168.1.100"
β vicon_connect_multicast(local_ip="192.168.1.100")
"Enable low latency push mode"
β vicon_set_stream_mode("ServerPush")
"Set Unity coordinate system (Y-up)"
β vicon_set_axis_mapping("Forward", "Up", "Right")
"Only receive Colin's data"
β vicon_clear_subject_filter() + vicon_add_subject_filter("Colin")Get Kinematic Data
"Get Colin's pelvis complete pose"
β vicon_get_segment(subject_name="Colin", segment_name="Pelvis")
Returns: Global/Local/Static transforms, each containing Euler/Quaternion/Matrix/Helical
"Get all segments hierarchy"
β vicon_get_all_segments("Colin")
"Get marker LPSI ray tracing information"
β vicon_get_markers(subject_name="Colin")Biomechanical Data
"Get force plate force and moment (global coordinates)"
β vicon_get_force_plates()
"Get force plate local coordinate data"
β vicon_get_force_plates(include_local=true)
"Get eye tracker 1 gaze direction"
β vicon_get_eye_tracker(eye_tracker_id=1)Cameras and Calibration
"List all cameras"
β vicon_get_cameras()
"Get calibration parameters for camera Vantage001"
β vicon_get_camera_calibration(camera_name="Vantage001")
Returns: Global pose + focal length + distortion coefficients
"Get centroid data for camera 1"
β vicon_get_centroids(camera_name="Vantage 16 (2105980)")Analysis and Debugging
"Analyze system latency bottleneck"
β vicon_get_latency_samples()
Returns: {acquisition: 0.001s, processing: 0.005s, network: 0.002s}
"Get current frame timecode"
β vicon_get_timecode()
Returns: 01:12:24:02
"Enable timing log debugging"
β vicon_set_timing_log(client_log="timing.log")π οΈ Complete MCP Tools List (36)
Connection (5)
Tool | Description |
| TCP connection |
| Multicast connection |
| Start multicast forwarding |
| Stop multicast forwarding |
| Set buffer size |
Data Configuration (5)
Tool | Description |
| Enable data type |
| Disable data type |
| Check enabled status |
| Set stream mode |
| Get frame |
Time and Latency (4)
Tool | Description |
| Timecode |
| All frame rates |
| Total latency |
| Latency samples |
Subjects and Segments (5)
Tool | Description |
| Subject list |
| Clear filter |
| Add filter |
| Single segment data (full format) |
| All segments |
Markers (2)
Tool | Description |
| Markers (with rays) |
| Unlabeled markers |
Devices and Force Plates (4)
Tool | Description |
| Device list |
| Apex haptic feedback |
| Force plates (global + local) |
| Analog voltage |
Eye Trackers (2)
Tool | Description |
| Eye tracker list |
| Position + gaze vector |
Cameras (3)
Tool | Description |
| Camera list |
| Centroid data |
| Calibration parameters |
Coordinate System (3)
Tool | Description |
| Set coordinate system |
| Get coordinate system |
| Server orientation |
Debugging (2)
Tool | Description |
| Timing log |
| Wireless optimization |
π‘ Data Format Examples
Segment Pose (Complete)
{
"subject": "Colin",
"segment": "Pelvis",
"global": {
"translation": {"x": -522.3, "y": -1.6, "z": 1119.1},
"rotation_euler_xyz": {"x": 0.1, "y": -0.2, "z": 0.05},
"rotation_quaternion": {"x": 0.0, "y": 0.1, "z": 0.0, "w": 0.99},
"rotation_matrix": [[1,0,0], [0,1,0], [0,0,1]],
"rotation_helical": {"x": 0.0, "y": 0.1, "z": 0.0, "magnitude": 0.1},
"occluded": false
},
"local": { /* Relative to parent segment */ },
"static": { /* PRE-POSITION/PRE-ORIENTATION */ },
"hierarchy": {
"parent": "Hips",
"children": ["Spine", "LeftUpperLeg", "RightUpperLeg"]
}
}Force Plate Data
{
"plate_id": 1,
"global": {
"force_vectors": [{"x": 0.0, "y": 0.0, "z": 823.5, "unit": "N"}],
"moment_vectors": [{"x": 12.3, "y": -5.2, "z": 0.0, "unit": "Nm"}],
"center_of_pressure": [{"x": 125.0, "y": -45.0, "z": 0.0, "unit": "mm"}]
},
"local": {
/* Relative to force plate's own coordinate system */
}
}Camera Calibration
{
"camera": "Vantage 16 (2105980)",
"global_pose": {
"translation": {"x": 1200.5, "y": -800.2, "z": 2400.0, "unit": "mm"},
"rotation": {
"euler_xyz": {"x": 0.0, "y": 0.1, "z": 0.0},
"quaternion": {"x": 0.0, "y": 0.05, "z": 0.0, "w": 0.998}
}
},
"lens": {
"focal_length_mm": 24.0,
"principal_point": {"x": 960.0, "y": 540.0},
"lens_parameters": {"k1": 0.001, "k2": -0.0001, "k3": 0.0}
}
}π Coordinate System Quick Reference
Software | X | Y | Z | Call |
Vicon Default | Forward | Left | Up | (default) |
Unity | Forward | Up | Right |
|
Unreal | Forward | Right | Up |
|
ROS | Forward | Left | Up |
|
Blender | Left | Forward | Up |
|
π Project Structure
vicon-datastream-mcp/
βββ src/
β βββ __init__.py # Python package init
β βββ mcp_server.py # Main MCP Server (81KB, complete implementation)
βββ prompts/ # Prompt templates
β βββ system.txt # System prompt
β βββ examples/ # Example prompts
β βββ basic_usage.txt
βββ docs/ # Documentation
β βββ WINDOWS_SETUP.md # Windows setup guide
β βββ CONFIG.md # Configuration guide
β βββ ARCHITECTURE.md # Architecture details
β βββ Vicon DataStream SDK Manual.pdf # π SDK v1.12.145507h official doc
βββ config.json # MCP client configuration
βββ requirements.txt # Python dependencies
βββ CHECKLIST.md # β
Feature completeness checklist
βββ README.md # This document (English)
βββ README.zh.md # Chinese versionπ Troubleshooting
SDK Not Found
# Method 1: Standard installation
cd "D:\Program Files\Vicon\DataStream SDK\Win64\Python"
pip install -e vicon_dssdk
# Method 2: Set environment variable
$env:VICON_SDK_PATH = "D:\Program Files\Vicon\DataStream SDK\Win64\Python"Connection Failed
Is Vicon Tracker/Nexus/Evoke running?
Is DataStream enabled? (in software settings)
Is firewall blocking port 801?
Empty Data
Ensure the correct call sequence:
vicon_connect()vicon_enable_data("segment")vicon_get_frame()vicon_get_segment(...)
π Related Resources
SDK Path:
D:\Program Files\Vicon\DataStream SDK\
π¬ SDK Information
Property | Value |
SDK Name | Vicon DataStream SDK |
SDK Version | 1.12.145507h |
Protocol | TCP / Multicast |
Documentation | |
License | Vicon Proprietary |
Part of ROSClaw
rosclaw β Core framework
vicon-datastream-mcp β This repo
Made with precision for motion capture professionals π―
Generated by ROSClaw SDK-to-MCP Transformer SDK: Vicon DataStream SDK v1.12.145507h | Protocol: TCP/Multicast
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ros-claw/vicon-datastream-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server