Multi-Robot Control
Integrates with
FastAPI, Robot Control Servers
Multi-Robot Control MCP Agent
This project creates an MCP (Model Context Protocol) server that allows AI agents to control multiple robots via existing FastAPI robot control servers.
Features
- Control multiple robots simultaneously
- Control robot movement (forward, backward, left, right)
- Play sounds through the robots' speakers
- Get robot status information
- Precise velocity control
- Access robot camera images
- Unified API with port specification
Prerequisites
- Python 3.10+
- UV (Python package manager)
- Multiple running robot control FastAPI servers (as provided in the example)
Setup
- Ensure you have a Python 3.10 environment active
- Install dependencies using UV:
uv pip install -e .
Usage
-
Start the robot control FastAPI servers:
- First robot on port 8000
- any other robots on 8001, 8002, etc
-
Important Update: The Claude desktop client now automatically runs the MCP server for you
- No need to manually start the server with
python server.py
- The MCP server functionality is integrated directly into the Claude desktop client
- No need to manually start the server with
-
The MCP server allows AI agents to control multiple robots and access their cameras.
Available Tools
All tools accept a port
parameter (default: 8000) to specify which robot to control.
Movement Control
drive_forward
: Move a robot forwarddrive_backward
: Move a robot backwardturn_left
: Turn a robot leftturn_right
: Turn a robot rightstop
: Stop robot movementdrive
: Control with precise velocity values
Audio Control
beep
: Play a sound through a robot's speaker
Camera Access
get_camera_image
: Get an image from a robot's camera
System Information
robot_status
: Get robot status informationlist_available_robots
: List all available robots and their status
Available Resources
robot://info/{port}
: Get information about a specific robot's capabilities
Examples
## Get status from robot on port 8000
status_robot1 = await client.robot_status(port=8000)
## Get status from robot on port 8001
status_robot2 = await client.robot_status(port=8001)
## Make both robots beep with different tones
await client.beep(port=8000, frequency=440, duration=1.0) # A4 note on robot 1
await client.beep(port=8001, frequency=523.25, duration=1.0) # C5 note on robot 2
## Get a list of all available robots
robots = await client.list_available_robots()
Note on Image Handling
The camera image tools use MCP's native Image
class for handling image data. This allows the AI agent to receive the image data in a format that can be properly handled by the client without need for additional conversion.