Skip to content

Commit 3092f4b

Browse files
committed
Document Codex's Plugins panel, confirmed working with no session gotcha
Codex's own Plugins panel (Add plugin marketplace, Source PyDevices/mpftp) reads the same .claude-plugin/marketplace.json + plugin.json + .mcp.json + skill this repo already ships for Claude Code -- no separate Codex plugin package needed. Confirmed end to end: connected a real board, listed its filesystem. Unlike the Claude Desktop app, Codex showed no "Local session required" restriction -- it just worked in a normal chat. codex/README.md now documents both real paths: the Plugins panel (GUI) and the bare codex mcp add / config.toml route for headless CLI use.
1 parent 7828f81 commit 3092f4b

3 files changed

Lines changed: 64 additions & 28 deletions

File tree

integrations/README.md

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,36 @@ and firmware build/flash. None of them reimplement any of that; they only
88
wire an agent host up to the server and, for Claude Code, add condensed
99
board-workflow guidance as a skill.
1010

11-
| | Claude Code (CLI) | Claude Desktop app | Codex CLI |
12-
|---|---|---|---|
13-
| Directory | [`claude-code-plugin/`](claude-code-plugin/) | [`claude-desktop-extension/`](claude-desktop-extension/) | [`codex/`](codex/) |
14-
| Distribution | Installable plugin (`.claude-plugin/plugin.json`, `.mcp.json`, a skill) | MCPB extension (`manifest.json`), installed unpacked | No plugin system — a `~/.codex/config.toml` snippet |
15-
| Board-workflow guidance | Bundled skill (`skills/board-tools/SKILL.md`) | None yet — MCPB extensions don't carry skills | Point `AGENTS.md` at `docs/agent-guide.md` |
11+
| | Claude Code (CLI) | Claude Desktop app | Codex (app, Plugins panel) | Codex (bare CLI) |
12+
|---|---|---|---|---|
13+
| Directory | [`claude-code-plugin/`](claude-code-plugin/) | [`claude-desktop-extension/`](claude-desktop-extension/) | same as Claude Code — [`claude-code-plugin/`](claude-code-plugin/) | [`codex/`](codex/) |
14+
| Distribution | Installable plugin (`.claude-plugin/plugin.json`, `.mcp.json`, a skill) | MCPB extension (`manifest.json`), installed unpacked | **Same marketplace/plugin format as Claude Code** — Codex's Plugins panel reads it directly, no separate package | No plugin system — a `~/.codex/config.toml` snippet |
15+
| Board-workflow guidance | Bundled skill (`skills/board-tools/SKILL.md`) | None yet — MCPB extensions don't carry skills | Bundled skill (same one) | Point `AGENTS.md` at `docs/agent-guide.md` |
16+
| "Local session" gotcha | Yes — see below | Yes — see below | **No** — confirmed working in a normal Codex chat | N/A |
1617

17-
**These are three different products** and none of the three install paths
18-
covers the other two — a plain `claude` CLI session (with `/plugin` support)
19-
is not the same thing as the Claude Desktop app (Settings → Extensions), and
20-
neither is Codex. Confirm which one you're actually looking at before
21-
picking a directory.
18+
**These are (at least) four different install paths across two products**,
19+
and confirmed working end to end in all four as of 2026-08-24. A plain
20+
`claude` CLI session (with `/plugin` support) is not the same thing as the
21+
Claude Desktop app (Settings → Extensions), which is not the same thing as
22+
either Codex path. Confirm which one you're actually looking at before
23+
picking a directory — though note Claude Code's plugin and Codex's Plugins
24+
panel happen to consume the exact same files, so
25+
[`claude-code-plugin/`](claude-code-plugin/) genuinely serves both.
2226

2327
Requires `pydevices-mpftp` installed (`pip install pydevices-mpftp`) — all
24-
three run its `mpftp-mcp` console script.
28+
of them run its `mpftp-mcp` console script.
2529

