open-edison 0.1.75rc1__tar.gz → 0.1.78__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.
Files changed (65) hide show
  1. {open_edison-0.1.75rc1 → open_edison-0.1.78}/PKG-INFO +1 -1
  2. {open_edison-0.1.75rc1 → open_edison-0.1.78}/pyproject.toml +1 -1
  3. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/cli.py +1 -2
  4. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/server.py +9 -3
  5. open_edison-0.1.78/test_config/config.json +145 -0
  6. open_edison-0.1.78/test_config/prompt_permissions.json +15 -0
  7. open_edison-0.1.78/test_config/resource_permissions.json +15 -0
  8. open_edison-0.1.78/tool_permissions.json +245 -0
  9. {open_edison-0.1.75rc1 → open_edison-0.1.78}/.gitignore +0 -0
  10. {open_edison-0.1.75rc1 → open_edison-0.1.78}/LICENSE +0 -0
  11. {open_edison-0.1.75rc1 → open_edison-0.1.78}/README.md +0 -0
  12. {open_edison-0.1.75rc1 → open_edison-0.1.78}/config.json +0 -0
  13. {open_edison-0.1.75rc1 → open_edison-0.1.78}/desktop_ext/README.md +0 -0
  14. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/README.md +0 -0
  15. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/architecture/single_user_design.md +0 -0
  16. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/core/configuration.md +0 -0
  17. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/core/project_structure.md +0 -0
  18. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/core/proxy_usage.md +0 -0
  19. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/deployment/docker.md +0 -0
  20. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/deployment/local.md +0 -0
  21. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/development/contributing.md +0 -0
  22. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/development/development_guide.md +0 -0
  23. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/development/testing.md +0 -0
  24. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/quick-reference/api_reference.md +0 -0
  25. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/quick-reference/config_quick_start.md +0 -0
  26. {open_edison-0.1.75rc1 → open_edison-0.1.78}/docs/testing_status.md +0 -0
  27. {open_edison-0.1.75rc1 → open_edison-0.1.78}/hatch_build.py +0 -0
  28. {open_edison-0.1.75rc1 → open_edison-0.1.78}/installation_test/README.md +0 -0
  29. {open_edison-0.1.75rc1 → open_edison-0.1.78}/prompt_permissions.json +0 -0
  30. {open_edison-0.1.75rc1 → open_edison-0.1.78}/resource_permissions.json +0 -0
  31. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/__init__.py +0 -0
  32. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/__main__.py +0 -0
  33. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/config.py +0 -0
  34. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/config.pyi +0 -0
  35. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/events.py +0 -0
  36. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/frontend_dist/assets/index-D05VN_1l.css +0 -0
  37. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/frontend_dist/assets/index-D6ziuTsl.js +0 -0
  38. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/frontend_dist/index.html +0 -0
  39. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/frontend_dist/sw.js +0 -0
  40. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/__init__.py +0 -0
  41. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/__main__.py +0 -0
  42. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/api.py +0 -0
  43. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/cli.py +0 -0
  44. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/export_cli.py +0 -0
  45. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/exporters.py +0 -0
  46. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/import_api.py +0 -0
  47. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/importers.py +0 -0
  48. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/merge.py +0 -0
  49. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/parsers.py +0 -0
  50. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/paths.py +0 -0
  51. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/quick_cli.py +0 -0
  52. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_importer/types.py +0 -0
  53. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/mcp_stdio_capture.py +0 -0
  54. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/middleware/data_access_tracker.py +0 -0
  55. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/middleware/session_tracking.py +0 -0
  56. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/oauth_manager.py +0 -0
  57. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/oauth_override.py +0 -0
  58. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/permissions.py +0 -0
  59. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/setup_tui/__init__.py +0 -0
  60. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/setup_tui/main.py +0 -0
  61. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/single_user_mcp.py +0 -0
  62. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/telemetry.py +0 -0
  63. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/tools/io.py +0 -0
  64. {open_edison-0.1.75rc1 → open_edison-0.1.78}/src/vulture_whitelist.py +0 -0
  65. {open_edison-0.1.75rc1 → open_edison-0.1.78/test_config}/tool_permissions.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: open-edison
