Congatudo MCP Server
HTTP MCP server (SSE transport) that exposes your Congatudo-powered Cecotec Conga robot vacuum as 26 tools for AI agents (Claude, Cursor, OpenAI Agents SDK, etc.).
Quick Start
# 1. Clone and configure
cp .env.example .env
# Edit .env → set CONGATUDO_HOST to your robot's IP
# 2. Build and start
docker compose up -d
# 3. Connect any MCP client to:
# http://<host>:8114/sse
Environment Variables
| Variable | Default | Description |
|---|---|---|
CONGATUDO_HOST |
192.168.25.158 |
Robot IP address |
CONGATUDO_PORT |
80 |
Robot HTTP port |
CONGATUDO_API_PREFIX |
/api/v2 |
REST API base path |
CONGATUDO_USERNAME |
(empty) | HTTP Basic Auth username (optional) |
CONGATUDO_PASSWORD |
(empty) | HTTP Basic Auth password (optional) |
MCP_SERVER_HOST |
0.0.0.0 |
MCP SSE bind address |
MCP_SERVER_PORT |
8114 |
MCP SSE port |
Tools
State
get_robot_state— full state (status, battery, attachments, map)get_robot_state_attributes— status / battery / attachment attributesget_robot_map— raw map JSON
Control
basic_control(action)— start / pause / stop / homelocate_robot()— plays a sound to find the robotmanual_control(action, movement_command?)— check / enable / disable / move
Cleaning Modes
clean_zone(zones, iterations?)— clean rectangular zone(s)clean_segments(segment_ids, iterations?, custom_order?)— clean specific roomsgo_to_location(x, y)— send robot to map coordinates
Settings (fan + water)
get_fan_presets()/set_fan_speed(name)— suction powerget_water_presets()/set_water_usage(name)— mopping water flow
Consumables
get_consumables()— wear levelsreset_consumable(type, sub_type?)— reset after replacement
Timers (cron-based)
get_timers()/create_timer(...)/update_timer(id, ...)/delete_timer(id)/toggle_timer(id)
Do Not Disturb
get_dnd_config()/set_dnd_config(enabled, start, end)— quiet hours
System
get_capabilities()— list what your robot supportsget_robot_info()— manufacturer, model, implementationget_wifi_status()— SSID, RSSI, frequency, IPsget_system_info()— hostname, arch, uptime, CPU, memory
Call get_capabilities() first — if a capability isn't listed, its tool will return a clean error.
Client Example (OpenAI Agents SDK)
from agents import Agent, Runner
from agents.mcp import MCPServerSse
async with MCPServerSse(
name="Congatudo",
params={"url": "http://192.168.1.100:8114/sse"},
) as server:
agent = Agent(name="Vacuum", mcp_servers=[server])
await Runner.run(agent, "What's the robot status?")
Docker Commands
docker compose build # Build the image
docker compose up -d # Start in background
docker compose logs -f # Follow logs
docker compose down # Stop