Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

wisent-wire-mcp

MCP (Model Context Protocol) server for the Wisent Wire hardware testing platform. Lets AI assistants interact with WisentWire devices — power control, firmware flashing & flasher catalog, UART / RS485 / CAN buses, GPIO control & telemetry, GDB debug sessions, device registry, reservations, and protocol frame definitions.

Installation

Requires Python 3.10+. Install with pipx — it puts the MCP server in an isolated environment and adds the wisent-wire-mcp binary to your PATH.

1. Install pipx (one-time)

# 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

pipx install wisent-wire-mcp

Verify:

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

3. Upgrade / uninstall

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

{
  "mcpServers": {
    "wisent-wire": {
      "command": "wisent-wire-mcp",
      "env": {
        "WISENT_WIRE_API_KEY": "wwk_..."
      }
    }
  }
}

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_API_KEY Yes* API key (wwk_…). Recommended — create one under Settings → API keys.
WISENT_WIRE_EMAIL Yes* Account email.
WISENT_WIRE_PASSWORD Yes* Account password.
WISENT_WIRE_URL No API base URL. Omit it to target production.

* Provide either API_KEY or EMAIL + PASSWORD. The API key is tried first.

WISENTWIRE_API_KEY (no underscore) still works as a deprecated alias and warns on use — it is the one legacy spelling with released history. The same names configure the wisent-wire-sdk package, so one exported environment does both. An exported-but-empty value counts as unset.

The server reads none of these itself — it hands the whole job to the SDK, which is what keeps the two from disagreeing about a name. See the SDK README for the canonical list.

Choosing a backend. WISENT_WIRE_URL is the address, and omitting it targets production (https://app.wisent-wire.com). To point at integration, or at a backend running on your own machine:

"env": {
  "WISENT_WIRE_URL": "https://int.wisent-wire.com",
  "WISENT_WIRE_API_KEY": "wwk_..."
}

There is no named-environment form. WISENT_WIRE_ENV used to exist and was what this page recommended; setting it now stops the server with an error naming the replacement, rather than being ignored and quietly starting against production. If you configured this server during a release candidate, that is the line to change.

For a local backend, use its address — "WISENT_WIRE_URL": "http://localhost:7998". Mint a key for it once with the header the local gateway trusts:

curl -sS -X POST http://localhost:7998/api/me/api-keys \
  -H 'X-Forwarded-User-Email: e2e@wisentwire.test' \
  -H 'Content-Type: application/json' -d '{"name":"local"}'

Available tools

57 tools, grouped below.

System & Device

Tool Description
get_backend_version Get the backend version
list_wisentwires List all WisentWire devices
get_ww_status Get current device status
check_ww_available Check if a device is available
rename_wisentwire Change a device display name — that field only, nothing else

Device Registry

Tool Description
list_registered_devices List registered devices, optionally filtered by label
list_connected_devices Scan a WisentWire and list physically connected devices
register_device Register a device against a fingerprint

Power & Telemetry

Tool Description
power_on / power_off Control power supply
update_power_supply Change voltage / current limit while powered
get_telemetry Recent voltage/current readings
set_power_supply_telemetry Enable or disable power telemetry streaming

GPIO

Tool Description
get_gpio_shadow Current GPIO pin states
get_gpio_names Pin name mapping for a device
set_gpio_output Drive an output pin high or low
set_gpio_input_pull_policy Set an input pin's pull policy
set_gpio_telemetry Enable or disable GPIO telemetry streaming
get_gpio_telemetry Recent GPIO telemetry readings

Firmware & Flashing

Tool Description
list_firmware List firmware binaries with their tag ids
list_firmware_tags List the org firmware tags with the ids set_firmware_tags takes
create_firmware_tag Create an org-wide firmware tag
set_firmware_tags Replace all tags on a binary — not additive
get_firmware_download_url Short-lived pre-signed download link for a binary
upload_firmware Upload a firmware binary
delete_firmware Delete a firmware binary
flash_firmware Flash firmware to a device (msp430/openocd/st-link/j-link). device_id picks which probe, when more than one is attached
flash_firmware_file One-shot: upload a local firmware file, flash it, then delete it (by default). Also takes device_id
list_launch_commands Valid target/programmer/interface/toolchain combinations. Needs at least one filter — unfiltered the catalog is too large for the backend to return
list_programmers Probe types (ST-Link v3, J-Link, ...) with the ids register_device needs
list_targets Find flashable chips by name fragment and get the target_id list_launch_commands needs
get_flash_status Check a flash job's status by job id
get_flasher_logs Get flasher debug logs

Debug

Tool Description
get_debug_state Get the current GDB debug session state
get_debug_job_status Get a debug job's status by id
get_debug_logs Buffered device-side debug log; the last_n most recent entries (default 50)
stop_debug Stop the active debug session

UART & Buses

Tool Description
send_uart_command Send a text command over UART
send_uart_hex Send raw hex bytes over UART
send_rs485_hex Send raw hex bytes over RS485
send_can_frame Send a CAN frame
get_uart_log Get TX/RX message history
get_bus_log Get TX/RX message history for a given bus (uart/rs485/can)

Frame Definitions

Tool Description
list_frame_definitions List all frame definitions
get_frame_definition Get a frame definition with fields
create_frame_definition Create a new frame definition
update_frame_definition Update a frame definition
delete_frame_definition Delete a frame definition

Commands

Tool Description
list_commands List commands for a frame definition
get_command Get one command with the field values bound to it
create_command Create a command
update_command Update a command
delete_command Delete a command

Reservations

Tool Description
list_reservations List reservations
get_reservation Get a single reservation
create_reservation Create a reservation
delete_reservation Delete a reservation

Development

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

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wisent_wire_mcp-0.12.2rc1.tar.gz (39.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wisent_wire_mcp-0.12.2rc1-py3-none-any.whl (30.2 kB view details)

Uploaded Python 3

File details

Details for the file wisent_wire_mcp-0.12.2rc1.tar.gz.

File metadata

  • Download URL: wisent_wire_mcp-0.12.2rc1.tar.gz
  • Upload date:
  • Size: 39.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.14

File hashes

Hashes for wisent_wire_mcp-0.12.2rc1.tar.gz
Algorithm Hash digest
SHA256 e33e45f47031119fe2bd57acc416c764337d3fe8c0804e8c7c0fad0bcca7db7c
MD5 23a81d95c368713e2fc0dccdb3e4b226
BLAKE2b-256 f9e2266179e5700c294ca31452cb00c6cca48cd384068d33086b3a4a30d9ac2b

See more details on using hashes here.

File details

Details for the file wisent_wire_mcp-0.12.2rc1-py3-none-any.whl.

File metadata

File hashes

Hashes for wisent_wire_mcp-0.12.2rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 d51dc3ec72f568f533edc5e823b4865ca15d9dd25d06c9c4dd793b35ec983c1b
MD5 bc7eaddba8bdb89514ba6fded59f38a5
BLAKE2b-256 2795b72749db7e91de9cfbde55be3ba58f009082f4648292d5fbf297dfa2249b

See more details on using hashes here.

Release history Release notifications | RSS feed

0.12.2

2 files

This release

0.12.2rc1 This release

2 files

0.8.0

2 files

0.7.3

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.0

2 files

0.5.1

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page