@manta-action-kit/mcp (Python)
Python port of the Manta Action Kit MCP server (packages/mcp) — exposes the Chrome extension's recorded API calls to an agent as MCP tools over stdio, bridged to the extension over a local WebSocket.
Scope vs the Node server
The Node server remains the reference implementation; the Python port covers the full agent tool surface except the script-driven HTTP proxy.
| Capability | Node (packages/mcp) |
Python (packages/mcp-py) |
|---|---|---|
| WS bridge + token handshake (hello/welcome/auth) | ✅ | ✅ |
| owner/peer single-instance election + takeover | ✅ | ✅ |
| recordings: list / get / flow / endpoints / call / set description | ✅ | ✅ |
| actions: list / get / search / create / update / delete / execute | ✅ | ✅ |
| proxy_fetch / proxy_sse (gateway entry, cookie injection) | ✅ | ✅ |
| proxy rules: list / add / update (rules live extension-side) | ✅ | ✅ |
| element captures: list / get / diff | ✅ | ✅ |
| capture_screenshot / capture_element | ✅ | ✅ |
| GIF tab recordings: start / stop / pause / resume / status / history | ✅ | ✅ |
| health | ✅ | ✅ |
| local HTTP proxy (script-driven entry) + rebind_proxy | ✅ | ❌ not here — run the Node server alongside; its proxy serves the shared rules |
The wire protocol (frame types, RPC methods, HMAC handshake domain prefixes) is
byte-identical with the Node/extension implementations — pinned by
tests/test_auth.py (golden vectors generated from packages/mcp/src/auth.ts)
and tests/test_cross_node_bridge.py (live handshakes against the real Node
bridge: as extension-role client AND as peer).
Staying in sync with the Node server
The tool surface is contract-tested against the Node server: the fixture
tests/fixtures/tool-contract.json is exported from the REAL Node
registration path and the Python suite fails on any drift in tool names,
descriptions (byte-for-byte), input schemas, and _meta:
pnpm --filter @manta-action-kit/mcp build && \
pnpm --filter @manta-action-kit/mcp contract:export # regenerate the fixture
uv run pytest tests/test_tool_contract.py tests/test_node_parity.py
tests/test_node_parity.py additionally pins the lockstep version number,
the protocol's default ports, and the RPC method set. Workflow for Node-side
tool changes is documented in CONTRIBUTING.md.
Install / run
uvx manta-action-kit-mcp # once published to PyPI
# or from a checkout:
uv sync && uv run manta-action-kit-mcp
MCP client config (Claude Code / Cursor etc.):
{
"mcpServers": {
"manta-action-kit": {
"command": "uvx",
"args": ["manta-action-kit-mcp"],
"env": {
"MANTA_TOKEN": "<token from the extension's install prompt>",
"MANTA_WS_PORT": "8787"
}
}
}
}
Env:
MANTA_TOKEN— handshake secret shared with the extension (from its install prompt). Without it the bridge rejects every client (fail closed).MANTA_WS_PORT— local bridge port (default 8787; must match the extension setting).MANTA_LOG_LEVEL—DEBUG/INFO/... (defaultINFO).
Coexistence with the Node server
Only one process can own the bridge port; both implementations elect an owner and degrade to peers that forward through it, and they can mix freely (a Python peer can forward through a Node owner and vice versa). If you need the script-driven HTTP proxy (proxy rules for scripts), run the Node server — whichever process owns the port receives the extension's data.
Development
uv sync # deps + venv
uv run pytest -q # unit + bridge integration tests
pnpm --filter @manta-action-kit/mcp build # enables the cross-language test
uv run pytest tests/test_cross_node_bridge.py -q
Metadata
Release files for manta-action-kit-mcp 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| manta_action_kit_mcp-0.5.2.tar.gz | 115.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| manta_action_kit_mcp-0.5.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 145.8 kB
Release files / manta_action_kit_mcp-0.5.2.tar.gz
| Download URL | manta_action_kit_mcp-0.5.2.tar.gz |
|---|---|
| Size | 115.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27fadb7a97c442a025e85372c1f74cfac79ea787763e5f69d584b00e90b295bd
|
|
BLAKE2b-256 checksum How to use checksums |
df49cae4f9dc013301a195b692fc03f3423755c7984b10d21558254424052706
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / manta_action_kit_mcp-0.5.2-py3-none-any.whl
| Download URL | manta_action_kit_mcp-0.5.2-py3-none-any.whl |
|---|---|
| Size | 30.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f9e7a9d097e074ec84f1b5f816a2133afc84d30640c5e38875096ce620c38b7
|
|
BLAKE2b-256 checksum How to use checksums |
c32e8ba06cc9bac5f939a1b82a79b993f9bac6852cc52579f3b5a852243dd93f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|