Skip to main content
ClaudeWave
MCP ServersOfficial Registry0 stars0 forksPythonApache-2.0Updated today
ClaudeWave Trust Score
77/100
Trusted
Passed
  • Open-source license (Apache-2.0)
  • Actively maintained (<30d)
  • Documented (README)
Flags
  • !No description
Last scanned: 9/23/2026
Install in Claude Code / Claude Desktop
Method: pip / Python · -e
Claude Code CLI
claude mcp add embeddedci-python -- python -m -e
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "embeddedci-python": {
      "command": "python",
      "args": ["-m", "venv"]
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Install first: pip install -e
Use cases

MCP Servers overview

# embeddedci-python

Python packages for driving an **EmbeddedCI BenchPod** — a hardware-in-the-loop (HIL) tester
that powers a target board, flashes it over SWD, talks to its UART, I2C and CAN, and drives and
measures its analog and logic signals — from pytest, from an AI agent, or from OpenHTF.

## Packages

| Package | Path | What it is |
| --- | --- | --- |
| [`embeddedci`](packages/embeddedci) | `packages/embeddedci/` | The BenchPod SDK and pytest plugin: `from embeddedci.benchpod import BenchPod`. Connects over the network, USB or the cloud (`embeddedci:<device-name>`, with an API key or GitHub Actions OIDC). |
| [`embeddedci-mcp`](packages/embeddedci-mcp) | `packages/embeddedci-mcp/` | An [MCP](https://modelcontextprotocol.io) server exposing the SDK as typed tools, so AI agents can drive the bench. |
| [`embeddedci-openhtf`](packages/embeddedci-openhtf) | `packages/embeddedci-openhtf/` | An [OpenHTF](https://www.openhtf.com/) plug and phase helpers for driving a pod directly over TCP or serial. |

The dependency direction is strictly **`embeddedci-mcp` → `embeddedci`** and
**`embeddedci-openhtf` → `embeddedci`**. All three live here so an SDK change and the matching
wrapper land in one commit; each is published to PyPI on its own tag.

## Versioning and stability

All three packages are on the **2.x** line, the first with a stability promise:

- `embeddedci`: everything in `embeddedci.benchpod.__all__` follows semantic versioning. Units are
  volts, seconds and hertz; invalid arguments raise `ValueError`; device state comes back typed.
  `tests/api_surface.json` snapshots the public surface.
- `embeddedci-mcp`: tool names, input schemas and annotations are frozen for 2.x
  (`tests/tools_surface.json`).
- Consumers depend on `embeddedci>=2.0,<3`.

The surface snapshot tests fail on any change. When a change is intended and compatible (an
addition), refresh them deliberately:

```bash
UPDATE_API_SURFACE=1 pytest packages/embeddedci/tests/test_api_surface.py
UPDATE_TOOLS_SURFACE=1 pytest packages/embeddedci-mcp/tests/test_server_runtime.py -k surface
```

Migration notes: [embeddedci](packages/embeddedci/CHANGELOG.md),
[embeddedci-mcp](packages/embeddedci-mcp/CHANGELOG.md),
[embeddedci-openhtf](packages/embeddedci-openhtf/CHANGELOG.md).

## Layout

```
embeddedci-python/
├── pyproject.toml            # uv workspace root (not published)
├── packages/
│   ├── embeddedci/           # SDK + pytest plugin
│   ├── embeddedci-mcp/       # MCP server (console script: embeddedci-mcp)
│   └── embeddedci-openhtf/   # OpenHTF plug (direct TCP/serial)
└── .github/workflows/        # CI for all packages; per-package publish tags
```

## Development

Python 3.10+.

```bash
python -m venv .venv && . .venv/bin/activate
pip install -e "packages/embeddedci[dev]" -e "packages/embeddedci-mcp[dev]" -e "packages/embeddedci-openhtf[dev]"
pytest packages/embeddedci packages/embeddedci-mcp packages/embeddedci-openhtf
```

Hardware tests skip without a pod. To run them against one:

```bash
pytest packages/embeddedci --benchpod-connection 192.168.1.213
```

The board's I/O voltage (3.3 V) is set once in `packages/embeddedci/tests/conftest.py`; change it
there for a 1V8 board.

## Running the MCP server

```bash
# launched by an MCP client (Claude Code / Claude Desktop / Cursor) over stdio:
embeddedci-mcp --connection 192.168.1.213

# or served over HTTP for a remote bench (a token is required off loopback):
embeddedci-mcp --transport http --host 0.0.0.0 --auth-token "$TOKEN" --connection usb
```

See [`packages/embeddedci-mcp/README.md`](packages/embeddedci-mcp/README.md) for client
configuration and the tool list.

## Releasing

Each package publishes from its own tag (`embeddedci-v*`, `embeddedci-mcp-v*`,
`embeddedci-openhtf-v*`) via `.github/workflows/publish.yml`; the tag must match the version in
that package's `pyproject.toml`. Release `embeddedci` first — the other two depend on it from PyPI.

### The Python 3.9 placeholder

`packages/embeddedci-py39-shim` is published into the **same** PyPI project as `embeddedci` 0.2.4,
from the `embeddedci-py39-shim-v*` tag. It exists because 2.x requires Python 3.10+: on 3.9 pip
skips 2.x and would otherwise resolve to the last 3.9-compatible release (0.2.3), silently handing
the user a pre-2.0 API. Yanking the 0.x releases does **not** fix that — pip's install path passes
`allow_yanked=True` and only *deprioritises* yanked candidates, so when they are the only candidates
it installs one anyway. The placeholder pins `requires-python = ">=3.9,<3.10"`, so on 3.9 it is the
newest installable version and its import fails with an actionable message, while 3.10+ resolution
is untouched.

It is excluded from the uv workspace (`[tool.uv.workspace] exclude`) because it declares the same
package name as `packages/embeddedci`, and its tag pattern deliberately does not start with
`embeddedci-v` so the main publish job cannot fire on it.

What people ask about embeddedci-python

What is embeddedci-com/embeddedci-python?

+

embeddedci-com/embeddedci-python is mcp servers for the Claude AI ecosystem with 0 GitHub stars.

How do I install embeddedci-python?

+

You can install embeddedci-python by cloning the repository (https://github.com/embeddedci-com/embeddedci-python) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is embeddedci-com/embeddedci-python safe to use?

+

Our security agent has analyzed embeddedci-com/embeddedci-python and assigned a Trust Score of 77/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.

Who maintains embeddedci-com/embeddedci-python?

+

embeddedci-com/embeddedci-python is maintained by embeddedci-com. The last recorded GitHub activity is dated 2026-09-22, with 0 open issues.

Are there alternatives to embeddedci-python?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy embeddedci-python to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: embeddedci-com/embeddedci-python
[![Featured on ClaudeWave](https://claudewave.com/api/badge/embeddedci-com-embeddedci-python)](https://claudewave.com/repo/embeddedci-com-embeddedci-python)
<a href="https://claudewave.com/repo/embeddedci-com-embeddedci-python"><img src="https://claudewave.com/api/badge/embeddedci-com-embeddedci-python" alt="Featured on ClaudeWave: embeddedci-com/embeddedci-python" width="320" height="64" /></a>

More MCP Servers

embeddedci-python alternatives