stdio MCP front-end for the edt-bridge 1C:EDT plugin: proxies to a running EDT, or auto-starts a headless one
Project description
edt-bridge-mcp
English · Русский
stdio MCP front-end for the edt-bridge 1C:EDT plugin.
The Java plugin serves MCP as plain JSON-RPC over HTTP on 127.0.0.1:8770 – which means an
MCP client configured with that URL loses the server whenever EDT is not running. This wrapper
is what the client talks to instead:
- EDT open (GUI or headless) → every request is forwarded to the live bridge;
- EDT closed → it auto-starts a headless EDT (
1cedtcliwith a keepalive pipe, the same recipe asscripts/run-headless.ps1) and forwards once the model is ready; - plugin jar missing → it delivers the jar itself from the latest GitHub release
(checksum-verified) into EDT's
dropins/before starting – a barepipx install edt-bridge-mcpis enough to get a working bridge; - a client session never hangs on startup: while the backend is starting,
tools/listreturns an empty list and anotifications/tools/list_changedfollows when ready.
Install
pipx install edt-bridge-mcp # or: pipx install ./python from a checkout
Register in an MCP client
claude mcp add edt-bridge -- edt-bridge-mcp --workspace "D:\\path\\to\\edt-workspace"
From a shell
The default mode speaks JSON-RPC over stdin/stdout, for an MCP client to drive. To reach the same bridge by hand or from a script, use the sub-commands – same port scan, same token, same headless auto-start:
edt-bridge-mcp tools # what the running bridge serves
edt-bridge-mcp call edt_projects # call a tool, print what it returned
edt-bridge-mcp call edt_metadata_details --json '{"projectName": "SM", "fqn": "CommonModule.Foo"}'
edt-bridge-mcp call edt_create_extension --json-file args.json # arguments from a UTF-8 file
edt-bridge-mcp status # is a bridge up? (never starts one)
--raw prints the JSON result instead of the text a tool returned. Arguments come from --json,
--json-file or --stdin; a file is the dependable route for non-ASCII arguments on Windows.
Exit codes: 0 fine, 1 the call could not be made (no bridge, bad usage, transport error), 2
the bridge ran the tool and the tool reported an error – so a script can tell "it failed" from "it
never ran".
Self-update
edt-bridge-mcp self-update # refresh the plugin jar (GitHub Releases) + the wrapper (PyPI)
edt-bridge-mcp self-update --jar-only # only the jar
edt-bridge-mcp self-update --pip-only # only the wrapper
edt-bridge-mcp self-update --pip-only --from <repo>/python # from a checkout
A running EDT (GUI or headless) keeps the old jar loaded until it restarts; the wrapper restarts its own headless instance on the next auto-start.
--from installs the wrapper from a local checkout instead of PyPI – for trying a build that is not
released yet, without a full pipx install --force (which rebuilds the venv and replaces the exe the
running client holds).
The wrapper updates itself by unpacking, not through an installer: it downloads the wheel from PyPI
(or copies the package out of the checkout given to --from) and replaces the package inside
site-packages using the standard library alone. No pip, no pipx, no build backend – which matters,
because pipx 1.15 builds its venvs through uv and a uv-built venv contains no pip at all.
The exes in Scripts are never touched: they are what a running client holds open, Windows will not
let them be replaced, and they do not need to be – the stub launches whatever code is in
site-packages the next time it starts. pipx_metadata.json is corrected so pipx list does not go
on reporting the old version. An editable install is refused rather than overwritten.
Configuration
CLI flags override the environment.
| Env | Flag | Meaning |
|---|---|---|
EDT_BRIDGE_PORT |
--port |
bridge port (default 8770) |
EDT_BRIDGE_TOKEN |
– | write-tools token, forwarded as Authorization: Bearer and injected into the headless JVM |
EDT_BRIDGE_WORKSPACE |
--workspace |
EDT workspace path – required for the headless auto-start |
EDT_BRIDGE_EDT_DIR |
--edt-dir |
EDT install dir (.../1cedt); newest install auto-detected when omitted |
EDT_BRIDGE_START_TIMEOUT |
--start-timeout |
seconds to wait for a starting backend (default 360) |
EDT_BRIDGE_AUTOSTART |
--no-autostart |
set 0/pass the flag for proxy-only mode |
Safety
- If a GUI EDT is running but the bridge port is dead (plugin missing there), the wrapper
refuses to start a headless instance – the GUI holds the workspace lock. It still delivers
the jar into
dropins/when missing, so restarting that EDT activates the bridge. - If a headless
1cedtcliis already starting, the wrapper waits for it instead of spawning a second one.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file edt_bridge_mcp-0.6.0.tar.gz.
File metadata
- Download URL: edt_bridge_mcp-0.6.0.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1f963bc037acc9d07edb7538a93f0ae5a033b0c7118fddb870e25556807c85fb
|
|
| MD5 |
d23a77fe63f3c2aed93f9323de934228
|
|
| BLAKE2b-256 |
22edc00778cff6301664872f128de023214f57a261d9223d444916d98230e1ec
|
Provenance
The following attestation bundles were made for edt_bridge_mcp-0.6.0.tar.gz:
Publisher:
pypi-publish.yml on keyfire/edt-bridge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edt_bridge_mcp-0.6.0.tar.gz -
Subject digest:
1f963bc037acc9d07edb7538a93f0ae5a033b0c7118fddb870e25556807c85fb - Sigstore transparency entry: 2210920181
- Sigstore integration time:
-
Permalink:
keyfire/edt-bridge@d7e1acc0ddc87edf9d650003acc601b61aa3a446 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/keyfire
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@d7e1acc0ddc87edf9d650003acc601b61aa3a446 -
Trigger Event:
push
-
Statement type:
File details
Details for the file edt_bridge_mcp-0.6.0-py3-none-any.whl.
File metadata
- Download URL: edt_bridge_mcp-0.6.0-py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14debd0948d8fa42c5bfdbb3c06019aecaec2d2ec6c4c9dd71f290513ee74de9
|
|
| MD5 |
218e6bcb8af6a441424551af74e9784b
|
|
| BLAKE2b-256 |
c46f5e0746010691b33f0f32a64892e4be804bbcc67dd0c5fd4854183338490c
|
Provenance
The following attestation bundles were made for edt_bridge_mcp-0.6.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on keyfire/edt-bridge
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
edt_bridge_mcp-0.6.0-py3-none-any.whl -
Subject digest:
14debd0948d8fa42c5bfdbb3c06019aecaec2d2ec6c4c9dd71f290513ee74de9 - Sigstore transparency entry: 2210920206
- Sigstore integration time:
-
Permalink:
keyfire/edt-bridge@d7e1acc0ddc87edf9d650003acc601b61aa3a446 -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/keyfire
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@d7e1acc0ddc87edf9d650003acc601b61aa3a446 -
Trigger Event:
push
-
Statement type: