open-edison 0.1.19__tar.gz → 0.1.29__tar.gz
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.19 → open_edison-0.1.29}/.gitignore +4 -1
- {open_edison-0.1.19 → open_edison-0.1.29}/PKG-INFO +66 -45
- {open_edison-0.1.19 → open_edison-0.1.29}/README.md +65 -44
- {open_edison-0.1.19 → open_edison-0.1.29}/config.json +1 -1
- {open_edison-0.1.19 → open_edison-0.1.29}/desktop_ext/README.md +3 -3
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/deployment/local.md +1 -1
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/development/contributing.md +2 -2
- {open_edison-0.1.19 → open_edison-0.1.29}/pyproject.toml +1 -1
- {open_edison-0.1.19 → open_edison-0.1.29}/src/cli.py +2 -1
- {open_edison-0.1.19 → open_edison-0.1.29}/src/config.py +71 -71
- open_edison-0.1.29/src/events.py +153 -0
- open_edison-0.1.29/src/middleware/data_access_tracker.py +370 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/src/middleware/session_tracking.py +133 -37
- open_edison-0.1.29/src/oauth_manager.py +281 -0
- open_edison-0.1.29/src/permissions.py +281 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/src/server.py +491 -134
- open_edison-0.1.29/src/single_user_mcp.py +458 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/src/telemetry.py +4 -40
- {open_edison-0.1.19 → open_edison-0.1.29}/tool_permissions.json +32 -126
- open_edison-0.1.19/src/middleware/data_access_tracker.py +0 -640
- open_edison-0.1.19/src/single_user_mcp.py +0 -386
- {open_edison-0.1.19 → open_edison-0.1.29}/LICENSE +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/README.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/architecture/single_user_design.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/core/configuration.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/core/project_structure.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/core/proxy_usage.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/deployment/docker.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/development/development_guide.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/development/testing.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/quick-reference/api_reference.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/docs/quick-reference/config_quick_start.md +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/prompt_permissions.json +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/resource_permissions.json +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/src/__init__.py +0 -0
- {open_edison-0.1.19 → open_edison-0.1.29}/src/__main__.py +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.29
|
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
|
@@ -25,24 +25,45 @@ Requires-Dist: pytest>=8.3.3; extra == 'dev'
|
|
25
25
|
Requires-Dist: ruff>=0.12.3; extra == 'dev'
|
26
26
|
Description-Content-Type: text/markdown
|
27
27
|
|
28
|
-
# OpenEdison
|
28
|
+
# OpenEdison 🔒⚡️
|
29
29
|
|
30
|
-
|
30
|
+
> The secure MCP proxy gateway
|
31
|
+
|
32
|
+
Connect AI to your data/software securely without risk of data exfiltration. Gain visibility, block threats, and get alerts on the data your agent is reading/writing. No more "approve fatigue" with the MCP tool-call approvals.
|
33
|
+
|
34
|
+
OpenEdison solves the [lethal trifecta problem](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/), which can cause agent hijacking & data exfiltration by malicious actors.
|
35
|
+
|
36
|
+
<p align="center">
|
37
|
+
<img src="media/trifecta520p.gif" alt="Trifecta Security Risk Animation" width="520">
|
38
|
+
</p>
|
31
39
|
|
32
40
|
<div align="center">
|
33
|
-
<h2>📧
|
41
|
+
<h2>📧 To get visibility, control and exfiltration blocker into AI's interaction with your company software, systems of record, DBs, <a href="mailto:hello@edison.watch">Contact us</a> to discuss.</h2>
|
34
42
|
</div>
|
35
43
|
|
36
|
-
|
44
|
+
<p align="center">
|
45
|
+
<img alt="Project Version" src="https://img.shields.io/pypi/v/open-edison?label=version&color=blue">
|
46
|
+
<img alt="Python Version" src="https://img.shields.io/badge/python-3.12-blue?logo=python">
|
47
|
+
<img src="https://img.shields.io/badge/License-GPLv3-blue" alt="License">
|
48
|
+
|
49
|
+
</p>
|
50
|
+
|
51
|
+
---
|
52
|
+
|
53
|
+
## Features ✨
|
54
|
+
|
55
|
+
- 🛑 **Data leak blocker** - Edison automatically blocks any data leaks, even if your AI gets jailbroken
|
56
|
+
- 🕰️ **Deterministic execution** - Deterministic execution. Guaranteed data exfiltration blocker.
|
57
|
+
- 🗂️ **Easily configurable** - Easy to configure and manage your MCP servers
|
58
|
+
- 📊 **Visibility into agent interactions** - Track and monitor your agents and their interactions with connected software/data via MCP calls
|
59
|
+
- 🔗 **Simple API** - REST API for managing MCP servers and proxying requests
|
60
|
+
- 🐳 **Docker support** - Run in a container for easy deployment
|
37
61
|
|
38
|
-
|
39
|
-
- **JSON configuration** - Easy to configure and manage your MCP servers
|
40
|
-
- **Simple local frontend** - Track and monitor your MCP interactions, servers, and sessions.
|
41
|
-
- **Session tracking** - Track and monitor your MCP interactions
|
42
|
-
- **Simple API** - REST API for managing MCP servers and proxying requests
|
43
|
-
- **Docker support** - Run in a container for easy deployment
|
62
|
+
## About Edison.watch 🏢
|
44
63
|
|
45
|
-
|
64
|
+
Edison helps you gain observability, control, and policy enforcement for all AI interactions with systems of records, existing company software and data. Prevent AI from causing data leakage, lightning-fast setup for cross-system governance.
|
65
|
+
|
66
|
+
## Quick Start 🚀
|
46
67
|
|
47
68
|
The fastest way to get started:
|
48
69
|
|
@@ -52,10 +73,10 @@ The fastest way to get started:
|
|
52
73
|
curl -fsSL https://raw.githubusercontent.com/Edison-Watch/open-edison/main/curl_pipe_bash.sh | bash
|
53
74
|
```
|
54
75
|
|
55
|
-
Run locally with uvx: `uvx open-edison
|
76
|
+
Run locally with uvx: `uvx open-edison`
|
56
77
|
|
57
78
|
<details>
|
58
|
-
<summary
|
79
|
+
<summary>⬇️ Install Node.js/npm (optional for MCP tools)</summary>
|
59
80
|
|
60
81
|
If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js as well:
|
61
82
|
|
@@ -75,6 +96,7 @@ If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js
|
|
75
96
|
- Node/npx: `winget install -e --id OpenJS.NodeJS`
|
76
97
|
|
77
98
|
After installation, ensure that `npx` is available on PATH.
|
99
|
+
</details>
|
78
100
|
|
79
101
|
<details>
|
80
102
|
<summary><img src="https://img.shields.io/badge/pypi-3775A9?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI"> Install from PyPI</summary>
|
@@ -85,11 +107,11 @@ After installation, ensure that `npx` is available on PATH.
|
|
85
107
|
|
86
108
|
```bash
|
87
109
|
# Using uvx
|
88
|
-
uvx open-edison
|
110
|
+
uvx open-edison
|
89
111
|
|
90
112
|
# Using pipx
|
91
113
|
pipx install open-edison
|
92
|
-
open-edison
|
114
|
+
open-edison
|
93
115
|
```
|
94
116
|
|
95
117
|
Run with a custom config directory:
|
@@ -109,18 +131,18 @@ There is a dockerfile for simple local setup.
|
|
109
131
|
|
110
132
|
```bash
|
111
133
|
# Single-line:
|
112
|
-
git clone https://github.com/
|
134
|
+
git clone https://github.com/Edison-Watch/open-edison.git && cd open-edison && make docker_run
|
113
135
|
|
114
136
|
# Or
|
115
137
|
# Clone repo
|
116
|
-
git clone https://github.com/
|
138
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
117
139
|
# Enter repo
|
118
140
|
cd open-edison
|
119
141
|
# Build and run
|
120
142
|
make docker_run
|
121
143
|
```
|
122
144
|
|
123
|
-
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`.
|
145
|
+
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`. 🌐
|
124
146
|
|
125
147
|
</details>
|
126
148
|
|
@@ -130,7 +152,7 @@ The MCP server will be available at `http://localhost:3000` and the api + fronte
|
|
130
152
|
1. Clone the repository:
|
131
153
|
|
132
154
|
```bash
|
133
|
-
git clone https://github.com/
|
155
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
134
156
|
cd open-edison
|
135
157
|
```
|
136
158
|
|
@@ -161,12 +183,12 @@ make run
|
|
161
183
|
open-edison run
|
162
184
|
```
|
163
185
|
|
164
|
-
The server will be available at `http://localhost:3000`.
|
186
|
+
The server will be available at `http://localhost:3000`. 🌐
|
165
187
|
|
166
188
|
</details>
|
167
189
|
|
168
190
|
<details>
|
169
|
-
<summary
|
191
|
+
<summary>🔌 MCP Connection</summary>
|
170
192
|
|
171
193
|
Connect any MCP client to Open Edison (requires Node.js/npm for `npx`):
|
172
194
|
|
@@ -190,20 +212,20 @@ Or add to your MCP client config:
|
|
190
212
|
</details>
|
191
213
|
|
192
214
|
<details>
|
193
|
-
<summary
|
215
|
+
<summary>🧭 Usage</summary>
|
194
216
|
|
195
217
|
### API Endpoints
|
196
218
|
|
197
219
|
See [API Reference](docs/quick-reference/api_reference.md) for full API documentation.
|
198
220
|
|
199
221
|
<details>
|
200
|
-
<summary
|
222
|
+
<summary>🛠️ Development</summary>
|
201
223
|
|
202
|
-
### Setup
|
224
|
+
### Setup 🧰
|
203
225
|
|
204
226
|
Setup from source as above.
|
205
227
|
|
206
|
-
### Run
|
228
|
+
### Run ▶️
|
207
229
|
|
208
230
|
Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-c this during development.
|
209
231
|
|
@@ -211,7 +233,7 @@ Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-
|
|
211
233
|
make run
|
212
234
|
```
|
213
235
|
|
214
|
-
### Tests/code quality
|
236
|
+
### Tests/code quality ✅
|
215
237
|
|
216
238
|
We expect `make ci` to return cleanly.
|
217
239
|
|
@@ -224,7 +246,7 @@ make ci
|
|
224
246
|
<details>
|
225
247
|
<summary>⚙️ Configuration (config.json)</summary>
|
226
248
|
|
227
|
-
## Configuration
|
249
|
+
## Configuration ⚙️
|
228
250
|
|
229
251
|
The `config.json` file contains all configuration:
|
230
252
|
|
@@ -246,18 +268,20 @@ Each MCP server configuration includes:
|
|
246
268
|
|
247
269
|
</details>
|
248
270
|
|
271
|
+
## 🔐 How Edison prevents data leakages
|
272
|
+
|
249
273
|
<details>
|
250
|
-
<summary
|
274
|
+
<summary>🔱 The lethal trifecta, agent lifecycle management</summary>
|
251
275
|
|
252
276
|
Open Edison includes a comprehensive security monitoring system that tracks the "lethal trifecta" of AI agent risks, as described in [Simon Willison's blog post](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/):
|
253
277
|
|
254
|
-
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="
|
278
|
+
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="70%">
|
255
279
|
|
256
280
|
1. **Private data access** - Access to sensitive local files/data
|
257
281
|
2. **Untrusted content exposure** - Exposure to external/web content
|
258
282
|
3. **External communication** - Ability to write/send data externally
|
259
283
|
|
260
|
-
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="
|
284
|
+
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="90%">
|
261
285
|
|
262
286
|
The configuration allows you to classify these risks across **tools**, **resources**, and **prompts** using separate configuration files.
|
263
287
|
|
@@ -265,7 +289,7 @@ In addition to trifecta, we track Access Control Level (ACL) for each tool call,
|
|
265
289
|
that is, each tool has an ACL level (one of PUBLIC, PRIVATE, or SECRET), and we track the highest ACL level for each session.
|
266
290
|
If a write operation is attempted to a lower ACL level, it is blocked.
|
267
291
|
|
268
|
-
### Tool Permissions (`tool_permissions.json`)
|
292
|
+
### 🧰 Tool Permissions (`tool_permissions.json`)
|
269
293
|
|
270
294
|
Defines security classifications for MCP tools. See full file: [tool_permissions.json](tool_permissions.json), it looks like:
|
271
295
|
|
@@ -283,7 +307,7 @@ Defines security classifications for MCP tools. See full file: [tool_permissions
|
|
283
307
|
```
|
284
308
|
|
285
309
|
<details>
|
286
|
-
<summary
|
310
|
+
<summary>📁 Resource Permissions (`resource_permissions.json`)</summary>
|
287
311
|
|
288
312
|
### Resource Permissions (`resource_permissions.json`)
|
289
313
|
|
@@ -299,7 +323,7 @@ Defines security classifications for resource access patterns. See full file: [r
|
|
299
323
|
</details>
|
300
324
|
|
301
325
|
<details>
|
302
|
-
<summary
|
326
|
+
<summary>💬 Prompt Permissions (`prompt_permissions.json`)</summary>
|
303
327
|
|
304
328
|
### Prompt Permissions (`prompt_permissions.json`)
|
305
329
|
|
@@ -314,7 +338,7 @@ Defines security classifications for prompt types. See full file: [prompt_permis
|
|
314
338
|
|
315
339
|
</details>
|
316
340
|
|
317
|
-
### Wildcard Patterns
|
341
|
+
### Wildcard Patterns ✨
|
318
342
|
|
319
343
|
All permission types support wildcard patterns:
|
320
344
|
|
@@ -322,7 +346,7 @@ All permission types support wildcard patterns:
|
|
322
346
|
- **Resources**: `scheme:*` (e.g., `file:*` matches all file resources)
|
323
347
|
- **Prompts**: `type:*` (e.g., `template:*` matches all template prompts)
|
324
348
|
|
325
|
-
### Security Monitoring
|
349
|
+
### Security Monitoring 🕵️
|
326
350
|
|
327
351
|
**All items must be explicitly configured** - unknown tools/resources/prompts will be rejected for security.
|
328
352
|
|
@@ -330,20 +354,17 @@ Use the `get_security_status` tool to monitor your session's current risk level
|
|
330
354
|
|
331
355
|
</details>
|
332
356
|
|
333
|
-
|
334
|
-
<summary>Documentation</summary>
|
357
|
+
## Documentation 📚
|
335
358
|
|
336
359
|
📚 **Complete documentation available in [`docs/`](docs/)**
|
337
360
|
|
338
|
-
- **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
339
|
-
- **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
340
|
-
- **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
341
|
-
- **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
342
|
-
|
343
|
-
</details>
|
361
|
+
- 🚀 **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
362
|
+
- ⚙️ **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
363
|
+
- 📡 **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
364
|
+
- 🧑💻 **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
344
365
|
|
345
366
|
<details>
|
346
|
-
<summary
|
367
|
+
<summary>📄 License</summary>
|
347
368
|
|
348
369
|
GPL-3.0 License - see [LICENSE](LICENSE) for details.
|
349
370
|
|
@@ -1,21 +1,42 @@
|
|
1
|
-
# OpenEdison
|
1
|
+
# OpenEdison 🔒⚡️
|
2
2
|
|
3
|
-
|
3
|
+
> The secure MCP proxy gateway
|
4
|
+
|
5
|
+
Connect AI to your data/software securely without risk of data exfiltration. Gain visibility, block threats, and get alerts on the data your agent is reading/writing. No more "approve fatigue" with the MCP tool-call approvals.
|
6
|
+
|
7
|
+
OpenEdison solves the [lethal trifecta problem](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/), which can cause agent hijacking & data exfiltration by malicious actors.
|
8
|
+
|
9
|
+
<p align="center">
|
10
|
+
<img src="media/trifecta520p.gif" alt="Trifecta Security Risk Animation" width="520">
|
11
|
+
</p>
|
4
12
|
|
5
13
|
<div align="center">
|
6
|
-
<h2>📧
|
14
|
+
<h2>📧 To get visibility, control and exfiltration blocker into AI's interaction with your company software, systems of record, DBs, <a href="mailto:hello@edison.watch">Contact us</a> to discuss.</h2>
|
7
15
|
</div>
|
8
16
|
|
9
|
-
|
17
|
+
<p align="center">
|
18
|
+
<img alt="Project Version" src="https://img.shields.io/pypi/v/open-edison?label=version&color=blue">
|
19
|
+
<img alt="Python Version" src="https://img.shields.io/badge/python-3.12-blue?logo=python">
|
20
|
+
<img src="https://img.shields.io/badge/License-GPLv3-blue" alt="License">
|
21
|
+
|
22
|
+
</p>
|
23
|
+
|
24
|
+
---
|
25
|
+
|
26
|
+
## Features ✨
|
27
|
+
|
28
|
+
- 🛑 **Data leak blocker** - Edison automatically blocks any data leaks, even if your AI gets jailbroken
|
29
|
+
- 🕰️ **Deterministic execution** - Deterministic execution. Guaranteed data exfiltration blocker.
|
30
|
+
- 🗂️ **Easily configurable** - Easy to configure and manage your MCP servers
|
31
|
+
- 📊 **Visibility into agent interactions** - Track and monitor your agents and their interactions with connected software/data via MCP calls
|
32
|
+
- 🔗 **Simple API** - REST API for managing MCP servers and proxying requests
|
33
|
+
- 🐳 **Docker support** - Run in a container for easy deployment
|
10
34
|
|
11
|
-
|
12
|
-
- **JSON configuration** - Easy to configure and manage your MCP servers
|
13
|
-
- **Simple local frontend** - Track and monitor your MCP interactions, servers, and sessions.
|
14
|
-
- **Session tracking** - Track and monitor your MCP interactions
|
15
|
-
- **Simple API** - REST API for managing MCP servers and proxying requests
|
16
|
-
- **Docker support** - Run in a container for easy deployment
|
35
|
+
## About Edison.watch 🏢
|
17
36
|
|
18
|
-
|
37
|
+
Edison helps you gain observability, control, and policy enforcement for all AI interactions with systems of records, existing company software and data. Prevent AI from causing data leakage, lightning-fast setup for cross-system governance.
|
38
|
+
|
39
|
+
## Quick Start 🚀
|
19
40
|
|
20
41
|
The fastest way to get started:
|
21
42
|
|
@@ -25,10 +46,10 @@ The fastest way to get started:
|
|
25
46
|
curl -fsSL https://raw.githubusercontent.com/Edison-Watch/open-edison/main/curl_pipe_bash.sh | bash
|
26
47
|
```
|
27
48
|
|
28
|
-
Run locally with uvx: `uvx open-edison
|
49
|
+
Run locally with uvx: `uvx open-edison`
|
29
50
|
|
30
51
|
<details>
|
31
|
-
<summary
|
52
|
+
<summary>⬇️ Install Node.js/npm (optional for MCP tools)</summary>
|
32
53
|
|
33
54
|
If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js as well:
|
34
55
|
|
@@ -48,6 +69,7 @@ If you need `npx` (for Node-based MCP tools like `mcp-remote`), install Node.js
|
|
48
69
|
- Node/npx: `winget install -e --id OpenJS.NodeJS`
|
49
70
|
|
50
71
|
After installation, ensure that `npx` is available on PATH.
|
72
|
+
</details>
|
51
73
|
|
52
74
|
<details>
|
53
75
|
<summary><img src="https://img.shields.io/badge/pypi-3775A9?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI"> Install from PyPI</summary>
|
@@ -58,11 +80,11 @@ After installation, ensure that `npx` is available on PATH.
|
|
58
80
|
|
59
81
|
```bash
|
60
82
|
# Using uvx
|
61
|
-
uvx open-edison
|
83
|
+
uvx open-edison
|
62
84
|
|
63
85
|
# Using pipx
|
64
86
|
pipx install open-edison
|
65
|
-
open-edison
|
87
|
+
open-edison
|
66
88
|
```
|
67
89
|
|
68
90
|
Run with a custom config directory:
|
@@ -82,18 +104,18 @@ There is a dockerfile for simple local setup.
|
|
82
104
|
|
83
105
|
```bash
|
84
106
|
# Single-line:
|
85
|
-
git clone https://github.com/
|
107
|
+
git clone https://github.com/Edison-Watch/open-edison.git && cd open-edison && make docker_run
|
86
108
|
|
87
109
|
# Or
|
88
110
|
# Clone repo
|
89
|
-
git clone https://github.com/
|
111
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
90
112
|
# Enter repo
|
91
113
|
cd open-edison
|
92
114
|
# Build and run
|
93
115
|
make docker_run
|
94
116
|
```
|
95
117
|
|
96
|
-
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`.
|
118
|
+
The MCP server will be available at `http://localhost:3000` and the api + frontend at `http://localhost:3001`. 🌐
|
97
119
|
|
98
120
|
</details>
|
99
121
|
|
@@ -103,7 +125,7 @@ The MCP server will be available at `http://localhost:3000` and the api + fronte
|
|
103
125
|
1. Clone the repository:
|
104
126
|
|
105
127
|
```bash
|
106
|
-
git clone https://github.com/
|
128
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
107
129
|
cd open-edison
|
108
130
|
```
|
109
131
|
|
@@ -134,12 +156,12 @@ make run
|
|
134
156
|
open-edison run
|
135
157
|
```
|
136
158
|
|
137
|
-
The server will be available at `http://localhost:3000`.
|
159
|
+
The server will be available at `http://localhost:3000`. 🌐
|
138
160
|
|
139
161
|
</details>
|
140
162
|
|
141
163
|
<details>
|
142
|
-
<summary
|
164
|
+
<summary>🔌 MCP Connection</summary>
|
143
165
|
|
144
166
|
Connect any MCP client to Open Edison (requires Node.js/npm for `npx`):
|
145
167
|
|
@@ -163,20 +185,20 @@ Or add to your MCP client config:
|
|
163
185
|
</details>
|
164
186
|
|
165
187
|
<details>
|
166
|
-
<summary
|
188
|
+
<summary>🧭 Usage</summary>
|
167
189
|
|
168
190
|
### API Endpoints
|
169
191
|
|
170
192
|
See [API Reference](docs/quick-reference/api_reference.md) for full API documentation.
|
171
193
|
|
172
194
|
<details>
|
173
|
-
<summary
|
195
|
+
<summary>🛠️ Development</summary>
|
174
196
|
|
175
|
-
### Setup
|
197
|
+
### Setup 🧰
|
176
198
|
|
177
199
|
Setup from source as above.
|
178
200
|
|
179
|
-
### Run
|
201
|
+
### Run ▶️
|
180
202
|
|
181
203
|
Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-c this during development.
|
182
204
|
|
@@ -184,7 +206,7 @@ Server doesn't have any auto-reload at the moment, so you'll need to run & ctrl-
|
|
184
206
|
make run
|
185
207
|
```
|
186
208
|
|
187
|
-
### Tests/code quality
|
209
|
+
### Tests/code quality ✅
|
188
210
|
|
189
211
|
We expect `make ci` to return cleanly.
|
190
212
|
|
@@ -197,7 +219,7 @@ make ci
|
|
197
219
|
<details>
|
198
220
|
<summary>⚙️ Configuration (config.json)</summary>
|
199
221
|
|
200
|
-
## Configuration
|
222
|
+
## Configuration ⚙️
|
201
223
|
|
202
224
|
The `config.json` file contains all configuration:
|
203
225
|
|
@@ -219,18 +241,20 @@ Each MCP server configuration includes:
|
|
219
241
|
|
220
242
|
</details>
|
221
243
|
|
244
|
+
## 🔐 How Edison prevents data leakages
|
245
|
+
|
222
246
|
<details>
|
223
|
-
<summary
|
247
|
+
<summary>🔱 The lethal trifecta, agent lifecycle management</summary>
|
224
248
|
|
225
249
|
Open Edison includes a comprehensive security monitoring system that tracks the "lethal trifecta" of AI agent risks, as described in [Simon Willison's blog post](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/):
|
226
250
|
|
227
|
-
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="
|
251
|
+
<img src="media/lethal-trifecta.png" alt="The lethal trifecta diagram showing the three key AI agent security risks" width="70%">
|
228
252
|
|
229
253
|
1. **Private data access** - Access to sensitive local files/data
|
230
254
|
2. **Untrusted content exposure** - Exposure to external/web content
|
231
255
|
3. **External communication** - Ability to write/send data externally
|
232
256
|
|
233
|
-
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="
|
257
|
+
<img src="media/pam-diagram.png" alt="Privileged Access Management (PAM) example showing the lethal trifecta in action" width="90%">
|
234
258
|
|
235
259
|
The configuration allows you to classify these risks across **tools**, **resources**, and **prompts** using separate configuration files.
|
236
260
|
|
@@ -238,7 +262,7 @@ In addition to trifecta, we track Access Control Level (ACL) for each tool call,
|
|
238
262
|
that is, each tool has an ACL level (one of PUBLIC, PRIVATE, or SECRET), and we track the highest ACL level for each session.
|
239
263
|
If a write operation is attempted to a lower ACL level, it is blocked.
|
240
264
|
|
241
|
-
### Tool Permissions (`tool_permissions.json`)
|
265
|
+
### 🧰 Tool Permissions (`tool_permissions.json`)
|
242
266
|
|
243
267
|
Defines security classifications for MCP tools. See full file: [tool_permissions.json](tool_permissions.json), it looks like:
|
244
268
|
|
@@ -256,7 +280,7 @@ Defines security classifications for MCP tools. See full file: [tool_permissions
|
|
256
280
|
```
|
257
281
|
|
258
282
|
<details>
|
259
|
-
<summary
|
283
|
+
<summary>📁 Resource Permissions (`resource_permissions.json`)</summary>
|
260
284
|
|
261
285
|
### Resource Permissions (`resource_permissions.json`)
|
262
286
|
|
@@ -272,7 +296,7 @@ Defines security classifications for resource access patterns. See full file: [r
|
|
272
296
|
</details>
|
273
297
|
|
274
298
|
<details>
|
275
|
-
<summary
|
299
|
+
<summary>💬 Prompt Permissions (`prompt_permissions.json`)</summary>
|
276
300
|
|
277
301
|
### Prompt Permissions (`prompt_permissions.json`)
|
278
302
|
|
@@ -287,7 +311,7 @@ Defines security classifications for prompt types. See full file: [prompt_permis
|
|
287
311
|
|
288
312
|
</details>
|
289
313
|
|
290
|
-
### Wildcard Patterns
|
314
|
+
### Wildcard Patterns ✨
|
291
315
|
|
292
316
|
All permission types support wildcard patterns:
|
293
317
|
|
@@ -295,7 +319,7 @@ All permission types support wildcard patterns:
|
|
295
319
|
- **Resources**: `scheme:*` (e.g., `file:*` matches all file resources)
|
296
320
|
- **Prompts**: `type:*` (e.g., `template:*` matches all template prompts)
|
297
321
|
|
298
|
-
### Security Monitoring
|
322
|
+
### Security Monitoring 🕵️
|
299
323
|
|
300
324
|
**All items must be explicitly configured** - unknown tools/resources/prompts will be rejected for security.
|
301
325
|
|
@@ -303,20 +327,17 @@ Use the `get_security_status` tool to monitor your session's current risk level
|
|
303
327
|
|
304
328
|
</details>
|
305
329
|
|
306
|
-
|
307
|
-
<summary>Documentation</summary>
|
330
|
+
## Documentation 📚
|
308
331
|
|
309
332
|
📚 **Complete documentation available in [`docs/`](docs/)**
|
310
333
|
|
311
|
-
- **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
312
|
-
- **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
313
|
-
- **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
314
|
-
- **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
315
|
-
|
316
|
-
</details>
|
334
|
+
- 🚀 **[Getting Started](docs/quick-reference/config_quick_start.md)** - Quick setup guide
|
335
|
+
- ⚙️ **[Configuration](docs/core/configuration.md)** - Complete configuration reference
|
336
|
+
- 📡 **[API Reference](docs/quick-reference/api_reference.md)** - REST API documentation
|
337
|
+
- 🧑💻 **[Development Guide](docs/development/development_guide.md)** - Contributing and development
|
317
338
|
|
318
339
|
<details>
|
319
|
-
<summary
|
340
|
+
<summary>📄 License</summary>
|
320
341
|
|
321
342
|
GPL-3.0 License - see [LICENSE](LICENSE) for details.
|
322
343
|
|
@@ -146,7 +146,7 @@ This extension operates securely:
|
|
146
146
|
1. **Clone the repository**:
|
147
147
|
|
148
148
|
```bash
|
149
|
-
git clone https://github.com/
|
149
|
+
git clone https://github.com/Edison-Watch/open-edison
|
150
150
|
cd open-edison/desktop_ext
|
151
151
|
```
|
152
152
|
|
@@ -181,11 +181,11 @@ desktop_ext/
|
|
181
181
|
## Contributing
|
182
182
|
|
183
183
|
This extension is part of the Open Edison project. See the main repository for contribution guidelines:
|
184
|
-
<https://github.com/
|
184
|
+
<https://github.com/Edison-Watch/open-edison>
|
185
185
|
|
186
186
|
## Related Resources
|
187
187
|
|
188
|
-
- [Open Edison Main Repository](https://github.com/
|
188
|
+
- [Open Edison Main Repository](https://github.com/Edison-Watch/open-edison)
|
189
189
|
- [mcp-remote Package](https://www.npmjs.com/package/mcp-remote)
|
190
190
|
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
191
191
|
- [Anthropic Desktop Extensions](https://support.anthropic.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)
|
@@ -24,7 +24,7 @@ This guide covers installing and running Open Edison directly on your local mach
|
|
24
24
|
|
25
25
|
```bash
|
26
26
|
# Clone the repository
|
27
|
-
git clone https://github.com/
|
27
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
28
28
|
cd open-edison
|
29
29
|
```
|
30
30
|
|
@@ -24,7 +24,7 @@ Open Edison is designed to be:
|
|
24
24
|
|
25
25
|
```bash
|
26
26
|
# Clone the repository
|
27
|
-
git clone https://github.com/
|
27
|
+
git clone https://github.com/Edison-Watch/open-edison.git
|
28
28
|
cd open-edison
|
29
29
|
|
30
30
|
# Install dependencies
|
@@ -177,7 +177,7 @@ git clone https://github.com/your-username/open-edison.git
|
|
177
177
|
cd open-edison
|
178
178
|
|
179
179
|
# Add upstream remote
|
180
|
-
git remote add upstream https://github.com/
|
180
|
+
git remote add upstream https://github.com/Edison-Watch/open-edison.git
|
181
181
|
```
|
182
182
|
|
183
183
|
### 2. **Create Feature Branch**
|
@@ -177,6 +177,7 @@ def _spawn_frontend_dev( # noqa: C901 - pragmatic complexity for env probing
|
|
177
177
|
|
178
178
|
|
179
179
|
async def _run_server(args: Any) -> None:
|
180
|
+
# TODO check this works as we want it to
|
180
181
|
# Resolve config dir and expose via env for the rest of the app
|
181
182
|
config_dir_arg = getattr(args, "config_dir", None)
|
182
183
|
if config_dir_arg is not None:
|
@@ -184,7 +185,7 @@ async def _run_server(args: Any) -> None:
|
|
184
185
|
config_dir = get_config_dir()
|
185
186
|
|
186
187
|
# Load config after setting env override
|
187
|
-
cfg = Config
|
188
|
+
cfg = Config(config_dir)
|
188
189
|
|
189
190
|
host = getattr(args, "host", None) or cfg.server.host
|
190
191
|
port = getattr(args, "port", None) or cfg.server.port
|