mcpower-proxy 0.0.65__tar.gz → 0.0.67__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.
Potentially problematic release.
This version of mcpower-proxy might be problematic. Click here for more details.
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/PKG-INFO +2 -2
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/pyproject.toml +2 -2
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/mcpower_proxy.egg-info/PKG-INFO +2 -2
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/mcpower_proxy.egg-info/requires.txt +1 -1
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/utils/ids.py +5 -3
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/wrapper/__version__.py +1 -1
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/wrapper/middleware.py +8 -1
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/LICENSE +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/README.md +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/setup.cfg +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/LICENSE +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/main.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/mcpower_proxy.egg-info/SOURCES.txt +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/mcpower_proxy.egg-info/dependency_links.txt +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/mcpower_proxy.egg-info/entry_points.txt +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/mcpower_proxy.egg-info/top_level.txt +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/apis/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/apis/security_policy.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/logs/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/logs/audit_trail.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/logs/logger.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/redaction/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/redaction/constants.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/redaction/gitleaks_rules.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/redaction/pii_rules.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/redaction/redactor.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/classes.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/confirmation.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/simple_dialog.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/constants.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/mac_dialogs.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/tk_dialogs.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/windows_custom_dialog.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/windows_dialogs.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/windows_structs.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/yad_dialogs.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/zenity_dialogs.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/utils/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/utils/cli.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/utils/config.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/utils/copy.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/utils/json.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/utils/mcp_configs.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/wrapper/__init__.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/wrapper/schema.py +0 -0
- {mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/wrapper/server.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcpower-proxy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.67
|
|
4
4
|
Summary: MCPower Security proxy
|
|
5
5
|
Author-email: MCPower Security <support@mcpower.tech>
|
|
6
6
|
License: Apache License
|
|
@@ -209,7 +209,7 @@ Keywords: mcp,security,proxy,monitoring,audit,redaction,policy-enforcement
|
|
|
209
209
|
Requires-Python: ~=3.11.0
|
|
210
210
|
Description-Content-Type: text/markdown
|
|
211
211
|
License-File: LICENSE
|
|
212
|
-
Requires-Dist: fastmcp
|
|
212
|
+
Requires-Dist: fastmcp==2.13.0.1
|
|
213
213
|
Requires-Dist: httpx>=0.25.0
|
|
214
214
|
Requires-Dist: mcp>=1.0.0
|
|
215
215
|
Requires-Dist: watchdog>=3.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mcpower-proxy"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.67"
|
|
4
4
|
description = "MCPower Security proxy"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = "~=3.11.0"
|
|
@@ -9,7 +9,7 @@ authors = [
|
|
|
9
9
|
{ name = "MCPower Security", email = "support@mcpower.tech" }
|
|
10
10
|
]
|
|
11
11
|
dependencies = [
|
|
12
|
-
"fastmcp
|
|
12
|
+
"fastmcp==2.13.0.1",
|
|
13
13
|
"httpx>=0.25.0",
|
|
14
14
|
"mcp>=1.0.0",
|
|
15
15
|
"watchdog>=3.0.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcpower-proxy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.67
|
|
4
4
|
Summary: MCPower Security proxy
|
|
5
5
|
Author-email: MCPower Security <support@mcpower.tech>
|
|
6
6
|
License: Apache License
|
|
@@ -209,7 +209,7 @@ Keywords: mcp,security,proxy,monitoring,audit,redaction,policy-enforcement
|
|
|
209
209
|
Requires-Python: ~=3.11.0
|
|
210
210
|
Description-Content-Type: text/markdown
|
|
211
211
|
License-File: LICENSE
|
|
212
|
-
Requires-Dist: fastmcp
|
|
212
|
+
Requires-Dist: fastmcp==2.13.0.1
|
|
213
213
|
Requires-Dist: httpx>=0.25.0
|
|
214
214
|
Requires-Dist: mcp>=1.0.0
|
|
215
215
|
Requires-Dist: watchdog>=3.0.0
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Utilities for generating event IDs, session IDs, app UIDs, and timing helpers
|
|
3
3
|
"""
|
|
4
4
|
import os
|
|
5
|
+
import sys
|
|
5
6
|
import time
|
|
6
7
|
import uuid
|
|
7
8
|
from pathlib import Path
|
|
@@ -67,7 +68,8 @@ def _atomic_write_uuid(file_path: Path, new_uuid: str) -> bool:
|
|
|
67
68
|
True if write succeeded, False if file exists
|
|
68
69
|
"""
|
|
69
70
|
try:
|
|
70
|
-
|
|
71
|
+
mode = 0o666 if sys.platform == 'win32' else 0o600
|
|
72
|
+
fd = os.open(str(file_path), os.O_CREAT | os.O_EXCL | os.O_WRONLY, mode)
|
|
71
73
|
try:
|
|
72
74
|
os.write(fd, new_uuid.encode('utf-8'))
|
|
73
75
|
finally:
|
|
@@ -91,7 +93,7 @@ def _get_or_create_uuid(uid_path: Path, logger, id_type: str) -> str:
|
|
|
91
93
|
UUID string
|
|
92
94
|
"""
|
|
93
95
|
uid_path.parent.mkdir(parents=True, exist_ok=True)
|
|
94
|
-
|
|
96
|
+
|
|
95
97
|
max_attempts = 3
|
|
96
98
|
for attempt in range(max_attempts):
|
|
97
99
|
if uid_path.exists():
|
|
@@ -111,7 +113,7 @@ def _get_or_create_uuid(uid_path: Path, logger, id_type: str) -> str:
|
|
|
111
113
|
new_uid = str(uuid.uuid4())
|
|
112
114
|
|
|
113
115
|
if _atomic_write_uuid(uid_path, new_uid):
|
|
114
|
-
logger.info(f"Generated {id_type}: {new_uid}")
|
|
116
|
+
logger.info(f"Generated {id_type}: {new_uid} at {uid_path}")
|
|
115
117
|
return new_uid
|
|
116
118
|
|
|
117
119
|
logger.debug(f"{id_type.title()} file created by another process, reading (attempt {attempt + 1}/{max_attempts})")
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
FastMCP middleware for security policy enforcement
|
|
3
3
|
Implements pre/post interception for all MCP operations
|
|
4
4
|
"""
|
|
5
|
+
import sys
|
|
5
6
|
import time
|
|
6
7
|
import urllib.parse
|
|
7
8
|
from datetime import datetime, timezone
|
|
@@ -115,7 +116,7 @@ class SecurityMiddleware(Middleware):
|
|
|
115
116
|
case "tools/list":
|
|
116
117
|
# Special handling for tools/list - call /init instead of normal inspection
|
|
117
118
|
return await self._handle_tools_list(context, call_next)
|
|
118
|
-
case "resources/list" | "resources/templates/list" | "prompts/list":
|
|
119
|
+
case "initialize" | "resources/list" | "resources/templates/list" | "prompts/list":
|
|
119
120
|
return await call_next_callback(context)
|
|
120
121
|
|
|
121
122
|
return await self._handle_operation(
|
|
@@ -481,6 +482,12 @@ class SecurityMiddleware(Middleware):
|
|
|
481
482
|
file_path_prefix = 'file://'
|
|
482
483
|
if uri.startswith(file_path_prefix):
|
|
483
484
|
path = urllib.parse.unquote(uri[len(file_path_prefix):])
|
|
485
|
+
|
|
486
|
+
# Windows fix: remove leading slash before drive letter
|
|
487
|
+
# file:///C:/path becomes /C:/path, should be C:/path
|
|
488
|
+
if sys.platform == 'win32' and len(path) >= 3 and path[0] == '/' and path[2] == ':':
|
|
489
|
+
path = path[1:]
|
|
490
|
+
|
|
484
491
|
try:
|
|
485
492
|
resolved_path = str(Path(path).resolve())
|
|
486
493
|
workspace_roots.append(resolved_path)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/mcpower_proxy.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mcpower_proxy-0.0.65 → mcpower_proxy-0.0.67}/src/modules/ui/xdialog/windows_custom_dialog.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|