Metadata-Version: 2.4
Name: wisent-wire-mcp
Version: 0.4.0
Summary: MCP server for the Wisent Wire hardware testing platform
Author-email: Wisent Wire <info@wisent-wire.com>
License-Expression: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: wisent-wire-sdk>=0.1.0
Requires-Dist: mcp>=1.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: responses>=0.23; extra == "dev"
Requires-Dist: ruff>=0.4; extra == "dev"
Dynamic: license-file

# wisent-wire-mcp

MCP (Model Context Protocol) server for the [Wisent Wire](https://wisent-wire.com) hardware testing platform. Lets AI assistants interact with WisentWire devices — power control, firmware flashing, and UART communication.

## Installation

Requires Python **3.10+**. Install with [`pipx`](https://pipx.pypa.io) —
it puts the MCP server in an isolated environment and adds the
`wisent-wire-mcp` binary to your `PATH`.

### 1. Install `pipx` (one-time)

```bash
# macOS
brew install pipx
pipx ensurepath

# Linux / WSL
python3 -m pip install --user pipx
python3 -m pipx ensurepath
```

Open a new terminal so the updated `PATH` is picked up.

### 2. Install the MCP server

```bash
pipx install wisent-wire-mcp
```

Verify:

```bash
which wisent-wire-mcp         # ~/.local/bin/wisent-wire-mcp (or similar)
```

### 3. Upgrade / uninstall

```bash
pipx upgrade   wisent-wire-mcp
pipx uninstall wisent-wire-mcp
```

## Configuration

### `.mcp.json` location

Claude Code reads MCP servers from `.mcp.json`. Two scopes:

| Scope | Path | When to use |
|-------|------|-------------|
| **Project** | `<repo-root>/.mcp.json` | Shared with the project (checked into VCS or per-repo) |
| **User** | `~/.claude.json` under the `mcpServers` key | Available in every Claude Code session for this user |

Claude Desktop uses a separate file:

| Platform | Path |
|----------|------|
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
| Linux | `~/.config/Claude/claude_desktop_config.json` |

### Example `.mcp.json`

```json
{
  "mcpServers": {
    "wisent-wire": {
      "command": "wisent-wire-mcp",
      "env": {
        "WISENT_WIRE_URL": "https://int.wisent-wire.com",
        "WISENT_WIRE_EMAIL": "user@company.com",
        "WISENT_WIRE_PASSWORD": "..."
      }
    }
  }
}
```

After editing `.mcp.json`, restart Claude Code (or reload the window)
for the server to be picked up.

### Environment variables

| Variable | Required | Description |
|----------|----------|-------------|
| `WISENT_WIRE_URL` | No | API base URL (default: `https://int.wisent-wire.com`) |
| `WISENT_WIRE_EMAIL` | Yes* | Account email |
| `WISENT_WIRE_PASSWORD` | Yes* | Account password |
| `WISENT_WIRE_TOKEN` | Yes* | API token (alternative to email/password) |
| `WISENT_WIRE_LOCAL` | No | Set to `1` for local development mode |

\* Provide either `TOKEN` or `EMAIL` + `PASSWORD`.

## Available tools

| Tool | Description |
|------|-------------|
| `list_wisentwires` | List all WisentWire devices in your organization |
| `get_ww_status` | Get detailed device status including power state and lab tools |
| `power_on` | Turn on power supply (configurable voltage and current limit) |
| `power_off` | Turn off power supply |
| `get_telemetry` | Get recent voltage and current readings |
| `flash_firmware` | Flash firmware to a device and wait for completion |
| `list_firmware` | List available firmware binaries |
| `send_uart_command` | Send a text command over UART and return the response |
| `send_uart_hex` | Send raw hex bytes over UART |
| `get_uart_log` | Get recent UART TX/RX message history |

## Development

```bash
pip install -e ".[dev]"
pytest tests/ -v
ruff check src/ tests/
```

## License

MIT