3
- Version: 0.1.75rc1
3
+ Version: 0.1.78
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "open-edison"
3
- version = "0.1.75rc1"
3
+ version = "0.1.78"
4
4
  description = "Open-source MCP security, aggregation, and monitoring. Single-user, self-hosted MCP proxy."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1,7 +1,6 @@
1
1
  """
2
2
  CLI entrypoint for Open Edison.
3
-
4
- Provides `open-edison` executable when installed via pip/uvx/pipx.
3
+ Provides the `open-edison` executable when installed via pip/uvx/pipx.
5
4
  """
6
5
 
7
6
  import argparse
@@ -814,9 +814,15 @@ class OpenEdisonProxy:
814
814
  raise AttributeError(f"Proxy does not expose list method for {kind}")
815
815
 
816
816
  async def list_all() -> tuple[list[Any], list[Any], list[Any]]:
817
- tools = await _call_list("tools")
818
- resources = await _call_list("resources")
819
- prompts = await _call_list("prompts")
817
+ tools, resources, prompts = await asyncio.gather(
818
+ _call_list("tools"),
819
+ _call_list("resources"),
820
+ _call_list("prompts"),
821
+ return_exceptions=True,
822
+ )
823
+ tools = tools if isinstance(tools, list) else []
824
+ resources = resources if isinstance(resources, list) else []
825
+ prompts = prompts if isinstance(prompts, list) else []
820
826
  return tools, resources, prompts
821
827
 
822
828
  timeout = body.timeout_s if isinstance(body.timeout_s, (int | float)) else 20.0