26-
**Both Claude-branded integrations need a "Local" session.** In the Claude
27-
Desktop app, MCP tools from a plugin or extension only attach to chats
28-
started as a **Local** session — confirmed by testing that a **Cloud** or
29-
even a **WSL** session shows the install as complete and "Connected" but
30-
exposes no tools at all, silently. Check the session-type picker
31-
(Local/Cloud/Remote Control/WSL/SSH, wherever new chats/tasks get created)
32-
before assuming a broken install. See the "Local session required"
33-
sections in [`claude-code-plugin/README.md`](claude-code-plugin/README.md)
34-
and [`claude-desktop-extension/README.md`](claude-desktop-extension/README.md)
30+
**The two Claude Desktop app paths need a "Local" session; Codex doesn't
31+
have this restriction.** In the Claude Desktop app, MCP tools from a
32+
plugin or extension only attach to chats started as a **Local** session —
33+
confirmed by testing that a **Cloud** or even a **WSL** session shows the
34+
install as complete and "Connected" but exposes no tools at all, silently.
35+
Check the session-type picker (Local/Cloud/Remote Control/WSL/SSH,
36+
wherever new chats/tasks get created) before assuming a broken install.
37+
Codex was confirmed working in a normal chat with no equivalent
38+
restriction. See the "Local session required" sections in
39+
[`claude-code-plugin/README.md`](claude-code-plugin/README.md) and
40+
[`claude-desktop-extension/README.md`](claude-desktop-extension/README.md)
3541
for the exact symptoms and how to check for it.
3642

3743
## Versioning

integrations/claude-code-plugin/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ CircuitPython board directly — filesystem transfer, REPL/exec, a
66
non-interrupting `watch_repl`/`probe` pair for long-running scripts, and
77
firmware build/flash.
88

9+
**Also used by Codex.** Codex's own Plugins panel reads this same
10+
marketplace/plugin format directly — confirmed working via
11+
**Plugins → Add → Add plugin marketplace**, Source `PyDevices/mpftp`. See
12+
[`../codex/README.md`](../codex/README.md). The "Local session" caveat
13+
below is Claude-specific; Codex didn't show it.
14+
915
## Install
1016

1117
Requires `pydevices-mpftp` on `PATH` (`pip install pydevices-mpftp`) —

integrations/codex/README.md

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,47 @@
1-
# mpftp for Codex CLI
1+
# mpftp for Codex
22

3-
[Codex](https://developers.openai.com/codex) doesn't have an installable plugin
4-
system — MCP servers are registered directly in its config file. Add the mpftp
5-
server to `~/.codex/config.toml` (or a project-scoped `.codex/config.toml`):
3+
Codex has two integration points, and both were confirmed working
4+
end-to-end (connect, filesystem, and REPL against a real board) —
5+
**no equivalent of the Claude Desktop app's "Local session required"
6+
restriction**; it just worked in a normal Codex chat.
7+
8+
## Option A — Plugins panel (Codex app, GUI)
9+
10+
Codex's Plugins panel reads the **same** plugin files this repo already
11+
ships for Claude Code — no separate Codex-specific package:
12+
13+
1. Codex app → **Plugins** (left sidebar) → **Add****Add plugin marketplace**.
14+
2. **Source**: `PyDevices/mpftp`. Leave **Git ref** as `main` and
15+
**Sparse paths** empty — the repo root's `.claude-plugin/marketplace.json`
16+
already points at [`../claude-code-plugin/`](../claude-code-plugin/), the
17+
same directory Claude Code installs from.
18+
3. Install the `mpftp` plugin from the marketplace that appears. It shows
19+
up with **MCP servers: 1** (`mpftp`) and **Skills: 1** (`Board Tools`).
20+
21+
Requires `pydevices-mpftp` installed (`pip install pydevices-mpftp`) so
22+
`mpftp-mcp` resolves on `PATH` wherever Codex spawns the server.
23+
24+
## Option B — bare `codex` CLI, no GUI
25+
26+
For headless `codex` CLI use (no Plugins panel available), register the
27+
MCP server directly in its config file instead:
628

729
```toml
830
[mcp_servers.mpftp]
931
command = "mpftp-mcp"
1032
```
1133

12-
Or via the CLI:
34+
in `~/.codex/config.toml` (or a project-scoped `.codex/config.toml`), or:
1335

1436
```bash
1537
codex mcp add mpftp -- mpftp-mcp
1638
```
1739

18-
`mpftp-mcp` is the console script `pip install pydevices-mpftp` puts on
19-
`PATH` (`python -m mpftp.mcp` also works if you'd rather pin an explicit
20-
interpreter). It needs to be the same interpreter mpftp's own CLI uses — on
40+
This path has no bundled skill — see
41+
[`docs/agent-guide.md`](../../docs/agent-guide.md) via `AGENTS.md` instead
42+
(also covered below).
43+
44+
`mpftp-mcp` needs to be the same interpreter mpftp's own CLI uses — on
2145
WSL, the one that can see your board's `COM` port (usually Windows
2246
`python.exe`), the same choice `mpftp.pythonPath` makes for the VS Code
2347
extension.

0 commit comments

Comments
 (0)