Skip to main content
Glama
README.md
# indigo-mcp

MCP (Model Context Protocol) server for **INDIGO** astronomy automation protocol.

Lets AI agents (Claude, Hermes, etc.) control telescopes, cameras, focusers, filter wheels, domes, and other astronomical equipment through the INDIGO protocol.

## Architecture

```
AI Agent ←→ MCP Protocol ←→ indigo-mcp ←→ INDIGO Server (port 7624) ←→ Hardware
```

## Quick Start

```bash
# Install
pip install -e ".[dev]"

# Run (connects to INDIGO at localhost:7624)
indigo-mcp

# Or specify host/port
indigo-mcp --host 192.168.1.100 --port 7624
```

## Configuration

Environment variables:
- `INDIGO_HOST` — INDIGO server host (default: `localhost`)
- `INDIGO_PORT` — INDIGO server port (default: `7624`)
- `INDIGO_WS` — Use WebSocket transport instead of raw TCP (default: `false`)

Or pass as CLI arguments:
```bash
indigo-mcp --host 192.168.1.100 --port 7624 --ws
```

## MCP Tools

| Tool | Description |
|------|-------------|
| `indigo_list_devices` | List all connected devices and their interfaces |
| `indigo_get_property` | Get current value of a device property |
| `indigo_set_property` | Set a device property value |
| `indigo_connect_device` | Connect to a device |
| `indigo_disconnect_device` | Disconnect from a device |
| `indigo_capture_image` | Take an exposure with a CCD |
| `indigo_abort_exposure` | Abort an ongoing exposure |
| `indigo_slew` | Slew telescope to RA/Dec coordinates |
| `indigo_park` | Park the telescope |
| `indigo_get_coordinates` | Get current telescope coordinates |
| `indigo_set_tracking` | Enable/disable mount tracking |
| `indigo_move_focuser` | Move focuser by relative steps |
| `indigo_set_filter` | Set filter wheel slot |
| `indigo_script_upload` | Upload & persist a JavaScript script to the Scripting Agent |
| `indigo_script_list` | List scripts stored on the Scripting Agent |
| `indigo_script_execute` | Execute a stored script by name (waits for Busy→Ok/Alert) |
| `indigo_script_run` | Run an inline JS snippet (e.g. launch a Sequencer.js sequence) |
| `indigo_script_delete` | Delete a stored script |
| `indigo_script_monitor` | Monitor script execution: state changes, log messages, watched properties |

## Project Structure

```
indigo-mcp/
├── pyproject.toml
├── README.md
├── src/
│   └── indigo_mcp/
│       ├── __init__.py
│       ├── server.py      # MCP server entry point
│       ├── client.py      # INDIGO TCP/WS client
│       ├── protocol.py    # JSON message serialization/deserialization
│       └── tools.py       # MCP tool implementations
└── tests/
    └── __init__.py
```