@@ -0,0 +1,145 @@
1
+ {
2
+ "server": {
3
+ "host": "0.0.0.0",
4
+ "port": 3000,
5
+ "api_key": "dev-api-key-change-me"
6
+ },
7
+ "autoconfig_url": "https://api.edison.watch/api/config-perms",
8
+ "logging": {
9
+ "level": "INFO",
10
+ "database_path": "sessions.db"
11
+ },
12
+ "edison-watch-api-key": "change-me",
13
+ "mcp_servers": [
14
+ {
15
+ "name": "filesystem",
16
+ "command": "npx",
17
+ "args": [
18
+ "-y",
19
+ "@modelcontextprotocol/server-filesystem",
20
+ "/tmp"
21
+ ],
22
+ "env": {},
23
+ "enabled": true,
24
+ "roots": []
25
+ },
26
+ {
27
+ "name": "fetch",
28
+ "command": "npx",
29
+ "args": [
30
+ "-y",
31
+ "@modelcontextprotocol/server-everything"
32
+ ],
33
+ "env": {},
34
+ "enabled": false
35
+ },
36
+ {
37
+ "name": "github",
38
+ "command": "npx",
39
+ "args": [
40
+ "-y",
41
+ "@github/mcp-server-github"
42
+ ],
43
+ "env": {
44
+ "GITHUB_TOKEN": "your-github-token-here"
45
+ },
46
+ "enabled": false
47
+ },
48
+ {
49
+ "name": "sqlite",
50
+ "command": "npx",
51
+ "args": [
52
+ "-y",
53
+ "mcp-sqlite",
54
+ "./test.db"
55
+ ],
56
+ "env": {},
57
+ "enabled": true,
58
+ "roots": []
59
+ },
60
+ {
61
+ "name": "supabase",
62
+ "command": "npx",
63
+ "args": [
64
+ "-y",
65
+ "@supabase/mcp-server-supabase@latest"
66
+ ],
67
+ "env": {
68
+ "SUPABASE_ACCESS_TOKEN": "your-supabase-access-token"
69
+ },
70
+ "enabled": false
71
+ },
72
+ {
73
+ "name": "atlassian",
74
+ "command": "npx",
75
+ "args": [
76
+ "-y",
77
+ "mcp-remote",
78
+ "https://mcp.atlassian.com/v1/sse"
79
+ ],
80
+ "env": {},
81
+ "enabled": false
82
+ },
83
+ {
84
+ "name": "figma",
85
+ "command": "npx",
86
+ "args": [
87
+ "-y",
88
+ "figma-developer-mcp",
89
+ "--stdio"
90
+ ],
91
+ "env": {
92
+ "FIGMA_API_KEY": "your-figma-api-key"
93
+ },
94
+ "enabled": false
95
+ },
96
+ {
97
+ "name": "figma_dev_mode",
98
+ "command": "npx",
99
+ "args": [
100
+ "-y",
101
+ "mcp-remote",
102
+ "http://127.0.0.1:3845/sse"
103
+ ],
104
+ "env": {},
105
+ "enabled": false
106
+ },
107
+ {
108
+ "name": "playwright",
109
+ "command": "npx",
110
+ "args": [
111
+ "-y",
112
+ "@automatalabs/mcp-server-playwright"
113
+ ],
114
+ "env": {},
115
+ "enabled": false
116
+ },
117
+ {
118
+ "name": "google_drive",
119
+ "command": "npx",
120
+ "args": [
121
+ "-y",
122
+ "@modelcontextprotocol/server-gdrive"
123
+ ],
124
+ "env": {
125
+ "GOOGLE_CLIENT_ID": "your-client-id",
126
+ "GOOGLE_CLIENT_SECRET": "your-client-secret",
127
+ "GOOGLE_REFRESH_TOKEN": "your-refresh-token"
128
+ },
129
+ "enabled": false
130
+ },
131
+ {
132
+ "name": "zapier",
133
+ "command": "npx",
134
+ "args": [
135
+ "-y",
136
+ "mcp-remote",
137
+ "https://mcp.zapier.com/api/mcp/s/REPLACE_WITH_ACCESS_TOKEN/mcp",
138
+ "--header",
139
+ "Accept: application/json, text/event-stream"
140
+ ],
141
+ "env": {},
142
+ "enabled": false
143
+ }
144
+ ]
145
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "_metadata": {
3
+ "description": "Prompt security classifications for Open Edison data access tracker",
4
+ "last_updated": "2025-08-07"
5
+ },
6
+ "builtin": {
7
+ "summarize_text": {
8
+ "enabled": true,
9
+ "write_operation": false,
10
+ "read_private_data": false,
11
+ "read_untrusted_public_data": false
12
+ }
13
+ },
14
+ "sqlite": {}
15
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "_metadata": {
3
+ "description": "Resource security classifications for Open Edison data access tracker",
4
+ "last_updated": "2025-08-07"
5
+ },
6
+ "builtin": {
7
+ "config://app": {
8
+ "enabled": true,
9
+ "write_operation": false,
10
+ "read_private_data": false,
11
+ "read_untrusted_public_data": false
12
+ }
13
+ },
14
+ "sqlite": {}
15
+ }
@@ -0,0 +1,245 @@
1
+ {
2
+ "_metadata": {
3
+ "description": "Tool security classifications for Open Edison data access tracker",
4
+ "last_updated": "2025-08-07"
5
+ },
6
+ "builtin": {
7
+ "echo": {
8
+ "enabled": true,
9
+ "write_operation": false,
10
+ "read_private_data": false,
11
+ "read_untrusted_public_data": false,
12
+ "acl": "PUBLIC"
13
+ },
14
+ "get_server_info": {
15
+ "enabled": true,
16
+ "write_operation": false,
17
+ "read_private_data": false,
18
+ "read_untrusted_public_data": false,
19
+ "acl": "PUBLIC"
20
+ },
21
+ "get_security_status": {
22
+ "enabled": true,
23
+ "write_operation": false,
24
+ "read_private_data": false,
25
+ "read_untrusted_public_data": false,
26
+ "acl": "PUBLIC"
27
+ },
28
+ "get_available_tools": {
29
+ "enabled": true,
30
+ "write_operation": false,
31
+ "read_private_data": false,
32
+ "read_untrusted_public_data": false,
33
+ "acl": "PUBLIC"
34
+ },
35
+ "tools_changed": {
36
+ "enabled": true,
37
+ "write_operation": false,
38
+ "read_private_data": false,
39
+ "read_untrusted_public_data": false,
40
+ "acl": "PUBLIC"
41
+ }
42
+ },
43
+ "filesystem": {
44
+ "read_file": {
45
+ "enabled": true,
46
+ "write_operation": false,
47
+ "read_private_data": true,
48
+ "read_untrusted_public_data": false,
49
+ "acl": "PRIVATE"
50
+ },
51
+ "read_text_file": {
52
+ "enabled": true,
53
+ "write_operation": false,
54
+ "read_private_data": true,
55
+ "read_untrusted_public_data": false,
56
+ "acl": "PRIVATE"
57
+ },
58
+ "read_media_file": {
59
+ "enabled": true,
60
+ "write_operation": false,
61
+ "read_private_data": true,
62
+ "read_untrusted_public_data": false,
63
+ "acl": "PRIVATE"
64
+ },
65
+ "read_multiple_files": {
66
+ "enabled": true,
67
+ "write_operation": false,
68
+ "read_private_data": true,
69
+ "read_untrusted_public_data": false,
70
+ "acl": "PRIVATE"
71
+ },
72
+ "write_file": {
73
+ "enabled": true,
74
+ "write_operation": true,
75
+ "read_private_data": false,
76
+ "read_untrusted_public_data": false,
77
+ "acl": "PUBLIC"
78
+ },
79
+ "edit_file": {
80
+ "enabled": true,
81
+ "write_operation": true,
82
+ "read_private_data": true,
83
+ "read_untrusted_public_data": false,
84
+ "acl": "PRIVATE"
85
+ },
86
+ "create_directory": {
87
+ "enabled": true,
88
+ "write_operation": true,
89
+ "read_private_data": false,
90
+ "read_untrusted_public_data": false,
91
+ "acl": "PRIVATE"
92
+ },
93
+ "list_directory": {
94
+ "enabled": true,
95
+ "write_operation": false,
96
+ "read_private_data": true,
97
+ "read_untrusted_public_data": false,
98
+ "acl": "PRIVATE"
99
+ },
100
+ "list_directory_with_sizes": {
101
+ "enabled": true,
102
+ "write_operation": false,
103
+ "read_private_data": true,
104
+ "read_untrusted_public_data": false,
105
+ "acl": "PRIVATE"
106
+ },
107
+ "directory_tree": {
108
+ "enabled": true,
109
+ "write_operation": false,
110
+ "read_private_data": true,
111
+ "read_untrusted_public_data": false,
112
+ "acl": "PRIVATE"
113
+ },
114
+ "move_file": {
115
+ "enabled": true,
116
+ "write_operation": true,
117
+ "read_private_data": true,
118
+ "read_untrusted_public_data": false,
119
+ "acl": "PRIVATE"
120
+ },
121
+ "search_files": {
122
+ "enabled": true,
123
+ "write_operation": false,
124
+ "read_private_data": true,
125
+ "read_untrusted_public_data": false,
126
+ "acl": "PRIVATE"
127
+ },
128
+ "get_file_info": {
129
+ "enabled": true,
130
+ "write_operation": false,
131
+ "read_private_data": true,
132
+ "read_untrusted_public_data": false,
133
+ "acl": "PRIVATE"
134
+ },
135
+ "list_allowed_directories": {
136
+ "enabled": true,
137
+ "write_operation": false,
138
+ "read_private_data": false,
139
+ "read_untrusted_public_data": false,
140
+ "acl": "PUBLIC"
141
+ }
142
+ },
143
+ "sqlite": {
144
+ "db_info": {
145
+ "enabled": true,
146
+ "write_operation": false,
147
+ "read_private_data": true,
148
+ "read_untrusted_public_data": false,
149
+ "description": "Get information about the database",
150
+ "acl": "PRIVATE"
151
+ },
152
+ "query": {
153
+ "enabled": true,
154
+ "write_operation": true,
155
+ "read_private_data": true,
156
+ "read_untrusted_public_data": false,
157
+ "description": "Execute a raw SQL query against the database with optional parameter values",
158
+ "acl": "PRIVATE"
159
+ },
160
+ "list_tables": {
161
+ "enabled": true,
162
+ "write_operation": false,
163
+ "read_private_data": true,
164
+ "read_untrusted_public_data": false,
165
+ "description": "List all user tables in the SQLite database (excludes system tables)",
166
+ "acl": "PRIVATE"
167
+ },
168
+ "get_table_schema": {
169
+ "enabled": true,
170
+ "write_operation": false,
171
+ "read_private_data": true,
172
+ "read_untrusted_public_data": false,
173
+ "description": "Get the schema information for a specific table including column details",
174
+ "acl": "PRIVATE"
175
+ },
176
+ "create_record": {
177
+ "enabled": true,
178
+ "write_operation": true,
179
+ "read_private_data": true,
180
+ "read_untrusted_public_data": false,
181
+ "description": "Insert a new record into a table with specified data",
182
+ "acl": "PRIVATE"
183
+ },
184
+ "read_records": {
185
+ "enabled": true,
186
+ "write_operation": false,
187
+ "read_private_data": true,
188
+ "read_untrusted_public_data": false,
189
+ "description": "Read records from a table with optional conditions, limit, and offset",
190
+ "acl": "PRIVATE"
191
+ },
192
+ "update_records": {
193
+ "enabled": true,
194
+ "write_operation": true,
195
+ "read_private_data": true,
196
+ "read_untrusted_public_data": false,
197
+ "description": "Update records in a table based on specified conditions",
198
+ "acl": "PRIVATE"
199
+ },
200
+ "delete_records": {
201
+ "enabled": true,
202
+ "write_operation": true,
203
+ "read_private_data": true,
204
+ "read_untrusted_public_data": false,
205
+ "description": "Delete records from a table based on specified conditions",
206
+ "acl": "PRIVATE"
207
+ }
208
+ },
209
+ "test_server": {
210
+ "test_server/*": {
211
+ "enabled": true,
212
+ "write_operation": false,
213
+ "read_private_data": true,
214
+ "read_untrusted_public_data": false,
215
+ "acl": "PRIVATE"
216
+ }
217
+ },
218
+ "atlassian": {
219
+ "getAccessibleAtlassianResources": {
220
+ "enabled": true,
221
+ "write_operation": false,
222
+ "read_private_data": true,
223
+ "read_untrusted_public_data": true,
224
+ "acl": "PUBLIC"
225
+ }
226
+ },
227
+ "zapier": {
228
+ "add_tools": {
229
+ "enabled": true,
230
+ "write_operation": false,
231
+ "read_private_data": false,
232
+ "read_untrusted_public_data": false,
233
+ "acl": "PUBLIC",
234
+ "description": "Adds a new tool to the tool registry. Caution: Do not disable it is required for zapier to work properly"
235
+ },
236
+ "edit_tools": {
237
+ "enabled": true,
238
+ "write_operation": false,
239
+ "read_private_data": false,
240
+ "read_untrusted_public_data": false,
241
+ "acl": "PUBLIC",
242
+ "description": "Edit your existing MCP provider actions. TODO: Unknown side-effects"
243
+ }
244
+ }
245
+ }
File without changes
File without changes
File without changes