open-edison 0.1.42__py3-none-any.whl → 0.1.43__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {open_edison-0.1.42.dist-info → open_edison-0.1.43.dist-info}/METADATA +10 -10
- {open_edison-0.1.42.dist-info → open_edison-0.1.43.dist-info}/RECORD +13 -11
- src/cli.py +8 -41
- src/frontend_dist/assets/index-BUUcUfTt.js +51 -0
- src/frontend_dist/assets/index-o6_8mdM8.css +1 -0
- src/frontend_dist/index.html +16 -6
- src/frontend_dist/sw.js +71 -0
- src/mcp_importer/api.py +115 -17
- src/mcp_importer/quick_cli.py +12 -15
- src/oauth_manager.py +1 -1
- frontend_dist/index.html +0 -11
- {open_edison-0.1.42.dist-info → open_edison-0.1.43.dist-info}/WHEEL +0 -0
- {open_edison-0.1.42.dist-info → open_edison-0.1.43.dist-info}/entry_points.txt +0 -0
- {open_edison-0.1.42.dist-info → open_edison-0.1.43.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: open-edison
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.43
|
4
4
|
Summary: Open-source MCP security, aggregation, and monitoring. Single-user, self-hosted MCP proxy.
|
5
5
|
Author-email: Hugo Berg <hugo@edison.watch>
|
6
6
|
License-File: LICENSE
|
@@ -76,7 +76,7 @@ Optionally, import your existing MCP configs from Cursor, VS Code, or Claude Cod
|
|
76
76
|
|
77
77
|
```bash
|
78
78
|
# From source (no install) — quick one-liner (add --dry-run to preview)
|
79
|
-
uv run python -m mcp_importer.quick_cli --yes
|
79
|
+
uv run python -m src.mcp_importer.quick_cli --yes
|
80
80
|
```
|
81
81
|
|
82
82
|
<details>
|
@@ -139,29 +139,29 @@ OPEN_EDISON_CONFIG_DIR=~/edison-config open-edison run
|
|
139
139
|
|
140
140
|
```bash
|
141
141
|
# From source (no install)
|
142
|
-
uv run python -m mcp_importer.quick_cli --yes
|
142
|
+
uv run python -m src.mcp_importer.quick_cli --yes
|
143
143
|
```
|
144
144
|
|
145
145
|
- Preview what will be imported (no writes):
|
146
146
|
|
147
147
|
```bash
|
148
|
-
uv run python -m mcp_importer --source cursor --dry-run
|
148
|
+
uv run python -m src.mcp_importer --source cursor --dry-run
|
149
149
|
```
|
150
150
|
|
151
151
|
- Import servers into Open Edison `config.json` (merge policy defaults to `skip`):
|
152
152
|
|
153
153
|
```bash
|
154
|
-
uv run python -m mcp_importer --source cursor
|
155
|
-
uv run python -m mcp_importer --source vscode
|
156
|
-
uv run python -m mcp_importer --source claude-code
|
154
|
+
uv run python -m src.mcp_importer --source cursor
|
155
|
+
uv run python -m src.mcp_importer --source vscode
|
156
|
+
uv run python -m src.mcp_importer --source claude-code
|
157
157
|
```
|
158
158
|
|
159
159
|
- Point your editor to Open Edison (backup original config and replace with a single Open Edison server):
|
160
160
|
|
161
161
|
```bash
|
162
|
-
uv run python -m mcp_importer export --target cursor --yes
|
163
|
-
uv run python -m mcp_importer export --target vscode --yes
|
164
|
-
uv run python -m mcp_importer export --target claude-code --yes
|
162
|
+
uv run python -m src.mcp_importer export --target cursor --yes
|
163
|
+
uv run python -m src.mcp_importer export --target vscode --yes
|
164
|
+
uv run python -m src.mcp_importer export --target claude-code --yes
|
165
165
|
```
|
166
166
|
|
167
167
|
</details>
|
@@ -1,18 +1,21 @@
|
|
1
1
|
src/__init__.py,sha256=bEYMwBiuW9jzF07iWhas4Vb30EcpnqfpNfz_Q6yO1jU,209
|
2
2
|
src/__main__.py,sha256=kQsaVyzRa_ESC57JpKDSQJAHExuXme0rM5beJsYxFeA,161
|
3
|
-
src/cli.py,sha256=
|
3
|
+
src/cli.py,sha256=fqX-HuRDePRasexpnURQ_pVYeycJuWxllMcwfqDxMQw,8490
|
4
4
|
src/config.py,sha256=RSsAYzl8cj6eaDN1RORMcfKKWBcp4bKTQp2BdhAL9mg,10258
|
5
5
|
src/config.pyi,sha256=FgehEGli8ZXSjGlANBgMGv5497q4XskQciOc1fUcxqM,2033
|
6
6
|
src/events.py,sha256=aFQrVXDIZwt55Dz6OtyoXu2yi9evqo-8jZzo3CR2Tto,4965
|
7
|
-
src/oauth_manager.py,sha256=
|
7
|
+
src/oauth_manager.py,sha256=W9QSo0vfGDQ_i-QWCngkv7YLSL3Rk5jfPmqjU1J2rnU,9911
|
8
8
|
src/permissions.py,sha256=NGAnlG_z59HEiVA-k3cYvwmmiuHzxuNb5Tbd5umbL00,10483
|
9
9
|
src/server.py,sha256=cnO5bgxT-lrfuwk9AIvB_HBV8SWOtFClfGUn5_zFWyo,45652
|
10
10
|
src/single_user_mcp.py,sha256=rJrlqHcIubGkos_24ux5rb3OoKYDzvagCHghhfDeXTI,18535
|
11
11
|
src/telemetry.py,sha256=-RZPIjpI53zbsKmp-63REeZ1JirWHV5WvpSRa2nqZEk,11321
|
12
|
-
src/frontend_dist/index.html,sha256=
|
12
|
+
src/frontend_dist/index.html,sha256=s95FMkH8VLisvawLH7bZxbLzRUFvMhHkH6ZMzpVBngs,673
|
13
|
+
src/frontend_dist/sw.js,sha256=rihX1es-vWwjmtnXyaksJjs2dio6MVAOTAWwQPeJUYw,2164
|
14
|
+
src/frontend_dist/assets/index-BUUcUfTt.js,sha256=awoyPI6u0v6ao2iarZdSkrSDUvyU8aNkMLqHMvgVgyY,257666
|
15
|
+
src/frontend_dist/assets/index-o6_8mdM8.css,sha256=nwmX_6q55mB9463XN2JM8BdeihjkALpQK83Fc3_iGvE,15936
|
13
16
|
src/mcp_importer/__init__.py,sha256=Mk59pVr7OMGfYGWeSYk8-URfhIcrs3SPLYS7fmJbMII,275
|
14
17
|
src/mcp_importer/__main__.py,sha256=0jVfxKzyr6koVu1ghhWseah5ilKIoGovE6zkEZ-u-Og,515
|
15
|
-
src/mcp_importer/api.py,sha256=
|
18
|
+
src/mcp_importer/api.py,sha256=47tur0xgl1NBI1Vnh3cpScEmDS64bKMYcWjZDuqx7HQ,6644
|
16
19
|
src/mcp_importer/cli.py,sha256=Pe0GLWm1nMd1VuNXOSkxIrFZuGNFc9dNvfBsvf-bdBI,3487
|
17
20
|
src/mcp_importer/export_cli.py,sha256=daEadB6nL8P4OpEGFx0GshuN1a091L7BhiitpV1bPqA,6294
|
18
21
|
src/mcp_importer/exporters.py,sha256=fSgl6seduoXFp7YnKH26UEaC1sFBnd4whSut7CJLBQs,11348
|
@@ -21,13 +24,12 @@ src/mcp_importer/importers.py,sha256=zGN8lT7qQJ95jDTd-ck09j_w5PSvH-uj33TILoHfHbs
|
|
21
24
|
src/mcp_importer/merge.py,sha256=KIGT7UgbAm07-LdyoUXEJ7ABSIiPTFlj_qjz669yFxg,1569
|
22
25
|
src/mcp_importer/parsers.py,sha256=JRE7y_Gg-QmlAARvZdrI9CmUyy-ODvDPbS695pb3Aw8,4856
|
23
26
|
src/mcp_importer/paths.py,sha256=4L-cPr7KCM9X9gAUP7Da6ictLNrPWuQ_IM419zqY-2I,2700
|
24
|
-
src/mcp_importer/quick_cli.py,sha256=
|
27
|
+
src/mcp_importer/quick_cli.py,sha256=4mJe10q_lZCYLm75QBt1rYy2j8mGEsRZoAqA0agjfSM,1834
|
25
28
|
src/mcp_importer/types.py,sha256=h03TbAnJbap6OWWd0dT0QcFWNvSaiVFWH9V9PD6x4s0,138
|
26
29
|
src/middleware/data_access_tracker.py,sha256=bArBffWgYmvxOx9z_pgXQhogvnWQcc1m6WvEblDD4gw,15039
|
27
30
|
src/middleware/session_tracking.py,sha256=5W1VH9HNqIZeX0HNxDEm41U4GY6SqKSXtApDEeZK2qo,23084
|
28
|
-
|
29
|
-
open_edison-0.1.
|
30
|
-
open_edison-0.1.
|
31
|
-
open_edison-0.1.
|
32
|
-
open_edison-0.1.
|
33
|
-
open_edison-0.1.42.dist-info/RECORD,,
|
31
|
+
open_edison-0.1.43.dist-info/METADATA,sha256=OO5PDNk7pByRgIShryHaCtp2_7ua9XOwC8eBVdU-b5o,13188
|
32
|
+
open_edison-0.1.43.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
33
|
+
open_edison-0.1.43.dist-info/entry_points.txt,sha256=YiGNm9x2I00hgT10HDyB4gxC1LcaV_mu8bXFjolu0Yw,171
|
34
|
+
open_edison-0.1.43.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
35
|
+
open_edison-0.1.43.dist-info/RECORD,,
|
src/cli.py
CHANGED
@@ -8,15 +8,15 @@ import argparse
|
|
8
8
|
import asyncio
|
9
9
|
import os
|
10
10
|
import subprocess as _subprocess
|
11
|
-
import sys
|
12
11
|
from contextlib import suppress
|
13
12
|
from pathlib import Path
|
14
|
-
from typing import Any, NoReturn
|
13
|
+
from typing import Any, NoReturn
|
15
14
|
|
16
15
|
from loguru import logger as _log # type: ignore[reportMissingImports]
|
17
16
|
|
18
|
-
from .config import Config, get_config_dir, get_config_json_path
|
19
|
-
from .
|
17
|
+
from src.config import Config, get_config_dir, get_config_json_path
|
18
|
+
from src.mcp_importer.cli import run_cli
|
19
|
+
from src.server import OpenEdisonProxy
|
20
20
|
|
21
21
|
log: Any = _log
|
22
22
|
|
@@ -45,7 +45,7 @@ def _parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
|
45
45
|
# import-mcp: import MCP servers from other tools into config.json
|
46
46
|
sp_import = subparsers.add_parser(
|
47
47
|
"import-mcp",
|
48
|
-
help="Import MCP servers from other tools (Cursor,
|
48
|
+
help="Import MCP servers from other tools (Cursor, VS Code, Claude Code)",
|
49
49
|
description=(
|
50
50
|
"Import MCP server configurations from other tools into Open Edison config.json.\n"
|
51
51
|
"Use --source to choose the tool and optional flags to control merging."
|
@@ -55,16 +55,10 @@ def _parse_args(argv: list[str] | None = None) -> argparse.Namespace:
|
|
55
55
|
"--source",
|
56
56
|
choices=[
|
57
57
|
"cursor",
|
58
|
-
"windsurf",
|
59
|
-
"cline",
|
60
|
-
"claude-desktop",
|
61
58
|
"vscode",
|
62
59
|
"claude-code",
|
63
|
-
"gemini-cli",
|
64
|
-
"codex",
|
65
|
-
"interactive",
|
66
60
|
],
|
67
|
-
default="
|
61
|
+
default="cursor",
|
68
62
|
help="Source application to import from",
|
69
63
|
)
|
70
64
|
sp_import.add_argument(
|
@@ -226,35 +220,8 @@ def main(argv: list[str] | None = None) -> NoReturn: # noqa: C901
|
|
226
220
|
raise SystemExit(exit_code)
|
227
221
|
|
228
222
|
if getattr(args, "command", None) == "import-mcp":
|
229
|
-
|
230
|
-
|
231
|
-
try:
|
232
|
-
if str(importer_pkg) not in sys.path:
|
233
|
-
sys.path.insert(0, str(importer_pkg))
|
234
|
-
from mcp_importer.cli import run_cli # type: ignore
|
235
|
-
except Exception as imp_exc: # noqa: BLE001
|
236
|
-
log.error(
|
237
|
-
"Failed to load MCP importer package from {}: {}",
|
238
|
-
importer_pkg,
|
239
|
-
imp_exc,
|
240
|
-
)
|
241
|
-
raise SystemExit(1) from imp_exc
|
242
|
-
|
243
|
-
importer_argv: list[str] = []
|
244
|
-
if args.source:
|
245
|
-
importer_argv += ["--source", str(args.source)]
|
246
|
-
if getattr(args, "config_dir", None):
|
247
|
-
importer_argv += [
|
248
|
-
"--config-dir",
|
249
|
-
str(Path(args.config_dir).expanduser().resolve()),
|
250
|
-
]
|
251
|
-
if args.merge:
|
252
|
-
importer_argv += ["--merge", str(args.merge)]
|
253
|
-
if bool(getattr(args, "dry_run", False)):
|
254
|
-
importer_argv += ["--dry-run"]
|
255
|
-
|
256
|
-
rc_val: int = int(cast(Any, run_cli)(importer_argv))
|
257
|
-
raise SystemExit(rc_val)
|
223
|
+
result_code = run_cli(argv)
|
224
|
+
raise SystemExit(result_code)
|
258
225
|
|
259
226
|
# default: run server (top-level flags)
|
260
227
|
try:
|